Basic Operations¶
BLE Application Structure¶
The SimpleLink Wi-Fi Software Development Kit offers an easy way to begin BLE development with the use of the Nimble Host interface.
The Nimble Host interface is the connection between user application code and the NimBLE stack, this allows developers to control and
contain all aspects of BLE development inside one file, nimble_host.c. In this interface the developer can control the GATT Server
and all event callbacks.
The following section will explain how to use basic BLE functionality through the Nimble Host interface.
Initialization¶
Before any BLE functionality can be done you must first run
Wlan_Start(WlanEventHandlerCB_t eventHandlerCB)
This command found in the wifi_stack.lib library, loads the containers (FW, bootloader and configuration binaries) from the NVMEM and programs them to the MAC layer.
This step should be the first, otherwise there will be no communication with the device.
Next you will need to enable BLE as it is not by default. To do so run
ctrlCmdFw_EnableBLECmd(void)
Once BLE is enabled, the next step would be to initialize and sync the Nimble Host Stack with the following functionality
nimble_host_start(void)
This function will create the transport layer and the task that handles events from the Nimble stack.
Advertising¶
To begin advertising on the CC35xx the following commands should be run
nimble_host_ext_adv_cfg(ExtAdvCfg_t *pAdvCfg)
This function will configure the advertising parameters specified in the ExtAdvCfg struct
ExtAdvCfg
* instance;
* legacy;
* interval_ms;
* prim_phy;
* sec_phy;
After setting the parameters, you will then need to run
nimble_host_ext_adv_enable(ExtAdvEnable_t *pAdvEnb)
This function will enable advertising in accordance to the given parameters
ExtAdvEnable
* enable;
* instance;
* duration;
* max_events;
Scanning¶
Similarly to advertising, you will need to configure scan parameters then enable scanning. The following function should be run to configure a scan
nimble_host_ext_scan_cfg(ExtScanCfg_t *pScanCfg)
The parameters are
ExtScanCfg
* scan_interval_ms;
* scan_window_ms;
* own_address_type;
* filter_policy;
* scan_type;
* scan_phy;
Once the parameters are set, scanning can be enabled
nimble_host_ext_scan_enable(ExtScanEnable_t *pScanEnb)
This function will enable a scanning instance that lasts as long as specified.
ExtScanEnable
* duration;
* uint16 period;
* uint8 enable;
* uint8 filter_duplicate;
When scanning is completed the following BLE_GAP_EVENT_DISC_COMPLETE event callback will be triggered.
Connecting and Pairing¶
To initialize a connection you will need to know the bluetooth address (bd_addr) and address type of the device you want to connect to, this information is received when scanning for devices.
The following function is used to start a connection request
nimble_host_ext_connect(uint8_t* bd_addr, uint8_t addr_type)
Pairing is currently done automatically after connecting, this can be removed by changing the behavior in the BLE_GAP_EVENT_CONNECT GAP callback.
To disconnect from a device the following function must be ctrlCmdFw_EnableBLECmd
nimble_host_ext_disconnect(uint8_t* bd_addr, uint8_t addr_type)
Note
If you do not input any bd_addr, the device will disconnect from all parameters