Scan and callback

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

cross mob
Anonymous
Not applicable

Few question about scan and call back:

1) If I used the follow blecm_startScan to start scan, will it timeout based on the configuration blecen_cen_cfg.low_scan_duration ?

blecm_startScan (

    blecen_cen_cfg.scan_type,

    blecen_cen_cfg.low_scan_interval,

    blecen_cen_cfg.low_scan_window,

    blecen_cen_cfg.scan_adr_type,

    blecen_cen_cfg.scan_filter_policy,

    blecen_cen_cfg.filter_duplicates);

2) if I use blecen_Scan(LOW_SCAN) to start the scan and use blecen_Scan(NO_SCAN) to stop it before timeout, will the call back function (BLEAPP_APP_TIMER_SCAN) be called?

3) if I use blecm_setScanEnable to stop scanning, will the call back function (BLEAPP_APP_TIMER_SCAN) be called?

blecm_setScanEnable(HCIULP_SCAN_MODE_OFF, blecen_cen_cfg.filter_duplicates);

0 Likes
1 Solution
Anonymous
Not applicable

Hello.

I'm sorry I haven't replied back earlier. I didn't have time to look at the source code.

Here are answers to your question:

1. Yes, it would be okay to set it like that (not sure why you would want to do that though).

scan_duration is only used for the scan timer, which enables the scan callback. So changing the scan_duration will effect when the scan callback is called. Also notice that scan_window has units of slots where as in scan_duration is in seconds. Don't mix the numbers.

I'm not sure if the scan is stopped when the callback is called...

2. Whenever you start a scan, the timer will call whatever callback defined at variable blecen_usertimerCb. The default is NULL.

3. Yes, you can change the intervals by setting a new value to blece_cen_cfg, but you must restart the scan by calling blecen_Scan function.

Again, I'm sorry if this reply is really late.

But I thought if I put the info, someone else might be able to benefit from it.

Hope this info helps.

Thank you.

James

View solution in original post

4 Replies
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

I will ask jamesle1​ to take a look at this when he returns to the office next week.

0 Likes
Anonymous
Not applicable

Hello.

You probably don't want be using blecm_startScan unless you absolutely have to.

blecm_startScan is called inside blecen_Scan function.

In blecen_Scan, these things happen sequentially:

     - it turns off the callback timer

     - it turns off the scan

     - resets the scan mode

          - start the callback timer and scan if appropriate with the right scan_type

    

To answer your questions:

1. calling blecm_Scan will start the scan with the given parameters. However, the scanner callback will not be called.

2. calling blecen_Scan will always stop the callback timer and the scan first. If the function is called with NO_SCAN argument, the callback will not be called again.

3. calling blecm_setScanEnable will only stop the scan. It will not stop the callback timer. So the callback function will be called again.

I suggest sticking to using blecen_Scan function as it gives you control over the callback timer.

Please refer to hello_client application for example on how to use blecen_Scan.

Thank you.

James

Anonymous
Not applicable

jamesle1​​ Thanks for replying.

1. Will it be ok to set scan_duration less than scan_window?  For example:

scan_duration  = 9 seconds

scan_window = 10 seconds

If so, will the scan stops at 9th second and call the callback function?

2. Does blecen_Scan(HIGH_SCAN) have callback?

3. Can I change scan parameters such as blecen_cen_cfg.low_scan_interval on the fly?

0 Likes
Anonymous
Not applicable

Hello.

I'm sorry I haven't replied back earlier. I didn't have time to look at the source code.

Here are answers to your question:

1. Yes, it would be okay to set it like that (not sure why you would want to do that though).

scan_duration is only used for the scan timer, which enables the scan callback. So changing the scan_duration will effect when the scan callback is called. Also notice that scan_window has units of slots where as in scan_duration is in seconds. Don't mix the numbers.

I'm not sure if the scan is stopped when the callback is called...

2. Whenever you start a scan, the timer will call whatever callback defined at variable blecen_usertimerCb. The default is NULL.

3. Yes, you can change the intervals by setting a new value to blece_cen_cfg, but you must restart the scan by calling blecen_Scan function.

Again, I'm sorry if this reply is really late.

But I thought if I put the info, someone else might be able to benefit from it.

Hope this info helps.

Thank you.

James