一点见解
1、看源码要对源码整体有个大概的抽象,对总体有一定的把握
2、看源码需要对各个文件作用有所了解
application
相当与应用层可以调用的接口
ble_svc_ans.c
ble_svc_gap.c
ble_svc_***.c 上面这些是应用层的一些服务,可以理解为对外暴漏的接口
host层文件作用
host层的
ble_att.c 对应BLE协议栈中的ATT
ble_att_clt.c ATT,至于clt不知道什么缩写
ble_att_cmd.c ATT,command 使用的方法
ble_att_svr.c ATT,Service,该文件中有详细介绍
ble_gap.c 对应BLE协议栈中的GAP
ble_gattc.c 对应BLE协议栈中的GATT client
ble_gatts.c GATT,service
ble_gatt_lcl.c GATT,local GATT database
ble_l2cap.c 对应BLE协议栈中的l2cap协议
。。。。。。。
ble_sm.c 对应BLE中的sm协议
。。。。。。。
ble_hs.c host层的一些总处理,上面的ATT、GAP、GATT等这些对应BLE
协议栈的每层,对所有的肯定得有个对host层操作的吧
ble_hs_hci.c 对应HCI通信协议。
ble_svc_ans.c
ble_svc_gap.c
ble_svc_***.c 上面这些是应用层的一些服务,可以理解为对外暴漏的接口
controller层
controller层,其中基带射频由芯片radio完成,只需要对radio配置即可
ble_ll.c 对应BLE协议栈中的LL协议
ble_phy.c 相当于物理层(射频基带这块),对radio(射频)的一些配置,以及接发数据包的操作
ble_hw.c 一些硬件操作
总结
大概就是这些了,总体的文件结构很清晰