天天看點

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打開工程如下圖:

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

關鍵的資料結構:

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 timerId, void* param);

序列槽回調函數:

static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msg, bool level, void* customizedPara);

proc_main_task的流程圖如下:

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

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

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

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

另外一個重要的函數

static void Callback_Timer(u32 timerId, void* param)

負責注網和電信平台建立網絡連接配接,在測試前要保證BC26子產品在電信平台注冊同時SIM卡沒有欠費。

#define LwM2M_TIMER_ID         TIMER_ID_USER_START

#define LwM2M_TIMER_PERIOD     1000

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

Callback_Timer函數裡用狀态機實作了注網和連接配接平台的過程,具體的流程如下:

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

标題

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

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

繼續閱讀