TI CC254x Bluetooth Low Energy Software Developer’s Guide SWRU271B Version 1.2
2.4 Projects
The SimpleBLEPeripheral project consists of sample code that demonstrates a very simple
application in the single-device configuration. It can be used as a reference for developing a slave
/ peripheral application.
The SimpleBLECentral project is similar, in that it demonstrates a simple master / central
application in the single-device configuration, and can be used as a reference for developing
master / central applications.
The HostTestRelease project is used to build the BLE network processor software for the
CC2540/41. It contains configurations for both master and slave roles.
Several other sample projects are included in the BLE development kit, implementing various
profiles and demo applications. More information on these projects can be found in [5]
3 Software Overview
Software developed using the BLE development kit consists of five major sections: the OSAL,
HAL, the BLE Protocol Stack, profiles, and the application. The BLE protocol stack is provided as
object code, while the OSAL and HAL code is provided as full source. In addition, three GAP
profiles (peripheral role, central role, and peripheral bond manager) are provided, as well as
several sample GATT profiles and applications.
All path and file references in this document assume that the BLE development kit software has
been installed to the default path: C:\Texas Instruments\BLE-CC254X-1.2\.
In this section, the SimpleBLEPeripheral project will be used as a reference; however all of the
BLE projects included in the development kit will have a similar structure.
3.1 Operating System Abstraction Layer (OSAL)
The BLE
protocol stack, the profiles, and all applications are all built around the Operating System
Abstraction Layer (OSAL). The OSAL is not an actual operating system (OS) in the traditional
sense, but rather a control loop that allows software to setup the execution of events. For each
layer of software that requires this type of control, a task identifier (ID) must be created, a task
initialization routine must be defined and added to the OSAL initialization, and an event
processing routine must be defined. Optionally, a message processing routine may be defined as
well. Several layers of the BLE stack, for example, are OSAL tasks, with the LL being the highest
priority (since it has very strict timing requirements).
In addition to task management, the OSAL provides additional services such as message
passing, memory management, and timers. All OSAL code is provided as full source.
Note: The OSAL is capable of providing many more services than are covered in this guide,
including message management, timer management, and more; however for many applications
this level of depth is not required. This guide should serve as an introduction to the basic
framework of the OSAL.
Additional information on the OSAL can be found in [1]:
3.1.1 Task Initialization
In ord
er to use the OSAL, at the end of the main function there should be a call to
osal_start_system. This is the OSAL routine that starts the system, and which will call the
osalInitTasks function that is defined by the application. In the SimpleBLEPeripheral project, this
function can be found in the file OSAL_SimpleBLEPeripheral.c.
Each layer of software that is using the OSAL must have an initialization routine that is called from
the function osalInitTasks. Within this function, the initialization routine for every layer of software
is called. As each task initialization routine is called, an 8-bit “task ID” value is assigned to the
task. Note that when creating an application, it is very important that it be added to the end of the
list, such that it has a higher task ID than the others. This is because the priority of tasks is
determined by the task ID, with a lower value meaning higher priority. It is important that the
protocol stack tasks have the highest priority in order to function properly. Such is the case with
Page 9 of 49
Copyright © 2010-2012 Texas Instruments, Inc