当前位置: 首页 > 工具软件 > btstack > 使用案例 >

韦东山蓝牙学习笔记(7)BTstack框架分析

沈俊明
2023-12-01

 

 

BTstack从操作流程上可以分为如下几部分:

1、发送                                 将用户的指示发送出去

2、接收                                 循环接收和处理从硬件接收的数据

3、处理数据                          涉及到蓝牙协议栈或者自己写的APP的处理

以上三步可以归结为两步,接收和处理

以下两步将循环执行:

1、接收                                包含用户的指示和设备返回的数据

2、处理                                包含将用户的指示发送给蓝牙设备,也可以从收到的数据中记录有用的信息

BTStack支持多操作系统、多接口的硬件

所以从框架上,进入循环之前就应该确定所有的硬件信息。

这意味着,会有多个不同类型的循环,针对不同的系统和不同的硬件接口

prot/windows-winusb/main.c

prot/windows-h4/main.c

port/libusb/main.c

 

 

蓝牙分层如下上下两层

APP

————————————

GAP                                             这4层成为host层             发现设备、连接设备                              每层都可以提供数据处理函数

GATT                                                                                    提供服务,有哪些服务,服务由哪些属性组成    

ATT/SM                                                                                 提供属性及访问方法,GATT把这些属性组合起来构成服务

L2CP                                                                                     标记/识别数据来自哪个channel,转发

_________HCI________

LL                                                   这2层是controller层        确定是广播包还是数据包                     LL和PHY两层代表蓝牙模块

PHY                                                                                       无线收发器,传输、跳频

蓝牙模块通过HCI层将数据传输给上层,上面的四层和APP层,都可以提供数据处理函数

空中的数据格式:

LL层          0x8e89bed6      type        Advertising channel PDU            广播包,头部固定

                  random             LLID        LL control PDU                            数据包,随机数每次配对连接时自动生成

L2CAP       random             LLID(10b,01b)           channel ID (05/06)  signaling packet(code+identifier+length+data)

ATT            random             LLID (10b,01b)          channel ID  (04)       att opcode  att params  auth sig

 

 

 

和之前的解码程序类似,循环中接收和处理数据

prot/windows-winusb/main.c

        platform/windows/btstack_run_loop_windows.c

                     example/le_data_channel_client.c              btstack_main()         这个是app的处理函数

                                   src/ble/sm.c                                        下面四行是btstack的处理函数

                                               src/btstack_crypto.c

                                   src/l2cap.c

                                   src/hci.c

                                                platform/windows/hci_transport_h2_winusb.c

 

 类似资料: