Tech Talks Blog: Bluetooth Software Structure – APIs and State Machines
06/176/2020 | 01:11 AM
In this Tech Talks session, Field Applications Engineer, Claudio Filho, describes the basics of Silicon Labs' Bluetooth LE Software structure as well as procedures for configuring the stack. Click here to watch the entire presentation and register now for future sessions. Highlights from Claudio's session are below.
Bluetooth LE Software Features
Our Bluetooth LE software stack is 5.2-compliant, featuring dynamic transmission power control, the direction finding capabilities of Bluetooth 5.1, and standard features of Bluetooth 5.0 and 4.0. It is packed with functionality such as simultaneous advertising and scanning and is optimized for low-power consumption with the ability to go into sleep mode when inactive.
The software stack can be used to create standalone Bluetooth applications for Wireless Gecko SoCs or modules or alternatively, network co-processor (NCP) applications. With the SoC model, which is the focus of this Tech Talk, the SoC is at the heart of the application, such as for wearable devices or smart lighting.
Project Structure
The software stack is built on top of the EFR32 platform and includes the following components:
Gecko bootloader – distributed as source; has its own project structure.
Bluetooth stack and RAIL libraries – stack is distributed as a binary file; RAIL enables multiprotocol.
Application libraries – emlib and emdrv libraries are used by the stack but can also be used by the application. Examples are available on our GitHub page.
Application Build Flow
The first step to configuring the Bluetooth LE software stack for your application is to open an empty SoC example project from the Simplicity Studio IDE. From here, you will have access to the Visual GATT Editor, a graphical tool for defining the GATT and generating gatt_db.c and gatt_db.h files.
With the GATT configurator, you can start with any pre-defined Bluetooth SIG profiles and drag-and-drop them into the configurator window. Adjustable settings allow you to customize the Bluetooth SIG services, characteristics and descriptors as needed. You can also import GATT data from external XML files.
A compiler will combine the GATT generated database files with your own application source code and begin building your project. Compiling the project generates an object file, which is then linked with the pre-compiled libraries provided in the SDK. The output of the linking is a flash image that can be programmed for production. You can also generate GBL files for enabling over-the-air (OTA) updates if needed.
Configuring Hardware and the BLE Stack
Two important files for configuring hardware within the empty SoC structure are:
hal-config.h file – enables board features.
hal-config-board.h file – enables hardware.
These files enable code re-use among different components and peripherals. A forthcoming UI will allow you to generate these files automatically.
The Bluetooth LE stack configuration is managed within the main.c file. From this file, you can customize several parameters of our stack. The file is pre-programmed for low-power management.
Our stacks are event-driven, and events can be blocking or non-blocking. All stack events are handled at App.c.
Support
Visit docs.silabs.com for supporting documentation including application notes, reference manuals, and user guides. Our GitHub pages include library and peripheral examples. For more information about our Bluetooth LE software stack solutions, contact your Silicon Labs sales representative.
Tech Talks Blog: Bluetooth Software Structure – APIs and State Machines
In this Tech Talks session, Field Applications Engineer, Claudio Filho, describes the basics of Silicon Labs' Bluetooth LE Software structure as well as procedures for configuring the stack. Click here to watch the entire presentation and register now for future sessions. Highlights from Claudio's session are below.
Bluetooth LE Software Features
Our Bluetooth LE software stack is 5.2-compliant, featuring dynamic transmission power control, the direction finding capabilities of Bluetooth 5.1, and standard features of Bluetooth 5.0 and 4.0. It is packed with functionality such as simultaneous advertising and scanning and is optimized for low-power consumption with the ability to go into sleep mode when inactive.
The software stack can be used to create standalone Bluetooth applications for Wireless Gecko SoCs or modules or alternatively, network co-processor (NCP) applications. With the SoC model, which is the focus of this Tech Talk, the SoC is at the heart of the application, such as for wearable devices or smart lighting.
Project Structure
The software stack is built on top of the EFR32 platform and includes the following components:
Application Build Flow
The first step to configuring the Bluetooth LE software stack for your application is to open an empty SoC example project from the Simplicity Studio IDE. From here, you will have access to the Visual GATT Editor, a graphical tool for defining the GATT and generating gatt_db.c and gatt_db.h files.
With the GATT configurator, you can start with any pre-defined Bluetooth SIG profiles and drag-and-drop them into the configurator window. Adjustable settings allow you to customize the Bluetooth SIG services, characteristics and descriptors as needed. You can also import GATT data from external XML files.
A compiler will combine the GATT generated database files with your own application source code and begin building your project. Compiling the project generates an object file, which is then linked with the pre-compiled libraries provided in the SDK. The output of the linking is a flash image that can be programmed for production. You can also generate GBL files for enabling over-the-air (OTA) updates if needed.
Configuring Hardware and the BLE Stack
Two important files for configuring hardware within the empty SoC structure are:
These files enable code re-use among different components and peripherals. A forthcoming UI will allow you to generate these files automatically.
The Bluetooth LE stack configuration is managed within the main.c file. From this file, you can customize several parameters of our stack. The file is pre-programmed for low-power management.
Our stacks are event-driven, and events can be blocking or non-blocking. All stack events are handled at App.c.
Support
Visit docs.silabs.com for supporting documentation including application notes, reference manuals, and user guides. Our GitHub pages include library and peripheral examples. For more information about our Bluetooth LE software stack solutions, contact your Silicon Labs sales representative.