我正在尝试打开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
没有我请求它,然后一切都开始断开连接。
答案 0 :(得分:0)
根据您的日志,非常清楚您的设备处于受限连接模式,其保持活动状态持续30秒或更短时间。更改设备设置以使其可被发现。
kBluetoothL2CAPPSMSDP 0x0001
表示位13 - 有限可发现模式
使用蓝牙设置可以解决您的问题