我使用以下命令连接到蓝牙le外围设备:
如果给定的MAC地址存在,我没有问题。
如果给定的MAC地址不存在,则gatttool尝试连接大约40秒,直到gatttool响应为“错误:连接错误:连接拒绝(111)”。
我的问题是,如何以及在何处更改gatttool的40秒连接超时?
发布于 2015-02-08 18:30:12
发布于 2015-02-03 21:56:23
不幸的是,我不认为无论如何都要这样做,除非您想要更改gatttool代码。我以前看过,并可以在代码中看到gatttool执行阻塞套接字"connect“调用。
发布于 2016-05-02 22:54:08
如果您准备更改gatttool代码,则需要在Bluez中的连接套接字上添加超时。
当我编写GattLib以避免阻止重试时,我不得不做同样的解决方法。
您可以在以下提交中看到我的更改:https://github.com/labapart/gattlib/commit/ee58e4cb64af6c698dea1fabb5b6d5e0fc174883
但主要的变化是:
if (setsockopt (sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0) {
fprintf(stderr, "l2cap_connect: Failed to setsockopt for receive timeout.\n");
return -1;
}
if (setsockopt (sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0) {
fprintf(stderr, "l2cap_connect: Failed to setsockopt for sending timeout.\n");
return -1;
}如果您想编写自己的代码,您可能对GattLib示例ble_scan感兴趣。
https://stackoverflow.com/questions/28298980
复制相似问题