2016-07-23 13 views
0

Bluetoothコマンド(Gatttoolから)をBluezのcコードに変換する方法を理解するのが難しいです。Gatttoolコマンド/リクエストをBluezに翻訳するc

次のGatttoolコマンド(ブルートゥースリクエスト)をcに変換するのに役立ちますか?

[CON] [MY_MAC_ADDRESS] [LE]>チャーライト-REQ 0x00c0 0100

だから、私のハンドルは0x00c0であり、私のデータは0100(オン)です。私はどのくらいhci_request構造体のプロパティを(ハンドルを除いて)する必要があるかわからない。ヨーヨーはすなわち

void WriteValue(array{byte} value, dict options) 

標準のbluezガットコマンドを使用しますが、HCIコマンドを自分で組み合わせていないのはなぜ

... 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

実際にHCIコマンド(GATT/ATT/L2CAPレベルをスキップすることを意味します)を組み合わせたい場合は、hci.hのBlueZ: で "HCI ACLデータパケット"と定義されていますハンドル:あなたのACLの接続ハンドル。 Packet_Boundary_Flag:00/01/10または11は、L2capパッケージの種類によって異なります。 Broadcast_Flag:基本的には0x00です。つまり、ブロードキャストしません。 Data_Total_Length:パッケージの長さです。 パッケージには、L2CAP PDUの長さとチャネルID(ATTプロトコルとして0x0004にする必要があります)が必要です。次に、ATT pduタイプ、opcode(書き込みコマンド)attハンドルおよびデータを追加します。

+0

"hci_send_req"コマンドを使用したい場合は、このコマンドは制御または設定の目的で使用され、HCIデータパッケージの書き込みには使用されません。例えばローカル名を読むときは、rq.ogf = OGF_HOST_CTLを使用しています。 \t rq.ocf = OCF_READ_LOCAL_NAME; \t rq.rparam = &rp; //レスポンス形式 \t rq.rlen = READ_LOCAL_NAME_RP_SIZE; –