我有一个BLE SoC (QN9021)通过UART接口连接到linux系统(beagle bone运行openwrt)。我希望linux能够识别与系统连接的BLE,并且像gatttool, hcitool这样的命令应该可以与我的BLE一起工作。
此外,我正在使用Bluez,我希望BlueZ库能够找到我的BLE并直接与其通信。
看起来bluez中的源文件使用socket()函数调用来与蓝牙适配器通信。我已经发布了包含套接字调用的hcitool.c源文件的一节:
/* Open HCI device.
* Returns device descriptor (dd). */
int hci_open_dev(int dev_id)
{
struct sockaddr_hci a;
int dd, err;
/* Check for valid device id */
if (dev_id < 0) {
errno = ENODEV;
return -1;
}
/* Create HCI socket */
dd = socket(AF_BLUETOOTH, SOCK_RAW | SOCK_CLOEXEC, BTPROTO_HCI);
if (dd < 0)
return dd;
/* Bind socket to the HCI device */
memset(&a, 0, sizeof(a));
a.hci_family = AF_BLUETOOTH;
a.hci_dev = dev_id;
if (bind(dd, (struct sockaddr *) &a, sizeof(a)) < 0)
goto failed;
return dd;
failed:
err = errno;
close(dd);
errno = err;
return -1;
}如前所述,我将通过通用异步收发器连接BLE。如何让我的BLE识别为蓝牙,并像socket()这样的函数调用应该打开我的BLE的描述符?
https://stackoverflow.com/questions/41479580
复制相似问题