2015-06-16 32 views
2


我想用C庫開發一個intel-edison的藍牙LE外設。該裝置應能:在intel edison上開發使用C上的BLE外設

  1. 做廣告(GAP)
  2. 接受連接(GAP)
  3. 支持自定義GATT服務,僅僅是閱讀的特徵/寫入值。

我嘗試使用HCI和bluez來實現此目的。演示如何進行廣告和掃描的bluez-experiments,intel-edison-playground可以編譯並在愛迪生上運行。 BLE廣告和掃描工作。

但我很難弄清楚如何接受連接並支持GATT服務。我嘗試搜索關於HCI文檔的goolge,但沒有運氣。有人可以提供一段代碼(c或僞或描述)嗎?

非常感謝!
Andrew

+1

問題要求我們推薦或找到一本書,工具,軟件庫,教程或其他非現場資源,因爲它們傾向於吸引自以爲是的答案和垃圾郵件,所以不適合Stack Overflow。相反,請描述問題以及到目前爲止解決問題所做的工作。 – Olaf

+0

@Olaf,好的,我改變了我的問題。請讓我知道如果它仍然有問題。 – yzandrew

+0

問題是這是問答網站,而不是編碼服務。如果你的代碼有特定的問題,你可能會顯示它。否則,問題可能會被關閉。你應該知道4年以上。 – Olaf

回答

1

如果您下載bluez源文件,您可以在/doc/mgmt-api.txt中找到有關hci協議的文檔。我自己並沒有使用hci接口,我也不確定開發人員是否打算讓實現者使用這個接口來實現外設,所以我不確定這將會如何。

我對我的項目採用了DBus API方法,該方法在/doc/gatt-api.txt和/doc/advertising-api.txt中概述。這種方法涉及編寫一個程序,該程序創建支持特定org.bluez DBus接口(包含GattCharacteristic1和GattDescriptor1的GattService1)和ObjectManager接口的DBus對象,以將所有內容暴露給bluez。然後使用LEAdvertisment1來定義廣告內容,並使用適配器上的LEAdvertisingManger1接口註冊廣告。

我用Qt來簡化DBus通信部分。

bluez上BLE的DBus API仍處於大發展中,並不是所有功能都支持(例如,我還沒有找到啓動和停止廣告的方法)。 5.31包含很多爲描述符添加了支持和一些關鍵錯誤修復,但需要更新的內核。

+0

非常感謝你的信息。我現在試圖使用dbus API而不是使用hci。 – yzandrew