首 页 行业资讯 新车 试驾评测 养车用车 车型库

如何获取并分析Bluetooth HCI层Command Packet和Event Packet包

发布网友 发布时间:2022-04-22 10:00

我来回答

1个回答

热心网友 时间:2023-10-09 18:25

通过HCI Packet包括四种,即Command,Event,ACL和SCO/eSCO,对应到MS-Stack中的定义,即为COMMAND_PACKET,EVENT_PACKET,DATA_PACKET_ACL和DATA_PACKET_SCO。
如下(详细参照bt_hcip.h):

enum HCI_TYPE {
COMMAND_PACKET = 1,
DATA_PACKET_ACL = 2,
DATA_PACKET_SCO = 3,
EVENT_PACKET = 4,
ETYPE_FINISH = 5
};

需要指出的是COMMAND_PACKET方向是从Host写入到Controller,EVENT_PACKET为Controller发送给Host,即单向的数据。而DATA_PACKET_ACL和DATA_PACKET_SCO为双向的数据,即可以HostàController,也可以ControlleràHost。
接下来看两个与发包和收包相关的函数的定义,如下:

int HCI_WritePacket(HCI_TYPE eType, BD_BUFFER *pBuff)
int HCI_ReadPacket(HCI_TYPE *peType, BD_BUFFER *pBuff)

其第一个参数etype就是用来表示R/W Packet的类型,第二个参数为包的具体数据,通过串口输出我们就可以获取到完整的HCI包的数据。
所以通过在HCI_WritePacket()/HCI_ReadPacket()中对eType值的判断,很容易知道是Command Packet,还是Event Packet。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com