Bluetooth: controller: Add BT_CTLR_CONN_RSSI_EVENT option
Split BT_CTLR_CONN_RSSI option into two, the base option enables the Read RSSI command, while the new BT_CTLR_CONN_RSSI_EVENT enables the connection RSSI events. There is no handling of RSSI events, only a BT_INFO log. Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
This commit is contained in:
parent
68ce16cf86
commit
eba6265ac3
10 changed files with 40 additions and 18 deletions
|
@ -807,6 +807,12 @@ config BT_CTLR_CONN_RSSI
|
|||
help
|
||||
Enable connection RSSI measurement.
|
||||
|
||||
config BT_CTLR_CONN_RSSI_EVENT
|
||||
bool "Connection RSSI event"
|
||||
depends on BT_CTLR_CONN_RSSI
|
||||
help
|
||||
Generate events for connection RSSI measurement.
|
||||
|
||||
endif # BT_CONN
|
||||
|
||||
config BT_CTLR_ADV_INDICATION
|
||||
|
|
|
@ -3123,12 +3123,12 @@ static void encode_control(struct node_rx_pdu *node_rx,
|
|||
return;
|
||||
#endif /* CONFIG_BT_CTLR_PHY */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
case NODE_RX_TYPE_RSSI:
|
||||
BT_INFO("handle: 0x%04x, rssi: -%d dB.", handle,
|
||||
pdu_data->rssi);
|
||||
return;
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CONN */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_ADV_INDICATION)
|
||||
|
@ -3513,9 +3513,9 @@ u8_t hci_get_class(struct node_rx_pdu *node_rx)
|
|||
case NODE_RX_TYPE_ENC_REFRESH:
|
||||
#endif /* CONFIG_BT_CTLR_LE_ENC */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
case NODE_RX_TYPE_RSSI:
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#if defined(CONFIG_BT_CTLR_LE_PING)
|
||||
case NODE_RX_TYPE_APTO:
|
||||
#endif /* CONFIG_BT_CTLR_LE_PING */
|
||||
|
|
|
@ -51,10 +51,10 @@
|
|||
#define LOG_MODULE_NAME bt_ctlr_ctrl
|
||||
#include "common/log.h"
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
#define RADIO_RSSI_SAMPLE_COUNT 10
|
||||
#define RADIO_RSSI_THRESHOLD 4
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
|
||||
#define SILENT_CONNECTION 0
|
||||
|
||||
|
@ -4231,6 +4231,7 @@ isr_rx_conn_exit:
|
|||
|
||||
_radio.conn_curr->rssi_latest = rssi;
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
if (((_radio.conn_curr->rssi_reported - rssi) & 0xFF) >
|
||||
RADIO_RSSI_THRESHOLD) {
|
||||
if (_radio.conn_curr->rssi_sample_count) {
|
||||
|
@ -4240,6 +4241,7 @@ isr_rx_conn_exit:
|
|||
_radio.conn_curr->rssi_sample_count =
|
||||
RADIO_RSSI_SAMPLE_COUNT;
|
||||
}
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
}
|
||||
#else /* !CONFIG_BT_CTLR_CONN_RSSI */
|
||||
ARG_UNUSED(rssi_ready);
|
||||
|
@ -4892,7 +4894,7 @@ static inline void isr_close_conn(void)
|
|||
}
|
||||
#endif /* CONFIG_BT_CTLR_LE_PING */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
/* generate RSSI event */
|
||||
if (_radio.conn_curr->rssi_sample_count == 0) {
|
||||
struct radio_pdu_node_rx *node_rx;
|
||||
|
@ -4917,7 +4919,7 @@ static inline void isr_close_conn(void)
|
|||
packet_rx_enqueue();
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
|
||||
/* break latency based on ctrl procedure pending */
|
||||
if (((_radio.conn_curr->llcp_ack != _radio.conn_curr->llcp_req) &&
|
||||
|
@ -11684,8 +11686,10 @@ u32_t radio_adv_enable(u16_t interval, u8_t chan_map, u8_t filter_policy,
|
|||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
conn->rssi_latest = 0x7F;
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
conn->rssi_reported = 0x7F;
|
||||
conn->rssi_sample_count = 0U;
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL)
|
||||
|
@ -12237,8 +12241,10 @@ u32_t radio_connect_enable(u8_t adv_addr_type, u8_t *adv_addr, u16_t interval,
|
|||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
conn->rssi_latest = 0x7F;
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
conn->rssi_reported = 0x7F;
|
||||
conn->rssi_sample_count = 0U;
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL)
|
||||
|
@ -13026,9 +13032,9 @@ void ll_rx_dequeue(void)
|
|||
case NODE_RX_TYPE_PHY_UPDATE:
|
||||
#endif /* CONFIG_BT_CTLR_PHY */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
case NODE_RX_TYPE_RSSI:
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CONN */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PROFILE_ISR)
|
||||
|
@ -13181,9 +13187,9 @@ void ll_rx_mem_release(void **node_rx)
|
|||
case NODE_RX_TYPE_PHY_UPDATE:
|
||||
#endif /* CONFIG_BT_CTLR_PHY */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
case NODE_RX_TYPE_RSSI:
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CONN */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PROFILE_ISR)
|
||||
|
|
|
@ -331,8 +331,10 @@ struct connection {
|
|||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
u8_t rssi_latest;
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
u8_t rssi_reported;
|
||||
u8_t rssi_sample_count;
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT) */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL)
|
||||
|
|
|
@ -105,8 +105,10 @@ struct lll_conn {
|
|||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
u8_t rssi_latest;
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
u8_t rssi_reported;
|
||||
u8_t rssi_sample_count;
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_META)
|
||||
|
|
|
@ -328,6 +328,7 @@ lll_conn_isr_rx_exit:
|
|||
|
||||
lll->rssi_latest = rssi;
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
if (((lll->rssi_reported - rssi) & 0xFF) >
|
||||
LLL_CONN_RSSI_THRESHOLD) {
|
||||
if (lll->rssi_sample_count) {
|
||||
|
@ -336,6 +337,7 @@ lll_conn_isr_rx_exit:
|
|||
} else {
|
||||
lll->rssi_sample_count = LLL_CONN_RSSI_SAMPLE_COUNT;
|
||||
}
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
}
|
||||
#else /* !CONFIG_BT_CTLR_CONN_RSSI */
|
||||
ARG_UNUSED(rssi_ready);
|
||||
|
|
|
@ -631,9 +631,9 @@ void ll_rx_dequeue(void)
|
|||
case NODE_RX_TYPE_PHY_UPDATE:
|
||||
#endif /* CONFIG_BT_CTLR_PHY */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
case NODE_RX_TYPE_RSSI:
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CONN */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PROFILE_ISR)
|
||||
|
@ -790,9 +790,9 @@ void ll_rx_mem_release(void **node_rx)
|
|||
case NODE_RX_TYPE_PHY_UPDATE:
|
||||
#endif /* CONFIG_BT_CTLR_PHY */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
case NODE_RX_TYPE_RSSI:
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CONN */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_PROFILE_ISR)
|
||||
|
|
|
@ -616,8 +616,10 @@ u8_t ll_adv_enable(u8_t enable)
|
|||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
conn_lll->rssi_latest = 0x7F;
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
conn_lll->rssi_reported = 0x7F;
|
||||
conn_lll->rssi_sample_count = 0;
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL)
|
||||
|
|
|
@ -1195,7 +1195,7 @@ void ull_conn_done(struct node_rx_event_done *done)
|
|||
}
|
||||
#endif /* CONFIG_BT_CTLR_LE_PING */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
/* generate RSSI event */
|
||||
if (lll->rssi_sample_count == 0) {
|
||||
struct node_rx_pdu *rx;
|
||||
|
@ -1219,7 +1219,7 @@ void ull_conn_done(struct node_rx_event_done *done)
|
|||
ll_rx_sched();
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
|
||||
/* break latency based on ctrl procedure pending */
|
||||
if (((((conn->llcp_req - conn->llcp_ack) & 0x03) == 0x02) &&
|
||||
|
|
|
@ -143,8 +143,10 @@ u8_t ll_create_connection(u16_t scan_interval, u16_t scan_window,
|
|||
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI)
|
||||
conn_lll->rssi_latest = 0x7F;
|
||||
#if defined(CONFIG_BT_CTLR_CONN_RSSI_EVENT)
|
||||
conn_lll->rssi_reported = 0x7F;
|
||||
conn_lll->rssi_sample_count = 0;
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI_EVENT */
|
||||
#endif /* CONFIG_BT_CTLR_CONN_RSSI */
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue