首先,如何来确定什么样的包为Command/Event Packet呢?
我们知道,通过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