如何建立L2Capp中断通道连接?

时间:2015-06-30 11:09:00

标签: macos bluetooth iobluetooth l2cap

我正在尝试打开L2Cap HID通道和中断通道,以便将HID命令发送到蓝牙设备。

我完成了所有服务广告和设备配对,并建立了基带连接。

Hid Control频道打开正常。 当我尝试创建我的kBluetoothL2CAPPSMHIDInterrupt连接

  

l2capChannelQueueSpaceAvailable

委托方法调用(不确定这意味着什么)后跟

  

l2capChannelOpenComplete

但是连接立即关闭

  

l2capChannelClosed

如何正确打开这些连接?

我花了很长时间挖掘IOBlueTooth框架和bluetooth.org HID规范,但几乎没有任何有用的信息(我至少可以找到)。

当我追踪我的L2Cap频道时,我看到

的一些空值
  

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 Packet Logs

1 个答案:

答案 0 :(得分:0)

根据您的日志,非常清楚您的设备处于受限连接模式,其保持活动状态持续30秒或更短时间。更改设备设置以使其可被发现。

  

kBluetoothL2CAPPSMSDP 0x0001

表示位13 - 有限可发现模式

使用蓝牙设置可以解决您的问题