BLE Component stops scanning

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

cross mob
Anonymous
Not applicable

Hi,

During some development tests we discovered that the BLE Component stopped scanning.

We have 10 devices that (during this test) advertises at a rate of 20-30ms.

CyBle_ProcessEvents() is called every 5ms.

After a some time (anything from 10-60 mins) the devices stops scanning.

If we via software restart the BLE component the scanning is back for a while.

The above setup results in 300-500 advertising telegrams every second and only 200 CyBle_ProcessEvents() calls. It seems to us that there is some kind of scan buffer overrun that is triggered by heavy advertising by surrounding devices and not enough CyBle_ProcessEvents() calls.

If we now change the CyBle_ProcessEvents() interval to 1ms, the scanning continues to work over the weekend.

Is there a minimum interval CyBle_ProcessEvents() must be called at to ensure that the scanning will be working at all times - also under heavy load?

Is there an API that can be used to check the status of the scanning buffer so we can reset the BLE component based on that?

BR

Fink

0 Likes
1 Solution
Yugandhar
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 5 likes given

Hello,

The function CyBle_ProcessEvents() needs to be called at least once every interval 't' where 't' is equal to connection interval or scan interval, whichever is smaller, if the device is in GAP Central mode. This function CyBle_ProcessEvents() checks the internal task queue in the BLE Stack, and pending operation of the BLE Stack, if any.

We are receiving more advertising events from devices so we have to call the function ( CyBle_ProcessEvents() ) continuously otherwise we may going to miss some of the advertising events.

Stopping of scan won't occur. Can you please send your project so we will check and see the issue.

Thanks,

P Yugandhar.

View solution in original post

1 Reply
Yugandhar
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 5 likes given

Hello,

The function CyBle_ProcessEvents() needs to be called at least once every interval 't' where 't' is equal to connection interval or scan interval, whichever is smaller, if the device is in GAP Central mode. This function CyBle_ProcessEvents() checks the internal task queue in the BLE Stack, and pending operation of the BLE Stack, if any.

We are receiving more advertising events from devices so we have to call the function ( CyBle_ProcessEvents() ) continuously otherwise we may going to miss some of the advertising events.

Stopping of scan won't occur. Can you please send your project so we will check and see the issue.

Thanks,

P Yugandhar.