Current implementation of ll_sync_create_cancel does not allow to stop synchronization after ull_sync_setup is called. When that is done, sync->timeout_reload is not zero and the ll_sync_create_cancel will return BT_HCI_ERR_CMD_DISALLOWED. That means the Controller is able to cancel periodic advertising synchronization only in period between call to ll_sync_create and reception of AUX_ADV_IND that has SyncInfo field. The Controller should be able to cancell synchronization until first AUX_SYNC_IND PDU is received and host notified about synchronization established. Complete information about synchronization status is provdied by two ll_sync_set members: node_rx_sync_established and timeout_reload. These two members of the structure were used in ll_sync_create_cancel function to do a proper cancel and cleanup. The node_rx_sync_established member was not cleared when sync was established or expired. That was required to get a proper information about synchronization state. Besides that, to avoid race condition between ll_sync_create_cancel and ull_sync_established_report, the latter function was extended to check if cancel operation or sync lost has happened. Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no> |
||
|---|---|---|
| .. | ||
| crypto | ||
| hal | ||
| hci | ||
| include | ||
| ll_sw | ||
| ticker | ||
| util | ||
| CMakeLists.txt | ||
| Kconfig | ||
| Kconfig.df | ||
| Kconfig.dtm | ||
| Kconfig.ll_sw_split | ||