Bluetooth: Controller: Fix Periodic Sync Failed to be Established

Fix Periodic Advertising Synchronize implementation to
generate Synchronization Failed to be Established event
when 6 AUX_SYNC_IND PDUs are not received when establishing
synchronization.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2021-11-12 16:33:46 +05:30 committed by Carles Cufí
commit e07af1fa08
8 changed files with 148 additions and 25 deletions

View file

@ -6036,18 +6036,20 @@ static void le_per_adv_sync_established(struct pdu_data *pdu_data,
se = (void *)pdu_data;
sep->status = se->status;
sep->handle = sys_cpu_to_le16(node_rx->hdr.handle);
if (sep->status != BT_HCI_ERR_SUCCESS && sep->status != BT_HCI_ERR_UNSUPP_REMOTE_FEATURE) {
if (se->status == BT_HCI_ERR_OP_CANCELLED_BY_HOST) {
return;
}
sep->handle = sys_cpu_to_le16(node_rx->hdr.handle);
scan = node_rx->hdr.rx_ftr.param;
sep->sid = scan->per_scan.sid;
/* Resolved address, if private, has been populated in ULL */
sep->adv_addr.type = scan->per_scan.adv_addr_type;
memcpy(&sep->adv_addr.a.val[0], scan->per_scan.adv_addr, BDADDR_SIZE);
sep->sid = scan->per_scan.sid;
sep->phy = find_lsb_set(se->phy);
sep->interval = sys_cpu_to_le16(se->interval);
sep->clock_accuracy = se->sca;