This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

What is the order in which BLE signals are "seen" at the link layer or below?

I'm wondering how BLE signals are handled at the layer below the scanning module. Namely, suppose there are hundreds of BLE modules that are all advertising nearby. How does the lower-level logic work in determining which signals "bubble up" to the stack and get processed by the scanning module? Are the signals recognized in order of decreasing strength? Is it random?

  • Hello,

    When scanning, you are scanning on a specific advertising channel, 37, 38 or 39. The Softdevice will scan on one channel for the duration of your scan window, set in sdk_config.h (if you are using one of the later SDKs). Then it will wait for the next scan interval to start, and then scan on the next channel for the next scan window. 

    When scanning, the softdevice will pick up the first advertising packet it can find, unless you are using bonding and whitelisting. Typically, our central examples are using some sort of filter. Either an advertising name or a specific UUID is used. Look for the filter_set() function in scan_init(), and see how the filters are applied in the BLE_GAP_EVT_ADV_REPORT event, which calls nrf_ble_scan_on_adv_report(), in nrf_ble_scan.c.

    If you can't find this function, please let me know what SDK version you are using.

    BR,

    Edvin

  • Edvin,

    I am asking specifically about what happens at a layer below the one at which filtering and whitelisting occurs. What does the radio see first and pass up to the stack: signals with the highest power? 

    Thanks,

    Glenn

  • Glenn Zelniker said:
    signals with the highest power? 

     No, the signal that occurs first (in time, not signal strength). 

Related