/********************************************************************* * @fn zclSample_event_loop * * @brief Event Loop Processor for zclGeneral. * * @param none * * @return none */ uint16 zclSampleSw_event_loop( uint8 task_id, uint16 events ) { afIncomingMSGPacket_t *MSGpkt; (void)task_id; // Intentionally unreferenced parameter if ( events & SYS_EVENT_MSG ) { while ( (MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( zclSampleSw_TaskID )) ) { switch ( MSGpkt->hdr.event ) { case ZCL_INCOMING_MSG: // Incoming ZCL Foundation command/response messages zclSampleSw_ProcessIncomingMsg( (zclIncomingMsg_t *)MSGpkt ); break; case ZDO_CB_MSG: zclSampleSw_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt ); break; case KEY_CHANGE: zclSampleSw_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break; default: break; } // Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); } // return unprocessed events return (events ^ SYS_EVENT_MSG); } if ( events & SAMPLESW_IDENTIFY_TIMEOUT_EVT ) { zclSampleSw_IdentifyTime = 10; zclSampleSw_ProcessIdentifyTimeChange(); return ( events ^ SAMPLESW_IDENTIFY_TIMEOUT_EVT ); } // Discard unknown events return 0; }
/********************************************************************* * @fn zclSample_event_loop * * @brief Event Loop Processor for zclGeneral. * * @param none * * @return none */ uint16 zclSampleSw_event_loop( uint8 task_id, uint16 events ) { afIncomingMSGPacket_t *MSGpkt; (void)task_id; // Intentionally unreferenced parameter if ( events & SYS_EVENT_MSG ) { while ( (MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( zclSampleSw_TaskID )) ) { switch ( MSGpkt->hdr.event ) { #ifdef ZCL_EZMODE case ZDO_CB_MSG: zclSampleSw_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt ); break; #endif case ZCL_INCOMING_MSG: // Incoming ZCL Foundation command/response messages zclSampleSw_ProcessIncomingMsg( (zclIncomingMsg_t *)MSGpkt ); break; case KEY_CHANGE: zclSampleSw_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break; case ZDO_STATE_CHANGE: zclSampleSw_NwkState = (devStates_t)(MSGpkt->hdr.status); // now on the network if ( (zclSampleSw_NwkState == DEV_ZB_COORD) || (zclSampleSw_NwkState == DEV_ROUTER) || (zclSampleSw_NwkState == DEV_END_DEVICE) ) { #ifndef HOLD_AUTO_START giSwScreenMode = SW_MAINMODE; zclSampleSw_LcdDisplayUpdate(); #endif #ifdef ZCL_EZMODE zcl_EZModeAction( EZMODE_ACTION_NETWORK_STARTED, NULL ); #endif } break; #if defined (OTA_CLIENT) && (OTA_CLIENT == TRUE) case ZCL_OTA_CALLBACK_IND: zclSampleSw_ProcessOTAMsgs( (zclOTA_CallbackMsg_t*)MSGpkt ); break; #endif default: break; } // Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); } // return unprocessed events return (events ^ SYS_EVENT_MSG); } if ( events & SAMPLESW_IDENTIFY_TIMEOUT_EVT ) { zclSampleSw_IdentifyTime = 10; zclSampleSw_ProcessIdentifyTimeChange(); return ( events ^ SAMPLESW_IDENTIFY_TIMEOUT_EVT ); } if ( events & SAMPLESW_MAIN_SCREEN_EVT ) { giSwScreenMode = SW_MAINMODE; zclSampleSw_LcdDisplayUpdate(); #ifdef LCD_SUPPORTED HalLcdWriteString( (char *)sClearLine, HAL_LCD_LINE_2 ); #endif return ( events ^ SAMPLESW_MAIN_SCREEN_EVT ); } #ifdef ZCL_EZMODE if ( events & SAMPLESW_EZMODE_NEXTSTATE_EVT ) { zcl_EZModeAction ( EZMODE_ACTION_PROCESS, NULL ); // going on to next state return ( events ^ SAMPLESW_EZMODE_NEXTSTATE_EVT ); } if ( events & SAMPLESW_EZMODE_TIMEOUT_EVT ) { zcl_EZModeAction ( EZMODE_ACTION_TIMED_OUT, NULL ); // EZ-Mode timed out return ( events ^ SAMPLESW_EZMODE_TIMEOUT_EVT ); } #endif // ZLC_EZMODE // Discard unknown events return 0; }