The application ID and channel are determined here. The initialization process is described in the vProcessEvCore() function.
voidcbAppColdStart(bool_t bAfterAhiInit) {if (!bAfterAhiInit) { // before AHI init, very first of code.// Register modulesToCoNet_REG_MOD_ALL(); } else {// TWELITE NET configurationsToCoNet_AppContext.u32AppId =0x12345678;sToCoNet_AppContext.u8Channel =18;sToCoNet_AppContext.bRxOnIdle =TRUE;// Register user PRSEV.ToCoNet_Event_Register_State_Machine(vProcessEvCore); }}
cbToCoNet_vNwkEvent()
The parent machine processes the E_EVENT_TOCONET_NWK_START message.
voidcbToCoNet_vNwkEvent(teEvent eEvent, uint32 u32arg) {switch (eEvent) {case E_EVENT_TOCONET_NWK_START:// send this event to the local event machine.ToCoNet_Event_Process(eEvent, u32arg, vProcessEvCore);break;default:break; }}
cbToCoNet_vRxEvent()
The receiving method is much the same as for simple nets. There is a difference in the tsRxDataApp structure.
On E_EVENT_START_UP when the system starts, sets the tsToCoNet_NwkLyTr_Config structure, executes the ToCoNet_NwkLyTr_psConfig() function, initializes the network with the ToCoNet_Nwk_bInit() function and starts the network with the ToCoNet_Nwk_bStart() function.
The E_EVENT_TOCONET_NWK_START event is received after the network starts.
static tsToCoNet_NwkLyTr_Config sNwkLayerTreeConfig;static tsToCoNet_Nwk_Context* pContextNwk;staticvoidvProcessEvCore(tsEvent *pEv, teEvent eEvent, uint32 u32evarg) {switch (pEv->eState) {case E_STATE_IDLE:if (eEvent == E_EVENT_START_UP) {V_PRINTF(LB"[E_STATE_IDLE]");// Configure the NetworksNwkLayerTreeConfig.u8Layer =0;sNwkLayerTreeConfig.u8Role = TOCONET_NWK_ROLE_PARENT; pContextNwk =ToCoNet_NwkLyTr_psConfig(&sNwkLayerTreeConfig);if (pContextNwk) {ToCoNet_Nwk_bInit(pContextNwk);ToCoNet_Nwk_bStart(pContextNwk); } } elseif (eEvent == E_EVENT_TOCONET_NWK_START) {// Transition to the RUNNING state with a START event// * Transmission from cbToCoNet_vNwkEvent()ToCoNet_Event_SetState(pEv, E_STATE_RUNNING); } else { ; }break;case E_STATE_RUNNING:if (eEvent == E_EVENT_NEW_STATE) {V_PRINTF(LB"[E_STATE_RUNNING]"); } else { ; // DO SOMETHING ELSE! }break;default:break; }}