Bluetooth: Controller: Kconfig Data Length Update feature
Add Kconfig configuration to conditionally enable Data Length Update procedure support in the Controller. This will save CPU time, flash and RAM, if this feature is not desired. Change-id: I4515c0c7cf9aeb333a289397ae3c9bac04a08e4e Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
This commit is contained in:
parent
4fb2947b61
commit
08fcc44b8a
6 changed files with 126 additions and 27 deletions
|
@ -2,14 +2,6 @@ if BLUETOOTH_CONTROLLER
|
|||
|
||||
comment "BLE Controller configuration"
|
||||
|
||||
config BLUETOOTH_CONTROLLER_DATA_LENGTH
|
||||
prompt "Maximum data length supported"
|
||||
int
|
||||
default 27
|
||||
range 27 251
|
||||
help
|
||||
Set the maximum data length of PDU supported in the stack.
|
||||
|
||||
config BLUETOOTH_CONTROLLER_RX_BUFFERS
|
||||
prompt "Number of Rx buffers"
|
||||
int
|
||||
|
@ -46,6 +38,22 @@ config BLUETOOTH_CONTROLLER_LE_PING
|
|||
help
|
||||
Enable support for Bluetooth v4.1 LE Ping feature in the Controller.
|
||||
|
||||
config BLUETOOTH_CONTROLLER_DATA_LENGTH
|
||||
bool "Data Length Update"
|
||||
default y
|
||||
help
|
||||
Enable support for Bluetooth v4.2 LE Data Length Update procedure in
|
||||
the Controller.
|
||||
|
||||
config BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX
|
||||
prompt "Maximum data length supported"
|
||||
depends on BLUETOOTH_CONTROLLER_DATA_LENGTH
|
||||
int
|
||||
default 27
|
||||
range 27 251
|
||||
help
|
||||
Set the maximum data length of PDU supported in the Controller.
|
||||
|
||||
comment "BLE Controller debug configuration"
|
||||
|
||||
config BLUETOOTH_CONTROLLER_ASSERT_HANDLER
|
||||
|
|
|
@ -212,18 +212,25 @@ static void read_supported_commands(struct net_buf *buf, struct net_buf *evt)
|
|||
* LE Read Supported States.
|
||||
*/
|
||||
rp->commands[28] = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3);
|
||||
/* LE Remote Conn Param Req and Neg Reply, LE Set Data Length,
|
||||
* and LE Read Suggested Data Length.
|
||||
*/
|
||||
rp->commands[33] = (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7);
|
||||
/* LE Remote Conn Param Req and Neg Reply */
|
||||
rp->commands[33] = (1 << 4) | (1 << 5);
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
/* LE Set Data Length, and LE Read Suggested Data Length. */
|
||||
rp->commands[33] |= (1 << 6) | (1 << 7);
|
||||
/* LE Write Suggested Data Length. */
|
||||
rp->commands[34] = (1 << 0);
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_HCI_RAW) && defined(CONFIG_BLUETOOTH_TINYCRYPT_ECC)
|
||||
/* LE Read Local P256 Public Key and LE Generate DH Key*/
|
||||
rp->commands[34] |= (1 << 1) | (1 << 2);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
/* LE Read Maximum Data Length. */
|
||||
rp->commands[35] = (1 << 3);
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
}
|
||||
|
||||
static void read_local_features(struct net_buf *buf, struct net_buf *evt)
|
||||
|
@ -660,6 +667,7 @@ static void le_conn_param_req_neg_reply(struct net_buf *buf,
|
|||
rp->handle = cmd->handle;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
static void le_set_data_len(struct net_buf *buf, struct net_buf *evt)
|
||||
{
|
||||
struct bt_hci_cp_le_set_data_len *cmd = (void *)buf->data;
|
||||
|
@ -710,6 +718,7 @@ static void le_read_max_data_len(struct net_buf *buf, struct net_buf *evt)
|
|||
&rp->max_rx_octets, &rp->max_rx_time);
|
||||
rp->status = 0x00;
|
||||
}
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
static int controller_cmd_handle(uint8_t ocf, struct net_buf *cmd,
|
||||
struct net_buf *evt)
|
||||
|
@ -827,6 +836,7 @@ static int controller_cmd_handle(uint8_t ocf, struct net_buf *cmd,
|
|||
le_conn_param_req_neg_reply(cmd, evt);
|
||||
break;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
case BT_OCF(BT_HCI_OP_LE_SET_DATA_LEN):
|
||||
le_set_data_len(cmd, evt);
|
||||
break;
|
||||
|
@ -842,6 +852,7 @@ static int controller_cmd_handle(uint8_t ocf, struct net_buf *cmd,
|
|||
case BT_OCF(BT_HCI_OP_LE_READ_MAX_DATA_LEN):
|
||||
le_read_max_data_len(cmd, evt);
|
||||
break;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
|
@ -243,7 +243,11 @@ static void tx_packet_set(struct connection *conn,
|
|||
static void prepare_pdu_data_tx(struct connection *conn,
|
||||
struct pdu_data **pdu_data_tx);
|
||||
static void packet_rx_allocate(uint8_t max);
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
static uint8_t packet_rx_acquired_count_get(void);
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
static struct radio_pdu_node_rx *packet_rx_reserve_get(uint8_t count);
|
||||
static void packet_rx_enqueue(void);
|
||||
static void packet_tx_enqueue(uint8_t max);
|
||||
|
@ -277,9 +281,13 @@ static void ping_resp_send(struct connection *conn);
|
|||
static void reject_ind_ext_send(struct connection *conn,
|
||||
uint8_t reject_opcode,
|
||||
uint8_t error_code);
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
static void length_resp_send(struct connection *conn,
|
||||
uint16_t eff_rx_octets,
|
||||
uint16_t eff_tx_octets);
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
static uint32_t role_disable(uint8_t ticker_id_primary,
|
||||
uint8_t ticker_id_stop);
|
||||
static void rx_fc_lock(uint16_t handle);
|
||||
|
@ -484,9 +492,11 @@ static void common_init(void)
|
|||
_radio.data_channel_map[4] = 0x1F;
|
||||
_radio.data_channel_count = 37;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
/* Initialize the DLE defaults */
|
||||
_radio.default_tx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
_radio.default_tx_time = RADIO_LL_LENGTH_TIME_RX_MIN;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
/* allocate the rx queue */
|
||||
packet_rx_allocate(0xFF);
|
||||
|
@ -1134,6 +1144,7 @@ static inline uint8_t isr_rx_conn_pkt_ack(struct pdu_data *pdu_data_tx,
|
|||
_radio.conn_curr->procedure_expire = 0;
|
||||
break;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
case PDU_DATA_LLCTRL_TYPE_LENGTH_REQ:
|
||||
if ((_radio.conn_curr->llcp_length.req !=
|
||||
_radio.conn_curr->llcp_length.ack) &&
|
||||
|
@ -1147,6 +1158,7 @@ static inline uint8_t isr_rx_conn_pkt_ack(struct pdu_data *pdu_data_tx,
|
|||
LLCP_LENGTH_STATE_RSP_WAIT;
|
||||
}
|
||||
break;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
default:
|
||||
/* Do nothing for other ctrl packet ack */
|
||||
|
@ -1249,6 +1261,7 @@ isr_rx_conn_pkt_ctrl_rej(struct radio_pdu_node_rx *radio_pdu_node_rx,
|
|||
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
static inline uint8_t isr_rx_conn_pkt_ctrl_dle(struct pdu_data *pdu_data_rx,
|
||||
uint8_t *rx_enqueue)
|
||||
{
|
||||
|
@ -1367,6 +1380,7 @@ static inline uint8_t isr_rx_conn_pkt_ctrl_dle(struct pdu_data *pdu_data_rx,
|
|||
|
||||
return nack;
|
||||
}
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
static inline uint8_t
|
||||
isr_rx_conn_pkt_ctrl(struct radio_pdu_node_rx *radio_pdu_node_rx,
|
||||
|
@ -1743,6 +1757,8 @@ isr_rx_conn_pkt_ctrl(struct radio_pdu_node_rx *radio_pdu_node_rx,
|
|||
LL_ASSERT(0);
|
||||
break;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
} else if (_radio.conn_curr->llcp_length.req !=
|
||||
_radio.conn_curr->llcp_length.ack) {
|
||||
/* Procedure complete */
|
||||
|
@ -1757,6 +1773,8 @@ isr_rx_conn_pkt_ctrl(struct radio_pdu_node_rx *radio_pdu_node_rx,
|
|||
* host
|
||||
*/
|
||||
*rx_enqueue = 1;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
} else {
|
||||
struct pdu_data_llctrl *llctrl;
|
||||
|
||||
|
@ -1783,10 +1801,12 @@ isr_rx_conn_pkt_ctrl(struct radio_pdu_node_rx *radio_pdu_node_rx,
|
|||
}
|
||||
break;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
case PDU_DATA_LLCTRL_TYPE_LENGTH_RSP:
|
||||
case PDU_DATA_LLCTRL_TYPE_LENGTH_REQ:
|
||||
nack = isr_rx_conn_pkt_ctrl_dle(pdu_data_rx, rx_enqueue);
|
||||
break;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
default:
|
||||
unknown_rsp_send(_radio.conn_curr,
|
||||
|
@ -5069,6 +5089,7 @@ static inline void event_ping_prep(struct connection *conn)
|
|||
}
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_LE_PING */
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
static inline void event_len_prep(struct connection *conn)
|
||||
{
|
||||
switch (conn->llcp_length.state) {
|
||||
|
@ -5275,7 +5296,7 @@ static inline void event_len_prep(struct connection *conn)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
static void event_connection_prepare(uint32_t ticks_at_expire,
|
||||
uint32_t remainder, uint16_t lazy,
|
||||
|
@ -5381,6 +5402,7 @@ static void event_connection_prepare(uint32_t ticks_at_expire,
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
/* check if procedure is requested */
|
||||
if (conn->llcp_length.ack != conn->llcp_length.req) {
|
||||
/* Stop previous event, to avoid Radio DMA corrupting the
|
||||
|
@ -5391,6 +5413,7 @@ static void event_connection_prepare(uint32_t ticks_at_expire,
|
|||
/* handle DLU state machine */
|
||||
event_len_prep(conn);
|
||||
}
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
/* Setup XTAL startup and radio active events */
|
||||
event_common_prepare(ticks_at_expire, remainder,
|
||||
|
@ -5671,15 +5694,22 @@ static void event_master(uint32_t ticks_at_expire, uint32_t remainder,
|
|||
static void rx_packet_set(struct connection *conn, struct pdu_data *pdu_data_rx)
|
||||
{
|
||||
uint8_t phy;
|
||||
uint16_t max_rx_octets;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
max_rx_octets = conn->max_rx_octets;
|
||||
#else /* !CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
max_rx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
phy = RADIO_PHY_CONN;
|
||||
if (conn->enc_rx) {
|
||||
radio_pkt_configure(phy, 8, (conn->max_rx_octets + 4));
|
||||
radio_pkt_configure(phy, 8, (max_rx_octets + 4));
|
||||
|
||||
radio_pkt_rx_set(radio_ccm_rx_pkt_set(&conn->ccm_rx,
|
||||
pdu_data_rx));
|
||||
} else {
|
||||
radio_pkt_configure(phy, 8, conn->max_rx_octets);
|
||||
radio_pkt_configure(phy, 8, max_rx_octets);
|
||||
|
||||
radio_pkt_rx_set(pdu_data_rx);
|
||||
}
|
||||
|
@ -5689,15 +5719,22 @@ static void tx_packet_set(struct connection *conn,
|
|||
struct pdu_data *pdu_data_tx)
|
||||
{
|
||||
uint8_t phy;
|
||||
uint16_t max_tx_octets;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
max_tx_octets = conn->max_tx_octets;
|
||||
#else /* !CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
max_tx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
phy = RADIO_PHY_CONN;
|
||||
if (conn->enc_tx) {
|
||||
radio_pkt_configure(phy, 8, (conn->max_tx_octets + 4));
|
||||
radio_pkt_configure(phy, 8, (max_tx_octets + 4));
|
||||
|
||||
radio_pkt_tx_set(radio_ccm_tx_pkt_set(&conn->ccm_tx,
|
||||
pdu_data_tx));
|
||||
} else {
|
||||
radio_pkt_configure(phy, 8, conn->max_tx_octets);
|
||||
radio_pkt_configure(phy, 8, max_tx_octets);
|
||||
|
||||
radio_pkt_tx_set(pdu_data_tx);
|
||||
}
|
||||
|
@ -5748,6 +5785,8 @@ static void prepare_pdu_data_tx(struct connection *conn,
|
|||
(_pdu_data_tx->payload.llctrl.opcode != PDU_DATA_LLCTRL_TYPE_REJECT_IND_EXT))))))) {
|
||||
_pdu_data_tx = empty_tx_enqueue(conn);
|
||||
} else {
|
||||
uint16_t max_tx_octets;
|
||||
|
||||
_pdu_data_tx =
|
||||
(struct pdu_data *)(conn->pkt_tx_head->pdu_data +
|
||||
conn->packet_tx_head_offset);
|
||||
|
@ -5764,8 +5803,14 @@ static void prepare_pdu_data_tx(struct connection *conn,
|
|||
conn->packet_tx_head_offset;
|
||||
_pdu_data_tx->md = 0;
|
||||
|
||||
if (_pdu_data_tx->len > conn->max_tx_octets) {
|
||||
_pdu_data_tx->len = conn->max_tx_octets;
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
max_tx_octets = conn->max_tx_octets;
|
||||
#else /* !CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
max_tx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
if (_pdu_data_tx->len > max_tx_octets) {
|
||||
_pdu_data_tx->len = max_tx_octets;
|
||||
_pdu_data_tx->md = 1;
|
||||
}
|
||||
|
||||
|
@ -5822,6 +5867,7 @@ static void packet_rx_allocate(uint8_t max)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
static uint8_t packet_rx_acquired_count_get(void)
|
||||
{
|
||||
if (_radio.packet_rx_acquire >=
|
||||
|
@ -5834,6 +5880,7 @@ static uint8_t packet_rx_acquired_count_get(void)
|
|||
_radio.packet_rx_acquire);
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
static struct radio_pdu_node_rx *packet_rx_reserve_get(uint8_t count)
|
||||
{
|
||||
|
@ -6496,6 +6543,7 @@ static void reject_ind_ext_send(struct connection *conn,
|
|||
ctrl_tx_enqueue(conn, node_tx);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
static void length_resp_send(struct connection *conn, uint16_t eff_rx_octets,
|
||||
uint16_t eff_tx_octets)
|
||||
{
|
||||
|
@ -6522,6 +6570,7 @@ static void length_resp_send(struct connection *conn, uint16_t eff_rx_octets,
|
|||
|
||||
ctrl_tx_enqueue(conn, node_tx);
|
||||
}
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
void radio_ticks_active_to_start_set(uint32_t ticks_active_to_start)
|
||||
{
|
||||
|
@ -6857,9 +6906,13 @@ uint32_t radio_adv_enable(uint16_t interval, uint8_t chl_map,
|
|||
conn->event_counter = 0;
|
||||
conn->latency_prepare = 0;
|
||||
conn->latency_event = 0;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
conn->default_tx_octets = _radio.default_tx_octets;
|
||||
conn->max_tx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
conn->max_rx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
conn->role.slave.role = 1;
|
||||
conn->role.slave.latency_cancel = 0;
|
||||
conn->role.slave.window_widening_prepare_us = 0;
|
||||
|
@ -6881,8 +6934,12 @@ uint32_t radio_adv_enable(uint16_t interval, uint8_t chl_map,
|
|||
conn->llcp_terminate.ack = 0;
|
||||
conn->llcp_terminate.reason_peer = 0;
|
||||
conn->llcp_terminate.radio_pdu_node_rx.hdr.onion.link = link;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
conn->llcp_length.req = 0;
|
||||
conn->llcp_length.ack = 0;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
conn->sn = 0;
|
||||
conn->nesn = 0;
|
||||
conn->pause_rx = 0;
|
||||
|
@ -7182,9 +7239,13 @@ uint32_t radio_connect_enable(uint8_t adv_addr_type, uint8_t *adv_addr,
|
|||
conn->latency_prepare = 0;
|
||||
conn->latency_event = 0;
|
||||
conn->latency = _radio.observer.conn_latency;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
conn->default_tx_octets = _radio.default_tx_octets;
|
||||
conn->max_tx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
conn->max_rx_octets = RADIO_LL_LENGTH_OCTETS_RX_MIN;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
conn->role.master.role = 0;
|
||||
conn->role.master.connect_expire = 6;
|
||||
conn_interval_us =
|
||||
|
@ -7214,8 +7275,12 @@ uint32_t radio_connect_enable(uint8_t adv_addr_type, uint8_t *adv_addr,
|
|||
conn->llcp_terminate.ack = 0;
|
||||
conn->llcp_terminate.reason_peer = 0;
|
||||
conn->llcp_terminate.radio_pdu_node_rx.hdr.onion.link = link;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
conn->llcp_length.req = 0;
|
||||
conn->llcp_length.ack = 0;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
conn->sn = 0;
|
||||
conn->nesn = 0;
|
||||
conn->pause_rx = 0;
|
||||
|
@ -7507,6 +7572,7 @@ uint32_t radio_terminate_ind_send(uint16_t handle, uint8_t reason)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
uint32_t radio_length_req_send(uint16_t handle, uint16_t tx_octets)
|
||||
{
|
||||
struct connection *conn;
|
||||
|
@ -7552,6 +7618,7 @@ void radio_length_max_get(uint16_t *max_tx_octets, uint16_t *max_tx_time,
|
|||
*max_rx_octets = RADIO_LL_LENGTH_OCTETS_RX_MAX;
|
||||
*max_rx_time = RADIO_LL_LENGTH_TIME_RX_MAX;
|
||||
}
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
static uint8_t tx_cmplt_get(uint16_t *handle, uint8_t *first, uint8_t last)
|
||||
{
|
||||
|
|
|
@ -29,11 +29,6 @@
|
|||
#define RADIO_CONNECTION_CONTEXT_MAX 0
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH
|
||||
#define RADIO_LL_LENGTH_OCTETS_RX_MAX \
|
||||
CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BLUETOOTH_CONTROLLER_RX_BUFFERS
|
||||
#define RADIO_PACKET_COUNT_RX_MAX \
|
||||
CONFIG_BLUETOOTH_CONTROLLER_RX_BUFFERS
|
||||
|
@ -50,6 +45,15 @@
|
|||
#define RADIO_BLE_FEATURES_BIT_PING 0
|
||||
#endif /* !CONFIG_BLUETOOTH_CONTROLLER_LE_PING */
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX)
|
||||
#define RADIO_BLE_FEATURES_BIT_DLE BIT(BT_LE_FEAT_BIT_DLE)
|
||||
#define RADIO_LL_LENGTH_OCTETS_RX_MAX \
|
||||
CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX
|
||||
#else
|
||||
#define RADIO_BLE_FEATURES_BIT_DLE 0
|
||||
#define RADIO_LL_LENGTH_OCTETS_RX_MAX 27
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH_MAX */
|
||||
|
||||
/*****************************************************************************
|
||||
* Timer Resources (Controller defined)
|
||||
****************************************************************************/
|
||||
|
@ -95,7 +99,7 @@
|
|||
BIT(BT_LE_FEAT_BIT_EXT_REJ_IND) | \
|
||||
BIT(BT_LE_FEAT_BIT_SLAVE_FEAT_REQ) | \
|
||||
RADIO_BLE_FEATURES_BIT_PING | \
|
||||
BIT(BT_LE_FEAT_BIT_DLE))
|
||||
RADIO_BLE_FEATURES_BIT_DLE)
|
||||
|
||||
/*****************************************************************************
|
||||
* Controller Reference Defines (compile time override-able)
|
||||
|
@ -257,11 +261,15 @@ uint32_t radio_start_enc_req_send(uint16_t handle, uint8_t err_code,
|
|||
uint32_t radio_feature_req_send(uint16_t handle);
|
||||
uint32_t radio_version_ind_send(uint16_t handle);
|
||||
uint32_t radio_terminate_ind_send(uint16_t handle, uint8_t reason);
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
uint32_t radio_length_req_send(uint16_t handle, uint16_t tx_octets);
|
||||
void radio_length_default_get(uint16_t *max_tx_octets, uint16_t *max_tx_time);
|
||||
uint32_t radio_length_default_set(uint16_t max_tx_octets, uint16_t max_tx_time);
|
||||
void radio_length_max_get(uint16_t *max_tx_octets, uint16_t *max_tx_time,
|
||||
uint16_t *max_rx_octets, uint16_t *max_rx_time);
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
uint8_t radio_rx_get(struct radio_pdu_node_rx **radio_pdu_node_rx,
|
||||
uint16_t *handle);
|
||||
void radio_rx_dequeue(void);
|
||||
|
|
|
@ -32,8 +32,6 @@ enum llcp {
|
|||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_LE_PING)
|
||||
LLCP_PING,
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_LE_PING */
|
||||
|
||||
/* LLCP_LENGTH, */
|
||||
};
|
||||
|
||||
|
||||
|
@ -59,9 +57,13 @@ struct connection {
|
|||
uint16_t latency;
|
||||
uint16_t latency_prepare;
|
||||
uint16_t latency_event;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
uint16_t default_tx_octets;
|
||||
uint16_t max_tx_octets;
|
||||
uint16_t max_rx_octets;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
uint16_t supervision_reload;
|
||||
uint16_t supervision_expire;
|
||||
uint16_t procedure_reload;
|
||||
|
@ -163,6 +165,7 @@ struct connection {
|
|||
} radio_pdu_node_rx;
|
||||
} llcp_terminate;
|
||||
|
||||
#if defined(CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH)
|
||||
struct {
|
||||
uint8_t req;
|
||||
uint8_t ack;
|
||||
|
@ -174,6 +177,7 @@ struct connection {
|
|||
uint16_t rx_octets;
|
||||
uint16_t tx_octets;
|
||||
} llcp_length;
|
||||
#endif /* CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH */
|
||||
|
||||
uint8_t sn:1;
|
||||
uint8_t nesn:1;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
CONFIG_BLUETOOTH=y
|
||||
CONFIG_BLUETOOTH_CONTROLLER=y
|
||||
CONFIG_BLUETOOTH_CONTROLLER_LE_PING=n
|
||||
CONFIG_BLUETOOTH_CONTROLLER_DATA_LENGTH=n
|
||||
CONFIG_BLUETOOTH_PERIPHERAL=y
|
||||
CONFIG_BLUETOOTH_CENTRAL=y
|
||||
CONFIG_BLUETOOTH_SMP=y
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue