访问L2CAP的常用方法是创建一个L2CAP套接字,只需调用connect()
即可连接到您要访问的蓝牙设备。这通常工程完全正常。但是,我试图在一个带有Linux内核3.0的ARM设备上执行此操作,并且似乎存在一个令人讨厌的错误,即如果没有所有数据下来,哪个通道最后创建的通道就无法连接多个L2CAP连接。 (也就是说,如果我连接到2个蓝牙传感器和2个l2cap插座,两个设备的所有通知都会通过最后一个打开的套接字打开,并且没有任何事情先打开套接字。)但是,如果我将过滤器设置在HCI套接字上,我可以看到ACL数据正在通过正确的连接句柄传递,所以我可以在那里正确地获取数据。通过HCI套接字进行L2CAP连接?
所以...我想改变我的代码,只使用HCI套接字。
我的问题是,我不知道如何(或者即使这是可能的)。在HCI中有一个“创建逻辑链接命令”,看起来好像会创建一个L2CAP连接,但这些参数对我来说没有任何意义。在通过LE建立HCI连接后,我得到一个“连接完成事件”,它给了我一个2个八位字节“Connection_Handle”。然而,“创建逻辑链接命令”需要1个八位字节“Physical_Link_Handle”。