BC26 OPEN開發之--LWM2M連接分析

翔神教你學NB

BC26 OPEN開發之--LWM2M連接分析

前言:

    NB-IOT商用已經2年多了,三大運營商都建設了大量的NB網絡,尤其以中國電信最爲積極,各個模組廠家推出了大量的NB模組,移遠的NB模組的出貨量佔了絕大數。BC26作爲移遠推出的第一款支持open開發的模組獲得了大量的應用,爲什麼?價格優勢在那呢。筆者利用這款模組開發了不下10款產品,其中一款產品3個月出貨達到了40K.不多說了,下來就聊聊BC26的open開發之LWM2M。

         爲什麼是LMM2M啊? 因爲中國電信開發平臺支持LWM2M.同時電信的NB網絡覆蓋最廣。

試驗準備:

BC26 OPEN開發一套:

如果沒有的可以點擊:

https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.35eb4831eGzhta&id=601354111610

筆者年初做的一款BC26開發板,價格相當於白送就收個模塊錢。有的就繼續往下看。

編譯工具一個:

筆者用的是VS CODE 爲什麼用這個邊用先賣個關子。

VS CODE打開工程如下圖:

關鍵的數據結構:

typedef enum{

    STATE_NW_QUERY_STATE,

    STATE_LwM2M_SERV,

    STATE_LwM2M_CONF,

    STATE_LwM2M_ADDOBJ,

    STATE_LwM2M_OPEN,

    STATE_LwM2M_UPDATE,

    STATE_LwM2M_CFG,

    STATE_LwM2M_SEND,

    //STATE_LwM2M_RD,

    STATE_LwM2M_CLOSE,

    STATE_LwM2M_DELETE,

    STATE_TOTAL_NUM

}Enum_ONENETSTATE;

static u8 m_lwm2m_state = STATE_NW_QUERY_STATE;

這個枚舉類型裏定義了,LWM2M的重要狀態。並對變量進行了初始化。

主任務:

void proc_main_task(s32 taskId)

定時器回調函數:

static void Callback_Timer(u32 timerIdvoidparam);

串口回調函數:

static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msgbool levelvoidcustomizedPara);

 

proc_main_task的流程圖如下:

URC處理是該任務的重點處理流程如下:

 

 

proc_main_task中在while(1)的死循環中來獲取模塊底層上報的URC消息,根據URC消息進行不通的處理。

 

另外一個重要的函數

static void Callback_Timer(u32 timerId, void* param)

負責注網和電信平臺建立網絡連接,在測試前要保證BC26模塊在電信平臺註冊同時SIM卡沒有欠費。

/*****************************************************************

* LwM2M  timer param

******************************************************************/

#define LwM2M_TIMER_ID         TIMER_ID_USER_START

#define LwM2M_TIMER_PERIOD     1000

 

每一個TIMER需要一個ID編號,上面定義了ID和週期,該定時器1S執行一次。

 

Callback_Timer函數裏用狀態機實現了注網和連接平臺的過程,具體的流程如下:

標題

到這LWM2M的流程就講完了,看下代碼執行結果把:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章