Current during Directed Advertising

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi,

I'm using the following code to send directed advertisments from a 20737S:

void xyz_update_adv_interval(int32_t interval_ms)

{

   int32_t interval = (interval_ms * 1000) / 625;

   uint8_t bdaddr[6]={0xaf,0xfe,0x65,0x46,0xaa,0x5a};

   blecm_setAdvEnable(0);

   blecm_setAdvParam(interval,

                        MPL_ADV_ADV_DIRECT,

                        MPL_ADV_PUBLIC_ADDRESS,

                        MPL_ADV_ADV_CHANNEL_MAP_MASK,

                        MPL_ADV_ADV_FILTER_POLICY_WHITE_LIST_NOT_USED,

                        MPL_ADV_PUBLIC_ADDRESS,

                        bdaddr);

   blecm_setAdvEnable(1);

}

While this works great and I'm able to block connections from nosy Apple devices which we don't have to support, the current draw is a little bit too high during advertisements for a CR2032. I measured 21mA through a 47Ohm resistor. Here is a picture of the voltage after it:

pastedImage_0.png

That initial 500ms current draw is a killer. I'm not sure how I could prevent this so if you have a good idea let me know.

The general problem I'm trying to evade is foreign central devices connecting to our peripheral. The thing is that even though I can send advertisements in parallel to open connections to enable permitted devices to access our peripheral, the 4.4 Android Bluetooth stack gets into a non-functioning state by doing so. In the past I resorted to only using advertisements and terminating connections to prevent excessive current draw. Now we have to support a piece of hardware where the Android stack doesn't hand advertisement data over to the user - we only get zeros. For this reason I've thought about going back to connections and limiting the connection of foreign devices by some other means.

If you got any suggestions I would be glad.

Regards,

Kilian

0 Likes
1 Solution

Update 5/21/15 - The Whitelist Function in SDK 2.2.1 is now fully functional and a working example will be attached to this thread: BCM2073X: blecm_SelectAddress() does not clear the whitelist which shows how to add/delete entries while leveraging our Hello_Client and Hello_Sensor sample applications. kcj abuch vik86 kilian.timmler@exelonix.com

View solution in original post

0 Likes
8 Replies
Anonymous
Not applicable

Hi,

while this issue remains certainly interesting we have warmed up to the idea of sending our messages through the complete local name data type as Base64 data, to appease the Bluetooth Stack of the new device. So the large amount of energy spent on the directed advertisements is no longer a show stopper.

Still I think that directed advertisements are great and I would like to use them in the future. Any solution to the issue would be appreciated.

Regards,

Kilian

0 Likes

We will adrees this and other issues with the developers during our meeting later this afternoon.

0 Likes
Anonymous
Not applicable

Hello kilian.timmler@exelonix.com

DIRECTED ADV are by design 100% duty cycle.

The BT SIG is working on an Alternative Method - Relaxing the spec for Tx Rx.

Hosts, by nature do not like Directed Advertisements.

Thanks

JT

Anonymous
Not applicable

Thanks for your help.

Seeing how directed advertisements are still not finished I'll better stay away from them for a while.

Regards,

Kilian

0 Likes
asridharan
Employee
Employee
10 comments on KBA 5 comments on KBA First comment on KBA

> The general problem I'm trying to evade is foreign central devices connecting to our peripheral.

Have you considered using whitelists when advertising? Put the BD_ADDR of the central you are paired with into the whitelist while advertising. If another central tries to connect, it will never succeed, only the devices that is in the whitelist will be allowed to connect. You will also need to think of a mechanism in the peripheral to not use the whitelist when advertising if you want to pair with a new central.

0 Likes
Anonymous
Not applicable

I didn't get it to work and found from some of mwf_mmfae's posts that it has issues:

how to add the blacklist which wiced smart refuse to be accessed?

So I went straight to directed advertisements. If you had any good experience with whitelists please let me know.

Regards,

Kilian

0 Likes

Update 5/21/15 - The Whitelist Function in SDK 2.2.1 is now fully functional and a working example will be attached to this thread: BCM2073X: blecm_SelectAddress() does not clear the whitelist which shows how to add/delete entries while leveraging our Hello_Client and Hello_Sensor sample applications. kcj abuch vik86 kilian.timmler@exelonix.com

0 Likes