# AIROC™ Bluetooth® Host Stack solution (for FreeRTOS)
Overview
AIROC™ Bluetooth® host stack solution includes Bluetooth® stack library,
Bluetooth® controller firmware and platform/os porting layer. Bluetooth® stack library
is designed for embedded device, it consumes less RAM/ROM usage but still keeps
high performance. With AIROC™ Bluetooth® API set, application developers can use them
easily to create their own application. The porting layer is implemented by CYHAL and CY_RTOS_AL
(Hardware/Operation System Adaptation Layer), hence it can adapt to Cypress platforms, and easy to
port to other vendor's platform.
Working flow
~ release-v1.3.0
- Porting layer create 2 tasks
- HCI task which handles HCI packet transmission and reception
- BTU/BT task which handles Bluetooth® core stack and profiles
- TX path:
- Bluetooth® stack calls pf_write_xxx_to_lower( ) with packet data
- Inside those functions,
- Allocate memory from porting layer heap for the TX packet
- Put TX packet into HCI task queue
- HCI task gets TX packet from the queue then write the same to HCI UART
- RX path:
- UART driver fires the interrupt when data was coming from Bluetooth® controller
- In IRQ handler, put the related message to HCI task queue
- Once HCI task gets the message,
- Allocate memory from porting layer heap, read the packet from UART and write the same to the allocated memory
- Put RX packet into Bluetooth® task queue.
- Bluetooth® task gets RX packet then calls wiced_bt_process_xxx() to notify Bluetooth® stack
since release-v2.0.0
- Porting layer create 2 tasks
- HCI_TX task which handles HCI packet from Bluetooth® stack to Bluetooth® controller
- HCI_RX task which handles HCI packet from Bluetooth® controller to Bluetooth® stack
- TX path:
- Bluetooth® stack calls pf_write_xxx_to_lower() with packet data
- Inside those functions,
- Allocate memory from porting layer heap for the TX packet
- Put TX packet into HCI_TX task queue
- HCI_TX task gets TX packet from the queue then write the same to HCI UART
- RX path:
- UART driver fires the interrupt when data was coming from Bluetooth® controller
- In IRQ handler, put the related message to HCI_RX task queue
- Once HCI_RX task gets the message,
- Read the packet from UART and write the same to the static buffer
- Call wiced_bt_process_xxx() to notify Bluetooth® stack
API Reference Manual
© Infineon Technologies, 2022.