This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2642R: Interleaving Connectable Advertisements with iBeacons

Part Number: CC2642R

I have a CC2642 application which must appear over Bluetooth as if it were two separate devices, one of which is an iBeacon.

The first is as follows:
- Connectable peripheral
- IEEE assigned Mfg specific public MAC address
- Advertising rate of 31.25mSec
- Advertising on the 1M phy

The second is as follows:
- Non-connectable iBeacon format
- The TI default MAC address
- Advertising rate of at least 2 times per second
- Advertising on the 1M phy

This requires two alternate advertising data sets which is easy to implement on the CC2642. It also requires flip-flopping the MAC addresses at least 2 times per second. I am using a timer to trigger an App event which alternates the advertising data and MAC addresses.

So far, I have had little success with alternating the MAC address and am questioning if it is even feasible on this part. Has anyone else implemented something similar or is there some sort of TI reference design for this?

Thanks,
Mike

  • Hi Mike,
    How do you implement the alternating device address?
  • Hi,

    I have working code that uses the TI MAC address on boot which I change to our IEEE assigned MAC address using the HCI_EXT_SetBDADDRCmd() API call. I can successfully flip-flop back and forth between the two MAC addresses with subsequent HCI calls based on a timer. The problem with this method is that the TI factory address  is the one used during the GAP_DeviceInit() call so pairing fails when using our MAC address.

    I would like to have our MAC address registered during GAP_DeviceInit() so pairing can be successful, and then switch to the TI MAC address when doing the non-connectable iBeacons.

    My latest prototype writes our IEEE assigned MAC address to the CCFG_O_IEEE_BLE_0 location in the CCFG area. This allows our MAC address to be used on boot. When I want to switch to the alternate MAC address, I reference the TI factory MAC address that is stored in the FCFG area. The call to  HCI_EXT_SetBDADDRCmd()  referencing the TI MAC returns 0x0000 indicating success but it continues to use our MAC instead.

    I have run out of things to try and was wondering if this has already been accomplished by someone else. I do know that there existing products in the field that do exactly this but they may not be using TI radios.

    Thanks for the help.

    Mike

  • Hello. In the BLE5Stack, the only supported way to change the address is using the GAP_DeviceInit() function. And this function can only be called once per reset. This is a limitation of the stack in order to simplify address handling.