Is there a way to accomplish the following using the existing library features?:
- Once a BLE peripheral is bonded to a central, it will not accept connections from any other device except the one we're bonded with. The bonded central can connect and disconnect as needed, but all other central devices would not be allowed to connect at any time.
- The bonded central device may support any of the valid BLE addressing schemes (private static/resolvable static etc. we can't control this part)
- I am implementing this on the MurataType1LD module: (CYW43438) + STM32 (ARM Cortex-M4F)
I'm a relative newcomer to the CYW4343 and I've not attempted this yet, but there appears to be a white list capability for Central and Peripheral. You didn't say which WICED API version you are using, but on WICED 6.4 there is whitelist API within wiced_bt_ble.h For example, wiced_bt_ble_update_advertising_white_list wiced_btm_ble_update_advertisement_filter_policy wiced_bt_ble_update_scanner_white_list wiced_bt_ble_update_scanner_filter_policy wiced_bt_ble_clear_white_list wiced_bt_ble_get_white_list_size
I'd be interested to hear how you get on with this, as it is something I wish to do in the future. Perhaps someone with experience of the above could offer you more details.
However, I can't find any documentation on either of those APIs besides what's in the wiced_bt_ble.h file. For example, there is nothing that states whether the whitelisting functionality supports LE secure connections where central devices use random addresses that need to be resolved (Most Android and Apple devices use these random & changing addresses today). If so, I assume we would have to whitelist the already resolved static address of the central (and not the random address with which the connection is initiated)...
I am spending a decent amount of time (essentially trial and test) on something that should be basic BLE security functionality... So, I figured I'd ask here in case I missed some documentation or there is a wise & more experienced soul out there that can make my day.. : ).
I am using WICED 6.2 which appears to support the same whitelist functions, but I would of course justify migration to 6.4 if there are bugs causing this to not work in 6.2.
Unfortunately, there's barely any official documentation other than the comments in the source code. The official documentation is included with WICED. On my WICED 6.4 installation it is found in the following directory,
and search under "Components > Bluetooth". But, this is just a Doxygen output of the source code comments.
I was also directed by another developer to the Modus Toolbox manuals, but I'm not sure how relevant their information is to us when working under WICED-Studio. Much of the code examples seem to be valid. Perhaps it will lead you to some answers...
Yes we have Directed advertisement feature in order to connect to the previously bonded device. Unfortunately, there is no example available demonstrating thing but I can refer you can existing available for CYW20819. Maybe you can take implementation reference from that.