我很难弄清楚如何将我的蓝牙命令(从Gatttool)转换为Bluez c代码。
你能帮我翻译下面的Gatttool命令(蓝牙请求)到c?
[CON] [MY_MAC_ADDRESS] [LE]> char-write-req 0x00c0 0100
所以我的句柄是0x00c0
,我的数据是0100
(打开)。我不知道需要填写哪些hci_request
结构属性(句柄除外)。
... I've successfully connected to the device (LE connection)
struct hci_request rq = {0};
rq.ogf = ??; // should the handle go here?
rq.ocf = ??; // should the data go here
rq.cparam = ??;
rq.clen = ??;
rq.rparam = ??;
rq.rlen = ??;
rq.event = ??; // what would the event be?
hci_send_req(dd, &rq, 1000);
答案 0 :(得分:0)
为什么不使用标准的bluez gatt命令,即
void WriteValue(array{byte} value, dict options)
但是自己结合HCI命令?
但是,如果您真的想要组合HCI命令(这意味着您跳过GATT / ATT / L2CAP级别),则格式为“HCI ACL数据包”,在BlueZ的hci.h中定义为“HCI_ACLDATA_PKT”: 句柄:ACL的连接句柄。 Packet_Boundary_Flag:00/01/10或11取决于您的L2cap包类型。 Broadcast_Flag:基本上是0x00,即没有广播 Data_Total_Length:包的长度。 然后包需要包括L2CAP PDU长度和通道ID(应该是0x0004作为ATT协议),然后附加ATT pdu类型,操作码(写命令)att句柄和数据。