天天看點

鴻蒙裝置發現子產品對libcoap源碼的修改分析

鴻蒙系統的軟總線裝置發現子產品discovery子產品是使用了coap協定,并且是基于libcoap開源庫進行開發,具體使用的是libcoap2.0版本(目前libcoap已更新到3.0)。

使用coap協定主要是考慮到運作HarmonyOS的裝置除了硬體性能較好的手機、電腦等裝置,還有資源受限的物聯網裝置,這些裝置的ram、rom相對較小。coap 協定支援輕量的可靠傳輸,比較适合資源受限的小型嵌入式裝置使用。

discovery 的實作前提是確定發現端裝置與接收端裝置在同一個區域網路内且能互相收到對方的封包。流程為以下三步:

  1. 發現端裝置,使用 coap 協定在區域網路内發送廣播;
  2. 接收端裝置使用 PublishService 接口釋出服務,接收端收到廣播後,發送coap 協定單點傳播給發現端;
  3. 發現端裝置收到回複單點傳播封包,更新裝置資訊。

    但是原生的libcoap不支援廣播,是以要對其源碼進行一些修改,使其可以支援廣播。

    鴻蒙libcoap源碼倉庫:third_party_libcoap

    在代碼主要使用一個宏來做分離:COAP_SUPPORT_SOCKET_BROADCAST

繼續閱讀