Host Test

Table of Contents


The host_test project implements a pure Bluetooth low energy network processor for use with an external microcontroller or a PC software application such as BTool (provided with the SDK). Host Test supports all GAP roles: Central, Peripheral, Broadcaster and Observer in addition to multi-role combinations of these roles. A network processor incorporates the TI BLE Host and Controller components of the protocol stack on the wireless MCU with the Bluetooth application residing on the external microcontroller. Communication with the network processor occurs through a serial interface (UART or SPI) using the Host Controller Interface (HCI) protocol. The external application uses TI Vendor Specific HCI commands and a limited subset of Bluetooth LE HCI commands/events to implement a Bluetooth application. By placing the Host and Controller on the wireless MCU, the memory requirements on the application processor are reduced since only the application is required.

Note: It is not possible to use an external Bluetooth Host stack, such as BlueZ, with Host Test since the network processor implements the Host component. External applications must use the TI Vendor Specific HCI commands for implementing GAP, GATT, Pairing/Bonding, etc., functionality.

This project has the following app configurations available:

App Build Configuration Description
Release (default) All TI-RTOS debug features disabled.
The application uses the config file ble_release.cfg and the defines are in host_test.opt.
Debug All TI-RTOS debug features enabled.
The application uses the config file ble_debug.cfg and the defines are in host_test.opt.

All application configurations use the stack library configuration, FlashROM_Library. This build configuration will yield additional flash footprint optimizations by the linker since the application and stack can share contiguous flash pages. This configuration is further discussed in the Stack Library Configuration section of the BLE5-Stack User's Guide provided in the SDK.

The Simple NP (Simple Network Processor) sample application is another project that acts as a network processor. SimpleNP allows the application processor to be responsible for maintaining fewer aspects of the BLE stack. Note, though, that SimpleNP can only function as a peripheral or broadcaster device.

Hardware Prerequisites

The default Host Test board configuration uses the device's LaunchPad development kit. This hardware configuration is shown in the below image:

For custom hardware, see the Running the SDK on Custom Boards section of the BLE5-Stack User's Guide.

Software Prerequisites

For information on what versions of Code Composer Studio and IAR Embedded Workbench to use, see the Release Notes file provided in the SDK. For information on how to import this project into your IDE workspace and build/run, please refer to the device's Platform section in the BLE5-Stack User's Guide.


This application uses the UART peripheral without POWER_SAVING by default to communicate with the host processor. The project also supports UART and SPI interfaces with power management enabled.

If POWER_SAVING is not defined and UART is being used, the MRDY and SRDY pins are defined by default as in the table below. MRDY and SRDY are configurable GPIO pins. They can be changed and set by the application. They are set in npi_config.h. Note that MRDY and SRDY are required to use SPI to allow for full duplex communication, regardless of whether power management is enabled.

The following table includes the default pins for serial communication in this project:

PIN LaunchPad Pins

See the NPI wiki for more information on power management and setting the necessary pins.

Host Test can be used with an external microcontroller or a PC application such as BTool (provided with the SDK) or HCI Tester.

Information on HCI and details and descriptions of available HCI commands can be found in the TI BLE Vendor Specific HCI Guide (provided with the SDK).

Note: Host Test does not automatically respond to Connection Parameter Update Requests and instead allows the application to specify the response parameters. Responses must manually be sent within 40 seconds of reception of the GAP_LinkParamUpdateRequest event (0x0612) using HCI_LERemoteConnectionParameterRequestReply or HCI_LERemoteConnectionParameterRequestNegativeReply. You must do this to avoid a connection timeout. See the log below for an example of handling this request using BTool:

Note: When enabling RF Coexistence from the SysConfig RF driver USE_COEX define should be added to "host_test.opt".

Note: When removing RTLS_CTE define from host_test.opt the "RF Designation" value should be changed to Sensitivity, "RF Designation" can be found at the SysConfig Custom RF module.