藍牙4.0
使用最廣的短距離無線標準之一
重新定義藍牙技術:低功耗
全新的藍牙版本
低功耗藍牙,高速藍牙,傳統藍牙
logo
藍牙4.0與傳統藍牙的關係
通信方式
藍牙低功耗特性
高可靠性
快速連接
低成本,低功耗
傳輸距離
高安全性
OSAL
BLE系統架構
OSAL啓動流程
void osalInitTasks(void)
{
uint8 taskID = 0;
tasksEvents = (uint16 *)osal_mem_alloc(sizeof(uint16) * tasksCnt);
osal_memset(tasksEvents, 0 , (sizeof(uint16) * tasksCnt));
LL_Init(taskID ++);
Hal_Init(taskID ++);
HCI_Init(taskID ++);
}
OSAL工作原理
事件表和函數表
OSAL層API接口
消息管理,任務同步,時間管理,中斷管理,任務管理,內存管理,電源管理,非易失性內存管理
消息管理 API
/*
* 函數原型 uint8 *osal_msg_allocate(uint16 len)
* 功能描述 爲消息分配緩存空間
*/
osal_msg_allocate();
/*
* 函數原型 uint8 osal_msg_deallocate(uint8 *msg_ptr)
* 功能描述 釋放消息的緩存空間
*/
osal_msg_deallocate();
/*
* 函數原型 uint8 osal_msg_send(uint8 des tination_task, uint8 *msg_ptr)
* 功能描述 一個任務發送消息的消息隊列
*/
osal_msg_send();
/*
* 函數原型 uint8 *osal_msg_receive(uint8 task_id)
* 功能描述 一個任務從消息隊列接收屬於自己的消息
*/
osal_msg_receive();
任務同步 API
/*
* 函數原型 uint8 osal_set_event(uint8 task_id,uint16 event_flag)
* 功能描述 運行一個任務設置某一事件
*/
osal_set_event();
時間管理 API
/*
* 函數原型 uint8 osal_start_timerEx(uint8 task_id,uint16 event_id,uint16 timeout_value)
* 功能描述 設置個定時時間,定時時間到後,相應的事件被設置
*/
osal_start_timerEx();
/*
* 函數原型 uint8 osal_stop_timerEx(uint8 task_id,uint16 event_id)
* 功能描述 停止一級啓動的定時器
*/
osal_stop_timerEx();
任務管理API
/*
* 函數原型 uint8 osal_init_system(void)
* 功能描述 初始化 OSAL, 該函數是第一個被調用的OSAL函數
*/
osal_init_system();
/*
* 函數原型
* 功能描述 該函數包含一個無限循環,它將查詢所有的任務事件,如果有事件發生,則執行相應的操作
*/
osal_start_system();
內存管理 API
/*
* 函數原型 void *osal_mem_alloc(uint16 size);
* 功能描述 在堆上分配指定大小的緩衝區
*/
osal_mem_alloc();
/*
* 函數原型 void osal_mem_free(void *ptr)
* 功能描述 釋放使用 osal_mem_allc() 分配的緩衝區
*/
osal_mem_free();
非易失性閃存管理
/*
* 函數原型 byte osal_nv_item_init(uint16 id, uint16 len, void *buf);
* 功能描述 初始化 NV 條目,該函數檢查是否存在 NV 條目,如果不存在,將創建並初始化該條目
* 如果條目存在,每次調用osal_nv_read(),write() 進行讀寫之前,都要先調用該函數
*/
osal_nv_item_init();
/*
* 函數原型 byte osal_nv_read(uint16 id, uint16 offset,uint16, void *buf);
* 功能描述 從 NV 條目中讀取數據,可以讀取整個條目的數據,也可以讀取部分數據
*/
osal_nv_read();
/*
* 函數原型 byte osal_nv_write(uint16 id,uint16 offset, uint 16len,void *buf);
* 功能描述 寫數據到 NV 條目
*/
osal_nv_write();
BLE協議分層
GPA 和 GATT
BLE核心規格
SimpleBLEPeripheral 示例
強制的GAP服務 包含設備信息和訪問信息
強制的GATT服務 包含GATT服務器的信息
SimpleGATTProfile服務 示例配置文件
屬性表
句柄 屬性在表中的地址,每個屬性有唯一的句柄
類型 數據所代表的含義 (universal unique identifier)
權限 GATT客戶端設備對屬性的訪問權限
GATT 服務器和客戶端通信子進程
讀特徵值 使用特徵值的UUID讀 讀多個特徵值 讀特徵描述符 UUID發現特徵值 寫特徵值 寫特徵描述符 特徵值通知
GATT屬性列表類型
GATT_PRIMMARY_SERVICE_UUID 新服務的開始和服務類型
GATT_CHARACTER_UUID 特徵聲明
GATT_CLIENT_CHAR_CFG_UUID 特徵描述符
GATT_CHAR_USER_DESC_UUID 特徵描述符
基於GATT的藍牙配置文件和服務
GAP的角色
廣播者 觀察者 外部設備 集中器
GAP連接請求參數
連接時間間隔 從機延時 監視超時