天天看點

EFR32網關擷取節點資訊代碼流程

前言

用了Z3GatewayHost 做協調器網關,裝置入網要經曆幾個階段

  • 裝置請求入網(Beacon Request、Association Request、Data Request)
  • 進入網絡後網關配置設定短位址(Association Response)
  • 網關發出Active Endpoints Request
  • 網關發出 Simple Descriptor Request

通過以上指令,可以擷取到入網節點資訊,比如短位址、裝置endpoint等

一般添加裝置時,會發現網關SDK做了處理,自動會發送 Active Endpoints Request 和 Simple Descriptor Request,不需要使用者去處理,就SDK這部分做下介紹、記錄

這個SDK的總體架構是while(1)循環中處理多個event事件,而每一個event其實是一個隊列,用來記錄不同的事件詳情

入網過程中的裝置屬性發現,就是一個Device Discovery的隊列,定義在了device-table-discovery.c檔案中

新加入的節點會走到下面函數,并且state 為 DEVICE_DISCOVERY_STATE_ENDPOINTS_SEND

EFR32網關擷取節點資訊代碼流程

推到隊列之後,主循環會周遊到這個“事件”,由下面這個EventHandler去處理

EFR32網關擷取節點資訊代碼流程

可以看到接下來會去發出Active Endpoints Request,那麼什麼時候會發出Simple Descriptor Request呢?答案是Active Endpoints Response 做應答時,随後發出

EFR32網關擷取節點資訊代碼流程

這個“事件”最終會在這個主Event Handler處理函數中執行

EFR32網關擷取節點資訊代碼流程

至此,擷取資訊的指令都已發出,我們拿到了加入網絡的裝置節點資訊

繼續閱讀