Is it possible to have multiple connections as a peripheral device on the BL65x modules?
Multiple connections as a peripheral device is currently not supported in smartBASIC on the BL65x modules. This functionality is supported in Nordic SDK beginning with SoftDevice S132 v.4.0.0.
However, as of the writing of this FAQ, this functionality has been brought out as an experimental feature in the smartBASIC firmware for the BL654/BL654PA only, as per the Release Notes for the v29.5.7.2.0 fw It is not documented in the smartBASIC Extensions User Guide at this time due to it being an experimental feature, and no additional support is currently available for this functionality.
If interested in testing with this experimental feature, the below test can be performed using two/three mobile devices (tablets/phones) as the central devices to demonstrate that two (or more) central role devices can connect to the BL654 configured as a peripheral at the same time. (This does not test GATT functionality or anything else.) While in interactive command mode:
at+cfg 205? // Query the current MAX number of peripheral role connections (User Guide still indicates the MAX this can be set to is 1)
at+cfg 206? // Query the current MAX number of central role connections
27 0x00000001 (1) //Response to MAX Peripheral role connections
00
27 0x0000000F (15) //Response to MAX Central role connections
00
Increase the MAX Peripheral role connections and decrease the MAX Peripheral role connections and then reset the module for the settings to take effect:
at+cfg 205 3 //Configure Max Peripheral to 3
at+cfg 206 3 //Configure Max Central to 3
atz //Reset
In our testing we used the cmd.manager.sb sample application available from the BL654 Sample Application Repository on GitHub. After setting the MAX connection parameters and resetting the device load and run the cmd.manager.sb sample application.
The commands and parameters for cmd.manager are found in the comments section of the code: To simplify this for testing purposes enter the following command to start adverts:
advert undirected 250 30000 0
Explanation of the command from the code:
advert undirected #INTintervalms# #INTtimeoutms# #INTfilterpolicy#
// - Use this to start adverts of type ADV_IND using the parameters specified
// - #INTfilterpolicy# is 0=no filtering, otherwise set 1 to 4 which is the
// - whitelist handle created using the 'whitelist' command
This will start adverts for 30 seconds, adjust the INTtimeoutms setting if you want to advertise for longer. Then while it is advertising, connect to it using your phones/tablets (central role devices). If the advert times out before you connect the additional devices you can restart it with the advert
undirected 250 30000 0
command.