1、Zigbee工程啟動(dòng)流程解析
初始化流程:main() -> osal_init_system() -> osalInitTasks() -> GenericApp_Init()
事件流程 : main() -> osal_start_system() -> (tasksArr[idx])( idx, events ) -> GenericApp_ProcessEvent()
2、GenericApp_ProcessEvent()中
if ( events & SYS_EVENT_MSG ):SYS_EVENT_MSG是協(xié)議棧已經(jīng)定義好的系統事件
if ( events & GENERICAPP_SEND_MSG_EVT ):GENERICAPP_SEND_MSG_EVT就是用戶(hù)自定義的事件
事件號是一個(gè)16bit的常量,使用獨熱碼(one-hot code)編碼,方便進(jìn)行event的提取,這樣一個(gè)task中最多可以有16個(gè)event,SYS_EVENT_MSG已經(jīng)占用了0x8000,故自定義的事件只能有16個(gè)。事件提取events & GENERICAPP_SEND_MSG_EVT,事件清除events ^ GENERICAPP_SEND_MSG_EVT。
用戶(hù)可以自定義系統事件的消息范圍為0xE0~0xFF
3、
AF_INCOMING_MSG_CMD:當模塊接收到屬于自己的無(wú)線(xiàn)數據信息時(shí)就會(huì )觸發(fā)消息
ZDO_STATE_CHANGE:當網(wǎng)絡(luò )狀態(tài)改變時(shí)就會(huì )觸發(fā)此消息
4、
osal_start_timerEx( GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT,GENERICAPP_SEND_MSG_TIMEOUT )
osal_start_timerEx()的作用是啟動(dòng)一系統定時(shí)器,當其溢出(GENERICAPP_SEND_MSG_TIMEOUT)時(shí),會(huì )觸發(fā)task(GenericApp_TaskID)的事件(GENERICAPP_SEND_MSG_EVT)。
聯(lián)系客服