SWCU192 November 2021 CC1312R7 , CC1352P7 , CC2652P7 , CC2652R7
For advertiser, scanner and initiator commands, it is possible to change the device address while a command is running. If a new pointer is written to the pDeviceAddress or pWhiteList field of an advertiser, scanner or initiator parameter structure, this pointer is taken into use for the device address or peer address at the following time:
Until the new pointer is taken into use, the previous pointer will be used for the device address.
The advConfig, scanConfig, and initConfig fields are re-read at the same time as the device address pointer. However, it is not recommended to change the device address type or peer address type in these fields while a command or command chain is running, as there is a small probability that the address type could be out of sync with the address. Instead, the least significant bit of pDeviceAddress can be set to 1 to indicate that the device address type should be inverted compared to the type found in advConfig, scanConfig, or initConfig. Similarly, the least significant bit of pWhiteList can be set to 1 to indicate that the peer address type should be inverted compared to the type found in advConfig or initConfig. This means that the address and address type may be modified in an atomic operation. The least significant bit of pDeviceAddress and pWhiteList is ignored when finding the address of the array that holds the address; the radio CPU will always read from a half-word-aligned address.
The contents of the array pointed to by pDeviceAddress or pWhiteList (when pointing to a single address) should not be modified while a command is running. If the pointer is updated in the command structure, the array pointed to by the old value of pDeviceAddress or pWhiteList should not be modified until it can be known that the address pointed to is no longer in use by the radio CPU.