------------------------硬件抽象层
硬件抽象层文件目录
HAL-Common 协议栈 mac和驱动中使用到的相关配置文件
Hal_drivers.c包含所有驱动初始化和事件处理机制,主要有以下四个函数
void Hal_Init( uint8 task_id ) 由osalTaskAdd调用,在osal中注册HAL驱动
void HalDriverInit (void) 由main调用,初始化硬件驱动
uint16 Hal_ProcessEvent( uint8 task_id, uint16 events ) 处理hal相关的驱动事件
void Hal_ProcessPoll ()
HAL-Include 包含 hal驱动和hal相关的头文件
硬件抽象层驱动编译
可以在工程选项中设置需要编译的驱动,
Option-->c/c++compiler->preprocessor选项中设置,如下图
用户自定义驱动
步骤如下:
在HAL目录下的include目录下添加头文件
驱动的实现文件添加到target->>cc2540eb-->>drivers目录下
在target->>cc2540eb-->>config目录下的hal_board_cfg.h中修改硬件驱动配置
配置文件层
分为以下两部分:
GAP角色/安全配置文件
GATT配置文件
通用访问配置文件GAP
分为以下四种角色:
广播者 不可连接的广播设备
观测者 扫描广播,但不发起建立连接
外部设备 可连接的设备 可在单链路层中作为主机
集中器 扫描广播设备并发起连接 在单链路层或多链路层作为主机
一个集中器可以连接三个外设
注:默认的示例只支持外设角色,
可以在编译时添加peripheralBroadcaster.h和peripheralBroadcaster.c文件
排除peripheral.h和peripheral.c
集中器向外部设备发起链接请求,所需参数
边接间隔 两个连接事件之间的时间间隔
从机延迟 设置从机可以跳过若干个连接事件
管理超时 两个成功连接事件之间的最大允许间隔
通用属性配置文件(GATT)
两个设备应用数据的通信就是通过该层实现
建立连接后,设备的两种角色
GATT服务器 为客户端提供数据服务
GATT客户端 从服务器读写应用数据
一个gatt服务器中可以包含一个或多个GATT服务,在simpleBLEPeripheral应用中有三个服务
强制GAP服务 设备和访问信息
强制GATT服务 gatt服务器的信息
SimpleGATTProfile服务 应用数据信息
特性(characteristics) 是服务用到的值,gatt服务器上的属性值保存在表中,每个属性都含有以下属性:
句柄: 在表中的地址
类型: 数据代表的事务,UUID
权限: GATT客户端对属性的访问权限
使用GAP和GATT堆栈API ?????