蓝牙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连接请求参数
连接时间间隔 从机延时 监视超时