在作者之前发表的《全球最低功耗蓝牙单芯片DA14580的系统架构和应用开发框架分析》、《全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗》、《全球最低功耗蓝牙单芯片DA14580的软件体系-RW内核和消息处理机制》三篇文章分析了DA14580的SDK开发目录结构、硬件架构、低功耗、RW内核和消息处理机制。本篇文章将深入到具体的源码去分析DA14580平台的软件层次架构和具体的BLE消息处理过程,以此佐证前面发表的文章。
一、软件层次架构
1.1 BLE协议栈
从中,我们可以看到,BLE协议栈可以大致分为应用层、profile服务层、BLE Host层(软件实现)、BLE controller层(硬件实现,属于基带部分),实际上硬件物理层还有射频层radio,即将基带信息调制到2.4G进行发射或者进行解调。
BLE host实现数据适配L2CAP、链路管理GAP、基础属性协议ATT,GATT是基于ATT进行封装并向上层提供接口服务,以让用户更方便地使用ATT来进行数据交互。他们都分别对应RW内核的一个或者多个task,例如GAP包括GAP管理和GAP控制两个task。
Profile层是基于GATT来向应用层提供数据通信服务的,每个profile都负责自己的专有的服务功能。例如,有电池服务、设备信息服务和自定义的一些profile等等。
GATT是负责基础的数据通信,而profile则是在GATT的基础上进行数据的本地处理。例如,GATT收到对方的写请求时会通知profile,由profile来决定怎么处理接收到的数据,可以写到属性字段中,也可以不写,profile也可以进一