I am developing software of BT5.1 to use SDK for CC2642R. SDK version is simplelink_cc13x2_26x2_sdk_4_40_04_04.
In BLE5 extended (Coded PHY) advertisement, the Advertising Data ID (DID) in Advertising Data Info doesn't change even if the data content is changed every period transmission.
The Bluetooth specification Core_v5.1 has the following description, and I think it should be changed originally.
>BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 6, Part B
>4.4.2.11 Using AdvDataInfo (ADI)
>The Advertising DID for a given advertising set shall be initialized with a randomly chosen value.
>Whenever the Host provides new advertising data or scan response data for a given advertising set (whether it is the same as the previous data or not), the Advertising DID shall be updated.
>The new value shall be a randomly chosen value that is not the same as the previously used value.
This problem does not occur if the following operations are executed in every advertising event.
1. GapAdv_disable(handle)
2. GapAdv_prepareLoadByHandle(handle, GAP_ADV_FREE_OPTION_ADV_DATA)
3. GapAdv_loadByHandle(handle, GAP_ADV_DATA_TYPE_ADV, sizeof(advData), advData)
4. GapAdv_eanble(handle, GAP_ADV_ENABLE_OPTIONS_USE_MAX, 0)
However, channel index is always zero in that case.
Is GapAdv_loadByHandle reset channel index?
No one can accept this kind of behavior.
It is recommended that sufficient channel diversity is used to avoid collisions in BLUETOOTH CORE SPECIFICATION.
>BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 6, Part B
>4.4.2.1 Advertising channel index selection
>For AUX_ADV_IND and AUX_CHAIN_IND PDUs, the secondary advertising channel index used in the Channel Index subfield of the AuxPtr field is implementation specific.
>It is recommended that sufficient channel diversity is used to avoid collisions.
And Advertising DID should be updated without GapAdv_loadByHandle.
GapAdv_loadByHandle is only necessary when the data size changes, I think.
Because advertising data is immediately sended if GapAdv_prepareLoadByHandle and GapAdv_loadByHandle were executed.
This means GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN or MAX parameters are useless.
Regards,
Tetsuo Tatsugami