HID コマンドを Bluetooth デバイスに送信できるように、L2Cap HID チャネルと割り込みチャネルを開こうとしています。
サービスの広告とデバイスのペアリングをすべて完了し、ベースバンド接続を確立しました。
Hid コントロール チャネルは正常に開きます。kBluetoothL2CAPPSMHIDInterrupt 接続を作成しようとすると
l2capChannelQueueSpaceAvailable
呼び出されたデリゲートメソッド(これが何を意味するのかわかりません)に続いて
l2capChannelOpenComplete
しかし、接続はすぐに閉じます
l2capChannelClosed
これらの接続を正しく開くにはどうすればよいですか?
IOBlueTooth フレームワークと bluetooth.org HID 仕様を掘り下げるのに長い時間を費やしましたが、役立つ情報はほとんどありません (少なくとも見つけることができます)。
L2Cap チャネルをトレースすると、いくつかの null 値が表示されます
mIncomingDataListener
と
mEventDataListener
. これらを設定する方法がわからない、またはそれらが私の問題と関係があるかどうかはわかりません....ただ推測しています。
以下のコード スニペットは、これまでのところ、デバイスへの接続が確立された後に接続を試みたものです。
-(void)establishL2CappConnections:(IOBluetoothDevice*)device
{
IOReturn r;
IOBluetoothL2CAPChannel *ch1;
r = [device openL2CAPChannelSync:&ch1
withPSM:(BluetoothL2CAPPSM)kBluetoothL2CAPPSMHIDControl
delegate:self];
self.mL2CappChannel=ch1;
NSLog(@"r == %i",r);
IOBluetoothL2CAPChannel *ch2;
r = [device openL2CAPChannelSync:&ch2
withPSM:(BluetoothL2CAPPSM)kBluetoothL2CAPPSMHIDInterrupt
delegate:self];
self.mL2CappInterruptChannel=ch2;
NSLog(@"r == %i",r);
}
編集:1
パケット ログを添付しました。変なお願いです
kBluetoothL2CAPPSMSDP 0x0001
私がリクエストせずに作成され、すべてが切断され始めます。