在英特尔爱迪生上使用C开发BLE外设

时间:2015-06-16 22:34:13

标签: c bluetooth-lowenergy bluez intel-edison


我正在尝试使用C库在intel-edison中开发蓝牙LE外设。该设备应该能够:

  1. advertise(GAP)
  2. 接受连接(GAP)
  3. 支持自定义GATT服务,只需读取/写入特征值。
  4. 我尝试使用HCI和bluez来实现这一点。展示如何广告和扫描的bluez-experimentsintel-edison-playground可以在爱迪生上编译和运行。 BLE广告和扫描确实有效。

    但我很难弄清楚如何接受连接并支持GATT服务。我尝试搜索关于HCI文档的goolge但没有运气。有人可以提供一段代码(c或伪或描述)吗?

    非常感谢你! 安德鲁

1 个答案:

答案 0 :(得分:1)

如果您下载bluez源代码,您将在/doc/mgmt-api.txt中找到有关hci协议的文档。我自己没有使用hci接口,而且我不确定开发人员是否打算让实现者使用这个接口来实现外围设备,所以我不确定它的效果如何。

我选择了我的项目的DBus API方法,该方法在/doc/gatt-api.txt和/doc/advertising-api.txt中列出。这种方法涉及编写一个程序,该程序创建支持特定org.bluez DBus接口的DBus对象(包含GattCharacteristic1和GattDescriptor1的GattService1)和用于将所有内容暴露给bluez的ObjectManager接口。然后使用LEAdvertisment1定义广告内容并使用适配器上的LEAdvertisingManger1接口注册广告。

我使用Qt来简化DBus通信部分。

Bluez上针对BLE的DBus API仍在大力发展,并不是所有功能都得到支持(例如,我还没有找到启动和停止广告的方法)。 5.31包含许多已添加的支持和一些关于描述符的关键错误修复,但需要更新的内核。