2016-08-15 12:28:31 +02:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2016 Nordic Semiconductor ASA
|
|
|
|
* Copyright (c) 2016 Vinayak Kariappa Chettimada
|
|
|
|
*
|
2017-01-18 17:01:01 -08:00
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
2016-08-15 12:28:31 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _CTRL_H_
|
|
|
|
#define _CTRL_H_
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* Zephyr Kconfig defined
|
|
|
|
****************************************************************************/
|
|
|
|
#ifdef CONFIG_BLUETOOTH_MAX_CONN
|
|
|
|
#define RADIO_CONNECTION_CONTEXT_MAX CONFIG_BLUETOOTH_MAX_CONN
|
|
|
|
#else
|
|
|
|
#define RADIO_CONNECTION_CONTEXT_MAX 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef CONFIG_BLUETOOTH_CONTROLLER_RX_BUFFERS
|
|
|
|
#define RADIO_PACKET_COUNT_RX_MAX \
|
|
|
|
CONFIG_BLUETOOTH_CONTROLLER_RX_BUFFERS
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef CONFIG_BLUETOOTH_CONTROLLER_TX_BUFFERS
|
|
|
|
#define RADIO_PACKET_COUNT_TX_MAX \
|
|
|
|
CONFIG_BLUETOOTH_CONTROLLER_TX_BUFFERS
|
|
|
|
#endif
|
|
|
|
|
2016-12-30 06:24:42 +01:00
|
|
|
#ifdef CONFIG_BLUETOOTH_CONTROLLER_TX_BUFFER_SIZE
|
|
|
|
#define RADIO_PACKET_TX_DATA_SIZE \
|
|
|
|
CONFIG_BLUETOOTH_CONTROLLER_TX_BUFFER_SIZE
|
|
|
|
#endif
|
|
|
|
|
2017-04-29 06:50:52 +02:00
|
|
|
#define BIT64(n) (1ULL << (n))
|
|
|
|
|
2017-05-30 00:12:10 +02:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_LE_ENC)
|
|
|
|
#define RADIO_BLE_FEAT_BIT_ENC BIT64(BT_LE_FEAT_BIT_ENC)
|
|
|
|
#else /* !CONFIG_BLUETOOTH_CONTROLLER_LE_ENC */
|
|
|
|
#define RADIO_BLE_FEAT_BIT_ENC 0
|
|
|
|
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_LE_ENC */
|
|
|
|
|
2016-12-28 05:34:37 +01:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_LE_PING)
|
2017-04-29 06:50:52 +02:00
|
|
|
#define RADIO_BLE_FEAT_BIT_PING BIT64(BT_LE_FEAT_BIT_PING)
|
2016-12-28 05:34:37 +01:00
|
|
|
#else /* !CONFIG_BLUETOOTH_CONTROLLER_LE_PING */
|
2017-04-18 05:56:16 +02:00
|
|
|
#define RADIO_BLE_FEAT_BIT_PING 0
|
2016-12-28 05:34:37 +01:00
|
|
|
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_LE_PING */
|
|
|
|
|
2016-12-28 06:35:05 +01:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX)
|
2017-04-29 06:50:52 +02:00
|
|
|
#define RADIO_BLE_FEAT_BIT_DLE BIT64(BT_LE_FEAT_BIT_DLE)
|
2016-12-28 06:35:05 +01:00
|
|
|
#define RADIO_LL_LENGTH_OCTETS_RX_MAX \
|
|
|
|
CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX
|
|
|
|
#else
|
2017-04-18 05:56:16 +02:00
|
|
|
#define RADIO_BLE_FEAT_BIT_DLE 0
|
2016-12-28 06:35:05 +01:00
|
|
|
#define RADIO_LL_LENGTH_OCTETS_RX_MAX 27
|
|
|
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX */
|
|
|
|
|
2017-04-06 05:12:44 +02:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_CHAN_SEL_2)
|
2017-04-29 06:50:52 +02:00
|
|
|
#define RADIO_BLE_FEAT_BIT_CHAN_SEL_2 BIT64(BT_LE_FEAT_BIT_CHAN_SEL_ALGO_2)
|
2017-04-06 05:12:44 +02:00
|
|
|
#else /* !CONFIG_BLUETOOTH_CONTROLLER_CHAN_SEL_2 */
|
|
|
|
#define RADIO_BLE_FEAT_BIT_CHAN_SEL_2 0
|
|
|
|
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_CHAN_SEL_2 */
|
|
|
|
|
2017-04-29 06:50:52 +02:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_PHY_2M)
|
|
|
|
#define RADIO_BLE_FEAT_BIT_PHY_2M BIT64(BT_LE_FEAT_BIT_PHY_2M)
|
|
|
|
#else /* !CONFIG_BLUETOOTH_CONTROLLER_PHY_2M */
|
|
|
|
#define RADIO_BLE_FEAT_BIT_PHY_2M 0
|
|
|
|
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_PHY_2M */
|
|
|
|
|
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_PHY_CODED)
|
|
|
|
#define RADIO_BLE_FEAT_BIT_PHY_CODED BIT64(BT_LE_FEAT_BIT_PHY_CODED)
|
|
|
|
#else /* !CONFIG_BLUETOOTH_CONTROLLER_PHY_CODED */
|
|
|
|
#define RADIO_BLE_FEAT_BIT_PHY_CODED 0
|
|
|
|
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_PHY_CODED */
|
|
|
|
|
2016-08-15 12:28:31 +02:00
|
|
|
/*****************************************************************************
|
|
|
|
* Timer Resources (Controller defined)
|
|
|
|
****************************************************************************/
|
|
|
|
#define RADIO_TICKER_ID_EVENT 0
|
|
|
|
#define RADIO_TICKER_ID_MARKER_0 1
|
|
|
|
#define RADIO_TICKER_ID_PRE_EMPT 2
|
|
|
|
#define RADIO_TICKER_ID_ADV_STOP 3
|
2017-06-07 13:04:10 +02:00
|
|
|
#define RADIO_TICKER_ID_SCAN_STOP 4
|
2016-08-15 12:28:31 +02:00
|
|
|
#define RADIO_TICKER_ID_ADV 5
|
2017-06-07 13:04:10 +02:00
|
|
|
#define RADIO_TICKER_ID_SCAN 6
|
2016-08-15 12:28:31 +02:00
|
|
|
#define RADIO_TICKER_ID_FIRST_CONNECTION 7
|
|
|
|
|
|
|
|
#define RADIO_TICKER_INSTANCE_ID_RADIO 0
|
|
|
|
#define RADIO_TICKER_INSTANCE_ID_APP 1
|
|
|
|
|
|
|
|
#define RADIO_TICKER_USERS 3
|
|
|
|
|
2017-03-30 10:12:56 +02:00
|
|
|
#define RADIO_TICKER_USER_ID_WORKER MAYFLY_CALL_ID_0
|
|
|
|
#define RADIO_TICKER_USER_ID_JOB MAYFLY_CALL_ID_1
|
|
|
|
#define RADIO_TICKER_USER_ID_APP MAYFLY_CALL_ID_PROGRAM
|
2016-12-21 06:21:13 +01:00
|
|
|
|
2016-08-15 12:28:31 +02:00
|
|
|
#define RADIO_TICKER_USER_WORKER_OPS (7 + 1)
|
|
|
|
#define RADIO_TICKER_USER_JOB_OPS (2 + 1)
|
|
|
|
#define RADIO_TICKER_USER_APP_OPS (1 + 1)
|
|
|
|
#define RADIO_TICKER_USER_OPS (RADIO_TICKER_USER_WORKER_OPS \
|
|
|
|
+ RADIO_TICKER_USER_JOB_OPS \
|
|
|
|
+ RADIO_TICKER_USER_APP_OPS \
|
|
|
|
)
|
|
|
|
|
|
|
|
#define RADIO_TICKER_NODES (RADIO_TICKER_ID_FIRST_CONNECTION \
|
|
|
|
+ RADIO_CONNECTION_CONTEXT_MAX \
|
|
|
|
)
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* Controller Interface Defines
|
|
|
|
****************************************************************************/
|
2017-03-09 22:54:02 +01:00
|
|
|
#define RADIO_BLE_VERSION_NUMBER BT_HCI_VERSION_5_0
|
2017-03-10 12:16:58 +01:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_COMPANY_ID)
|
|
|
|
#define RADIO_BLE_COMPANY_ID CONFIG_BLUETOOTH_CONTROLLER_COMPANY_ID
|
|
|
|
#else
|
|
|
|
#define RADIO_BLE_COMPANY_ID 0xFFFF
|
|
|
|
#endif
|
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_SUBVERSION_NUMBER)
|
|
|
|
#define RADIO_BLE_SUB_VERSION_NUMBER \
|
|
|
|
CONFIG_BLUETOOTH_CONTROLLER_SUBVERSION_NUMBER
|
|
|
|
#else
|
|
|
|
#define RADIO_BLE_SUB_VERSION_NUMBER 0xFFFF
|
|
|
|
#endif
|
2016-11-16 12:52:48 +01:00
|
|
|
|
2017-04-18 05:56:16 +02:00
|
|
|
#define RADIO_BLE_FEAT_BIT_MASK 0x1FFFF
|
|
|
|
#define RADIO_BLE_FEAT_BIT_MASK_VALID 0x1CF2F
|
2017-05-30 00:12:10 +02:00
|
|
|
#define RADIO_BLE_FEAT (RADIO_BLE_FEAT_BIT_ENC | \
|
2016-11-22 21:17:46 +01:00
|
|
|
BIT(BT_LE_FEAT_BIT_CONN_PARAM_REQ) | \
|
|
|
|
BIT(BT_LE_FEAT_BIT_EXT_REJ_IND) | \
|
|
|
|
BIT(BT_LE_FEAT_BIT_SLAVE_FEAT_REQ) | \
|
2017-04-18 05:56:16 +02:00
|
|
|
RADIO_BLE_FEAT_BIT_PING | \
|
2017-04-06 05:12:44 +02:00
|
|
|
RADIO_BLE_FEAT_BIT_DLE | \
|
2017-04-29 06:50:52 +02:00
|
|
|
RADIO_BLE_FEAT_BIT_PHY_2M | \
|
|
|
|
RADIO_BLE_FEAT_BIT_PHY_CODED | \
|
2017-04-06 05:12:44 +02:00
|
|
|
RADIO_BLE_FEAT_BIT_CHAN_SEL_2)
|
2016-08-15 12:28:31 +02:00
|
|
|
|
2017-03-30 10:49:34 +02:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_WORKER_PRIO)
|
|
|
|
#define RADIO_TICKER_USER_ID_WORKER_PRIO CONFIG_BLUETOOTH_CONTROLLER_WORKER_PRIO
|
|
|
|
#else
|
|
|
|
#define RADIO_TICKER_USER_ID_WORKER_PRIO 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_JOB_PRIO)
|
|
|
|
#define RADIO_TICKER_USER_ID_JOB_PRIO CONFIG_BLUETOOTH_CONTROLLER_JOB_PRIO
|
|
|
|
#else
|
|
|
|
#define RADIO_TICKER_USER_ID_JOB_PRIO 0
|
|
|
|
#endif
|
|
|
|
|
2016-08-15 12:28:31 +02:00
|
|
|
/*****************************************************************************
|
|
|
|
* Controller Reference Defines (compile time override-able)
|
|
|
|
****************************************************************************/
|
|
|
|
/* Minimum LL Payload support (Dont change). */
|
|
|
|
#define RADIO_LL_LENGTH_OCTETS_RX_MIN 27
|
|
|
|
#define RADIO_LL_LENGTH_TIME_RX_MIN (((RADIO_LL_LENGTH_OCTETS_RX_MIN) \
|
|
|
|
+ 14) * 8 \
|
|
|
|
)
|
|
|
|
|
|
|
|
/* Maximum LL Payload support (27 to 251). */
|
|
|
|
#ifndef RADIO_LL_LENGTH_OCTETS_RX_MAX
|
|
|
|
#define RADIO_LL_LENGTH_OCTETS_RX_MAX 251
|
|
|
|
#endif
|
|
|
|
#define RADIO_LL_LENGTH_TIME_RX_MAX (((RADIO_LL_LENGTH_OCTETS_RX_MAX) \
|
|
|
|
+ 14) * 8 \
|
|
|
|
)
|
|
|
|
/* Implementation default L2CAP MTU */
|
|
|
|
#ifndef RADIO_L2CAP_MTU_MAX
|
|
|
|
#define RADIO_L2CAP_MTU_MAX (RADIO_LL_LENGTH_OCTETS_RX_MAX - 4)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Maximise L2CAP MTU to LL data PDU size */
|
|
|
|
#if (RADIO_L2CAP_MTU_MAX < (RADIO_LL_LENGTH_OCTETS_RX_MAX - 4))
|
|
|
|
#undef RADIO_L2CAP_MTU_MAX
|
|
|
|
#define RADIO_L2CAP_MTU_MAX (RADIO_LL_LENGTH_OCTETS_RX_MAX - 4)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Maximum LL PDU Receive pool size. */
|
|
|
|
#ifndef RADIO_PACKET_COUNT_RX_MAX
|
|
|
|
#define RADIO_PACKET_COUNT_RX ((RADIO_L2CAP_MTU_MAX + \
|
|
|
|
RADIO_LL_LENGTH_OCTETS_RX_MAX \
|
|
|
|
+ 3) \
|
|
|
|
/ \
|
|
|
|
RADIO_LL_LENGTH_OCTETS_RX_MAX \
|
|
|
|
)
|
|
|
|
#define RADIO_PACKET_COUNT_RX_MAX (RADIO_PACKET_COUNT_RX + \
|
|
|
|
((RADIO_CONNECTION_CONTEXT_MAX - 1) * \
|
|
|
|
(RADIO_PACKET_COUNT_RX - 1)) \
|
|
|
|
)
|
|
|
|
#endif /* RADIO_PACKET_COUNT_RX_MAX */
|
|
|
|
|
|
|
|
/* Maximum LL PDU Transmit pool size and application tx count. */
|
|
|
|
#ifndef RADIO_PACKET_COUNT_TX_MAX
|
|
|
|
#define RADIO_PACKET_COUNT_APP_TX_MAX (RADIO_CONNECTION_CONTEXT_MAX)
|
|
|
|
#define RADIO_PACKET_COUNT_TX_MAX (RADIO_PACKET_COUNT_RX_MAX + \
|
|
|
|
RADIO_PACKET_COUNT_APP_TX_MAX \
|
|
|
|
)
|
|
|
|
#else
|
|
|
|
#define RADIO_PACKET_COUNT_APP_TX_MAX (RADIO_PACKET_COUNT_TX_MAX)
|
|
|
|
#endif
|
|
|
|
|
2016-12-30 06:24:42 +01:00
|
|
|
/* Tx Data Size */
|
|
|
|
#if !defined(RADIO_PACKET_TX_DATA_SIZE) || \
|
|
|
|
(RADIO_PACKET_TX_DATA_SIZE < RADIO_LL_LENGTH_OCTETS_RX_MIN)
|
|
|
|
#define RADIO_PACKET_TX_DATA_SIZE RADIO_LL_LENGTH_OCTETS_RX_MIN
|
|
|
|
#endif
|
|
|
|
|
2016-08-15 12:28:31 +02:00
|
|
|
/*****************************************************************************
|
|
|
|
* Controller Interface Structures
|
|
|
|
****************************************************************************/
|
|
|
|
struct radio_adv_data {
|
2017-04-20 12:00:29 -05:00
|
|
|
u8_t data[DOUBLE_BUFFER_SIZE][PDU_AC_SIZE_MAX];
|
|
|
|
u8_t first;
|
|
|
|
u8_t last;
|
2016-08-15 12:28:31 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
struct radio_pdu_node_tx {
|
|
|
|
void *next;
|
2017-04-20 12:00:29 -05:00
|
|
|
u8_t pdu_data[1];
|
2016-08-15 12:28:31 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
enum radio_pdu_node_rx_type {
|
|
|
|
NODE_RX_TYPE_NONE,
|
|
|
|
NODE_RX_TYPE_DC_PDU,
|
|
|
|
NODE_RX_TYPE_REPORT,
|
2017-04-27 11:29:35 +02:00
|
|
|
|
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_SCAN_REQ_NOTIFY)
|
|
|
|
NODE_RX_TYPE_SCAN_REQ,
|
|
|
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_SCAN_REQ_NOTIFY */
|
|
|
|
|
2016-08-15 12:28:31 +02:00
|
|
|
NODE_RX_TYPE_CONNECTION,
|
|
|
|
NODE_RX_TYPE_TERMINATE,
|
|
|
|
NODE_RX_TYPE_CONN_UPDATE,
|
|
|
|
NODE_RX_TYPE_ENC_REFRESH,
|
2016-12-29 17:22:25 +01:00
|
|
|
|
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_LE_PING)
|
2016-08-15 12:28:31 +02:00
|
|
|
NODE_RX_TYPE_APTO,
|
2016-12-29 17:22:25 +01:00
|
|
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_LE_PING */
|
|
|
|
|
2017-04-06 05:12:44 +02:00
|
|
|
NODE_RX_TYPE_CHAN_SEL_ALGO,
|
|
|
|
|
2017-04-29 06:50:52 +02:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_PHY)
|
|
|
|
NODE_RX_TYPE_PHY_UPDATE,
|
|
|
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_PHY */
|
|
|
|
|
2016-12-29 17:07:54 +01:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_CONN_RSSI)
|
2016-08-15 12:28:31 +02:00
|
|
|
NODE_RX_TYPE_RSSI,
|
2016-12-29 17:07:54 +01:00
|
|
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_CONN_RSSI */
|
2016-12-29 17:22:25 +01:00
|
|
|
|
2016-12-27 19:23:32 +01:00
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_PROFILE_ISR)
|
|
|
|
NODE_RX_TYPE_PROFILE,
|
|
|
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_PROFILE_ISR */
|
2017-03-10 11:53:38 +01:00
|
|
|
|
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_ADV_INDICATION)
|
|
|
|
NODE_RX_TYPE_ADV_INDICATION,
|
|
|
|
#endif /* CONFIG_BLUETOOTH_CONTROLLER_ADV_INDICATION */
|
2016-08-15 12:28:31 +02:00
|
|
|
};
|
|
|
|
|
2017-04-06 05:12:44 +02:00
|
|
|
struct radio_le_conn_cmplt {
|
2017-04-21 13:18:52 +02:00
|
|
|
u8_t status;
|
|
|
|
u8_t role;
|
|
|
|
u8_t peer_addr_type;
|
|
|
|
u8_t peer_addr[BDADDR_SIZE];
|
|
|
|
u8_t own_addr_type;
|
|
|
|
u8_t own_addr[BDADDR_SIZE];
|
|
|
|
u8_t peer_irk_index;
|
2017-04-20 12:00:29 -05:00
|
|
|
u16_t interval;
|
|
|
|
u16_t latency;
|
|
|
|
u16_t timeout;
|
2017-04-21 13:18:52 +02:00
|
|
|
u8_t mca;
|
2017-04-06 05:12:44 +02:00
|
|
|
} __packed;
|
|
|
|
|
|
|
|
struct radio_le_conn_update_cmplt {
|
2017-04-21 13:18:52 +02:00
|
|
|
u8_t status;
|
2017-04-20 12:00:29 -05:00
|
|
|
u16_t interval;
|
|
|
|
u16_t latency;
|
|
|
|
u16_t timeout;
|
2017-04-06 05:12:44 +02:00
|
|
|
} __packed;
|
|
|
|
|
|
|
|
struct radio_le_chan_sel_algo {
|
2017-04-20 12:00:29 -05:00
|
|
|
u8_t chan_sel_algo;
|
2017-04-06 05:12:44 +02:00
|
|
|
} __packed;
|
|
|
|
|
2017-04-29 06:50:52 +02:00
|
|
|
struct radio_le_phy_upd_cmplt {
|
|
|
|
u8_t status;
|
|
|
|
u8_t tx;
|
|
|
|
u8_t rx;
|
|
|
|
} __packed;
|
|
|
|
|
2016-08-15 12:28:31 +02:00
|
|
|
struct radio_pdu_node_rx_hdr {
|
|
|
|
union {
|
2017-04-07 09:53:02 +02:00
|
|
|
sys_snode_t node; /* used by slist */
|
2017-01-02 18:59:22 +01:00
|
|
|
void *next; /* used also by k_fifo once pulled */
|
2016-08-15 12:28:31 +02:00
|
|
|
void *link;
|
2017-04-20 12:00:29 -05:00
|
|
|
u8_t packet_release_last;
|
2016-08-15 12:28:31 +02:00
|
|
|
} onion;
|
2017-01-02 18:59:22 +01:00
|
|
|
|
|
|
|
enum radio_pdu_node_rx_type type;
|
2017-04-20 12:00:29 -05:00
|
|
|
u16_t handle;
|
2016-08-15 12:28:31 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
struct radio_pdu_node_rx {
|
|
|
|
struct radio_pdu_node_rx_hdr hdr;
|
2017-04-21 13:18:52 +02:00
|
|
|
u8_t pdu_data[1];
|
2016-08-15 12:28:31 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* Controller Interface Functions
|
|
|
|
****************************************************************************/
|
2017-03-13 15:32:37 +01:00
|
|
|
/* Downstream */
|
2017-04-20 12:00:29 -05:00
|
|
|
u32_t radio_init(void *hf_clock, u8_t sca, u8_t connection_count_max,
|
2017-04-21 13:18:52 +02:00
|
|
|
u8_t rx_count_max, u8_t tx_count_max,
|
|
|
|
u16_t packet_data_octets_max,
|
|
|
|
u16_t packet_tx_data_size, u8_t *mem_radio,
|
|
|
|
u16_t mem_size);
|
2017-04-20 12:00:29 -05:00
|
|
|
void radio_ticks_active_to_start_set(u32_t ticks_active_to_start);
|
2017-06-07 13:58:27 +02:00
|
|
|
/* Downstream - Advertiser */
|
2016-08-15 12:28:31 +02:00
|
|
|
struct radio_adv_data *radio_adv_data_get(void);
|
|
|
|
struct radio_adv_data *radio_scan_data_get(void);
|
2017-05-30 22:41:20 +02:00
|
|
|
|
|
|
|
#if defined(CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT)
|
|
|
|
u32_t radio_adv_enable(u8_t phy_p, u16_t interval, u8_t chl_map,
|
2017-04-21 13:18:52 +02:00
|
|
|
u8_t filter_policy);
|
2017-05-30 22:41:20 +02:00
|
|
|
#else /* !CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT */
|
|
|
|
u32_t radio_adv_enable(u16_t interval, u8_t chl_map, u8_t filter_policy);
|
|
|
|
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_ADV_EXT */
|
|
|
|
|
2017-04-20 12:00:29 -05:00
|
|
|
u32_t radio_adv_disable(void);
|
2017-06-07 13:58:27 +02:00
|
|
|
u32_t radio_adv_is_enabled(void);
|
2017-06-13 12:05:54 +02:00
|
|
|
u32_t radio_adv_filter_pol_get(void);
|
2017-06-07 13:58:27 +02:00
|
|
|
/* Downstream - Scanner */
|
2017-06-07 20:50:35 +02:00
|
|
|
u32_t radio_scan_enable(u8_t type, u8_t init_addr_type,
|
2017-04-21 13:18:52 +02:00
|
|
|
u8_t *init_addr, u16_t interval,
|
|
|
|
u16_t window, u8_t filter_policy);
|
2017-04-20 12:00:29 -05:00
|
|
|
u32_t radio_scan_disable(void);
|
2017-06-07 13:58:27 +02:00
|
|
|
u32_t radio_scan_is_enabled(void);
|
2017-06-13 12:05:54 +02:00
|
|
|
u32_t radio_scan_filter_pol_get(void);
|
2017-04-20 12:00:29 -05:00
|
|
|
|
|
|
|
u32_t radio_connect_enable(u8_t adv_addr_type, u8_t *adv_addr,
|
2017-04-21 13:18:52 +02:00
|
|
|
u16_t interval, u16_t latency,
|
|
|
|
u16_t timeout);
|
2017-03-13 15:32:37 +01:00
|
|
|
/* Upstream */
|
2017-04-20 12:00:29 -05:00
|
|
|
u8_t radio_rx_get(struct radio_pdu_node_rx **radio_pdu_node_rx,
|
2017-04-21 13:18:52 +02:00
|
|
|
u16_t *handle);
|
2016-08-15 12:28:31 +02:00
|
|
|
void radio_rx_dequeue(void);
|
|
|
|
void radio_rx_mem_release(struct radio_pdu_node_rx **radio_pdu_node_rx);
|
2017-04-20 12:00:29 -05:00
|
|
|
u8_t radio_rx_fc_set(u16_t handle, u8_t fc);
|
|
|
|
u8_t radio_rx_fc_get(u16_t *handle);
|
2016-08-15 12:28:31 +02:00
|
|
|
struct radio_pdu_node_tx *radio_tx_mem_acquire(void);
|
|
|
|
void radio_tx_mem_release(struct radio_pdu_node_tx *pdu_data_node_tx);
|
2017-04-20 12:00:29 -05:00
|
|
|
u32_t radio_tx_mem_enqueue(u16_t handle,
|
2017-04-21 13:18:52 +02:00
|
|
|
struct radio_pdu_node_tx *pdu_data_node_tx);
|
2017-03-13 15:32:37 +01:00
|
|
|
/* Callbacks */
|
2017-04-20 12:00:29 -05:00
|
|
|
extern void radio_active_callback(u8_t active);
|
2016-08-15 12:28:31 +02:00
|
|
|
extern void radio_event_callback(void);
|
|
|
|
|
|
|
|
#endif
|