7

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

私がリクエストせずに作成され、すべてが切断され始めます。

BT パケット ログ

4

1 に答える 1

0

ログによると、デバイスが制限付き接続モードにあることは非常に明確であり、30 秒以内にアクティブのままになります。デバイス設定を変更して、一般的に検出可能にします。

kBluetoothL2CAPPSMSDP 0x0001

ビット 13 を意味します - 限定検出可能モード

Bluetooth設定で遊ぶと問題が解決します

于 2015-07-08T04:20:20.417 に答える