SDK-5.1: ble scan stop working if large bufer max-used count becomes 1

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

cross mob
AxLi_1746341
Level 7
Level 7
10 comments on KBA 5 comments on KBA First comment on KBA

I use below API to scan forever:

wiced_bt_ble_observe(WICED_TRUE, 0, my_scan_results_cb);

In normal case, the buffer usage is:

07:12:30.059568 --- Bluetooth(Pool type: A-App, I-Internal) Buffer summary ---␍␍␊

07:12:30.001032 Pool(size,type)   Available   In-use    Total   Max-used␍␍␊

07:12:30.008032 --------------------------------------------------------␍␍␊

07:12:30.014032 00(  64, A):          16,       0,      16,       5␍␍␊

07:12:30.020032 01( 360, A):          16,       0,      16,       3␍␍␊

07:12:30.027032 02( 360, A):           6,       0,       6,       0␍␍␊

However, sometimes the scan stop working.

The buffer usage becomes:

07:15:31.027000 --- Bluetooth(Pool type: A-App, I-Internal) Buffer summary ---␍␍␊

07:15:31.034000 Pool(size,type)   Available   In-use    Total   Max-used␍␍␊

07:15:31.041000 --------------------------------------------------------␍␍␊

07:15:31.047000 00(  64, A):          16,       0,      16,       5␍␍␊

07:15:31.054000 01( 360, A):          16,       0,      16,       3␍␍␊

07:15:31.058000 02( 360, A):           6,       0,       6,       1␍

Every time the Max-used count for large buffer becomes 1, the scan stop working.

It does not report any error but just silently get no scan result.

Note, I had reported this before but don't any fix.

Just check the status in sdk-5.1, it still has such issue.

dhak

0 Likes
8 Replies
AxLi_1746341
Level 7
Level 7
10 comments on KBA 5 comments on KBA First comment on KBA

mifo

Any one can help?

0 Likes

Adding the IoT Apps team: rashgrsrajaimadyriyaanii

0 Likes

mifo wrote:

Adding the IoT Apps team: rash grsr ajai mady riya anii

Hi all,

I need to know in what kind of situation the wiced_bt_ble_observe() will use large buffer.

This information is helpful to speed up reproduce and fix this issue.

As I reported above, it indeed uses large buffer.

rashgrsrajaimadyriyaanii

0 Likes
Anonymous
Not applicable

Hi Axel,

Please try the latest SDK and let us know your observations.

Regards,

-Madhu

0 Likes

mady

The Changelog does not mention any *fixes* for the BT library in latest SDK.

Can you list what is exactly *fixed* for the BT library in latest SDK?

0 Likes

It seems with latest sdk it does not stop immediately if hit max-used=1, but still has chance to stop latter.

Not sure if below is related, just FYI.

I tried sdk-6.0.1 and sdk-6.1.0, both have chance to hit below assertion in WICED/platform/MCU/STM32F4xx/peripherals/platform_uart.c

wiced_assert( "bad argument", ( driver != NULL ) && ( data_in != NULL ) && ( expected_data_size != NULL ) && ( *expected_data_size != 0 ) );

i.e. the caller pass 0 to expected_data_size argument.

(The caller is in binary library so I cannot check it)

0 Likes

Madhu Lakshmipathy wrote:

Hi Axel,

Please try the latest SDK and let us know your observations.

Regards,

-Madhu

mady

Confirm the same issue still can happen in sdk-6.1.

The ble scan no longer work without any error.

The problem is *without any error* so I even cannot workaround it.

0 Likes

mady

I found if there are a large number of beacons around, it's possible to hit max-used count=1 then stop scan.

It's really very difficault to handle the binary library bug like this as I cannot differentiate if no

scan result means the stop no longer work or no beacon around.

0 Likes