Bluetooth: Controller: Update support for Periodic Sync Receive enable

Update support for Periodic Advertising Synchronization
Receive Enable command, so that PDUs are received so that
contents of Extended Common Payload Format is parsed and
process for information like Channel Map Update and BIGInfo.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2021-12-02 07:08:34 +05:30 committed by Carles Cufí
commit a1810425ca
6 changed files with 40 additions and 30 deletions

View file

@ -6164,10 +6164,10 @@ static void le_per_adv_sync_report(struct pdu_data *pdu_data,
uint8_t data_len_max;
uint8_t *acad = NULL;
uint8_t hdr_buf_len;
bool dup = false;
uint8_t hdr_len;
uint8_t *ptr;
int8_t rssi;
bool drop;
if (!(event_mask & BT_EVT_MASK_LE_META_EVENT) ||
(!(le_event_mask & BT_EVT_MASK_LE_PER_ADVERTISING_REPORT) &&
@ -6292,23 +6292,29 @@ no_ext_hdr:
BT_DBG(" AD Data (%u): <todo>", data_len);
}
if (0) {
#if (CONFIG_BT_CTLR_DUP_FILTER_LEN > 0) && \
defined(CONFIG_BT_CTLR_SYNC_PERIODIC_ADI_SUPPORT)
if (IS_ENABLED(CONFIG_BT_CTLR_SYNC_PERIODIC_ADI_SUPPORT) && adi) {
} else if (IS_ENABLED(CONFIG_BT_CTLR_SYNC_PERIODIC_ADI_SUPPORT) &&
adi) {
const struct ll_sync_set *sync = HDR_LLL2ULL(ftr->param);
/* FIXME: Use correct data status else chain PDU report will
* be filtered out.
*/
dup = sync->nodups && dup_found(PDU_ADV_TYPE_EXT_IND,
sync->peer_id_addr_type,
sync->peer_id_addr,
DUP_EXT_ADV_MODE_PERIODIC,
adi, 0U);
}
drop = !ftr->sync_rx_enabled ||
(sync->nodups && dup_found(PDU_ADV_TYPE_EXT_IND,
sync->peer_id_addr_type,
sync->peer_id_addr,
DUP_EXT_ADV_MODE_PERIODIC,
adi, 0U));
#endif /* CONFIG_BT_CTLR_DUP_FILTER_LEN > 0 &&
* CONFIG_BT_CTLR_SYNC_PERIODIC_ADI_SUPPORT
*/
} else {
drop = !ftr->sync_rx_enabled;
}
data_len_max = ADV_REPORT_EVT_MAX_LEN -
sizeof(struct bt_hci_evt_le_meta_event) -
@ -6316,7 +6322,7 @@ no_ext_hdr:
evt_buf = buf;
if (!dup && (le_event_mask & BT_EVT_MASK_LE_PER_ADVERTISING_REPORT)) {
if ((le_event_mask & BT_EVT_MASK_LE_PER_ADVERTISING_REPORT) && !drop) {
do {
struct bt_hci_evt_le_per_advertising_report *sep;
uint8_t data_len_frag;