访问L2CAP的通常方法是创建一个L2CAP套接字,并在其上调用connect()连接到您想要访问的蓝牙设备。这通常都很好用。但是,我正在使用LinuxKernel3.0在ARM设备上尝试这样做,而且似乎存在一个严重的错误,如果没有最后创建通道的所有数据,您就无法拥有多个L2CAP连接。(也就是说,如果我用两个l2cap套接字连接到两个蓝牙传感器,那么两个设备的所有通知都是最后通过套接字打开的,而套接字首先打开时没有任何消息。)但是,如果我将过滤器设置在HCI套接字上,我可以看到ACL数据是通过适当的连接句柄传递的,因此我可以在那里正确地获取数据。
所以..。我想要更改我的代码,以便只使用HCI套接字。
我的问题是,我不知道怎么做(甚至可能)。在HCI中有一个“创建逻辑链接命令”,看起来它会创建一个L2CAP连接,但是这些参数对我来说没有任何意义。在我通过LE建立HCI连接之后,我得到了一个“连接完整事件”,它给了我一个2八进制的"Connection_Handle“。不过,"create“命令需要一个1八进制的"Physical_Link_Handle”。
发布于 2014-10-09 15:11:37
在BLE中,只要建立连接,就可以使用L2CAP。
你不需要connect或其他任何东西。一旦您接收到LE连接完成事件,您就可以开始通过L2CAP进行通信了。
您提到的其他命令和数据不是LE,它们仅用于BR/EDR。
发布于 2013-10-30 13:39:37
“创建逻辑链接命令”是针对AMP控制器的,与L2CAP无关。使用LE,您可以通过固定通道自动拥有一个“连接”,只需在CID 4上以ACL数据包的形式发送ATT命令。ACL数据包利用从HCI LE连接事件返回的连接句柄。
(请回答#bluez IRC频道的某人,我不记得是谁)
https://stackoverflow.com/questions/19639722
复制相似问题