7

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

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

隐藏控制通道可以正常打开。当我尝试创建我的 kBluetoothL2CAPPSMHIDInterrupt 连接时

l2capChannelQueueSpaceAvailable

调用委托方法(不确定这是什么意思),然后

l2capChannelOpenComplete

但连接立即关闭调用

l2capChannel 关闭

如何正确打开这些连接?

我花了很长时间研究 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

我附上了我的数据包日志。很奇怪,请求

k蓝牙L2CAPPSMSDP 0x0001

在没有我要求的情况下制作,然后一切都开始断开连接。

BT 数据包日志

4

1 回答 1

0

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

k蓝牙L2CAPPSMSDP 0x0001

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

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

于 2015-07-08T04:20:20.417 回答