Chr*_*gan 3 bluetooth bluetooth-lowenergy bluez
Linux下的bluez是否可以同时连接多个经典和低功耗设备?bluez网站提供这样的信息并不是很有帮助.
是的,我已经成功连接到7个低能耗设备.最大值取决于您使用的硬件.您也可以连接到多个经典设备.
以下是用于通过L2CAP连接的一些伪/片段CI:
#include <sys/types.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/l2cap.h>
char *bdaddr;
int cid = 0;
int psm = 0;
int bdaddr_type = BDADDR_LE_PUBLIC;
int err;
struct sockaddr_l2 addr;
int sock_fd = socket(AF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP)
memset(&addr, 0, sizeof(addr));
addr.l2_family = sock->sock_family;
str2ba(bdaddr, &addr.l2_bdaddr);
if (cid)
addr.l2_cid = htobs(cid);
else
addr.l2_psm = htobs(psm);
addr.l2_bdaddr_type = bdaddr_type;
err = connect(sock_fd, (struct sockaddr *) &addr, sizeof(addr));
Run Code Online (Sandbox Code Playgroud)
我的代码是C和Python的混合,所以我尝试重构它,所以它只是C部分.一切都取自阅读Bluez源代码,特别是gatttool.
更新: 在处理L2CAP套接字时,版本3.4和之前的Linux内核的bluez代码中存在一个错误.从本质上讲,如果您有多个连接,它会将它们混合起来,以便在最后一次连接时获得所有数据.因此,如果您只进行一次L2CAP连接,我提供的代码将仅适用于内核3.4和先前的代码.
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |