123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- #include "ZComDef.h"
- #include "MT_TASK.h"
- #include "MT.h"
- #include "MT_DEBUG.h"
- #include "MT_UART.h"
- #include "MT_UTIL.h"
- #include "MT_SYS.h"
- #if !defined( NONWK )
- #include "MT_ZDO.h"
- #include "MT_AF.h"
- #endif
- #include "hal_uart.h"
- #include "OSAL_Memory.h"
- static void MT_ProcessIncomingCommand( mtOSALSerialData_t *msg );
- uint8 MT_TaskID;
- void MT_TaskInit(uint8 task_id)
- {
- MT_TaskID = task_id;
-
- MT_UartInit();
-
- MT_UartRegisterTaskID(task_id);
- osal_set_event(task_id, MT_SECONDARY_INIT_EVENT);
- }
- UINT16 MT_ProcessEvent(uint8 task_id, uint16 events)
- {
-
- if ( events & SYS_EVENT_MSG )
- {
- uint8 *msg_ptr = osal_msg_receive(task_id);
- if (msg_ptr != NULL)
- {
- MT_ProcessIncomingCommand((mtOSALSerialData_t *)msg_ptr);
- osal_msg_deallocate(msg_ptr);
- }
-
- return (events ^ SYS_EVENT_MSG);
- }
- if ( events & MT_SECONDARY_INIT_EVENT )
- {
- MT_Init();
-
- return (events ^ MT_SECONDARY_INIT_EVENT);
- }
- if ( events & MT_ZTOOL_SERIAL_RCV_BUFFER_FULL )
- {
-
- return (events ^ MT_ZTOOL_SERIAL_RCV_BUFFER_FULL);
- }
- #if !defined( NONWK )
- if ( events & MT_AF_EXEC_EVT )
- {
- MT_AfExec();
- return (events ^ MT_AF_EXEC_EVT);
- }
- #endif
-
- #if defined MT_SYS_FUNC
- if ( events & (MT_SYS_OSAL_EVENT_MASK))
- {
- if (events & MT_SYS_OSAL_EVENT_0)
- {
- MT_SysOsalTimerExpired(0x00);
- events ^= MT_SYS_OSAL_EVENT_0;
- }
- if (events & MT_SYS_OSAL_EVENT_1)
- {
- MT_SysOsalTimerExpired(0x01);
- events ^= MT_SYS_OSAL_EVENT_1;
- }
- if (events & MT_SYS_OSAL_EVENT_2)
- {
- MT_SysOsalTimerExpired(0x02);
- events ^= MT_SYS_OSAL_EVENT_2;
- }
- if (events & MT_SYS_OSAL_EVENT_3)
- {
- MT_SysOsalTimerExpired(0x03);
- events ^= MT_SYS_OSAL_EVENT_3;
- }
- return events;
- }
- #endif
-
- return 0;
- }
- static void MT_ProcessIncomingCommand( mtOSALSerialData_t *msg )
- {
- uint8 len, *msg_ptr = msg->msg;
-
- switch ( msg->hdr.event )
- {
- case CMD_SERIAL_MSG:
- MT_ProcessIncoming(msg_ptr);
- break;
- case CMD_DEBUG_MSG:
- MT_ProcessDebugMsg( (mtDebugMsg_t *)msg );
- break;
- case CB_FUNC:
-
-
- len = SPI_0DATA_MSG_LEN + msg_ptr[DATALEN_FIELD];
-
- msg_ptr[len-1] = MT_UartCalcFCS(msg_ptr + 1, (uint8)(len-2));
- #ifdef MT_UART_DEFAULT_PORT
- HalUARTWrite ( MT_UART_DEFAULT_PORT, msg_ptr, len );
- #endif
- break;
- case CMD_DEBUG_STR:
- MT_ProcessDebugStr( (mtDebugStr_t *)msg );
- break;
- #if !defined ( NONWK )
- case MT_SYS_APP_RSP_MSG:
- len = SPI_0DATA_MSG_LEN + msg_ptr[DATALEN_FIELD];
- MTProcessAppRspMsg( msg_ptr, len );
- break;
- #endif
- #if defined (MT_UTIL_FUNC)
- #if defined ZCL_KEY_ESTABLISH
- case ZCL_KEY_ESTABLISH_IND:
- MT_UtilKeyEstablishInd((keyEstablishmentInd_t *)msg);
- break;
- #endif
- #endif
- #ifdef MT_ZDO_CB_FUNC
- case ZDO_STATE_CHANGE:
- MT_ZdoStateChangeCB((osal_event_hdr_t *)msg);
- break;
- #endif
- default:
- break;
- }
- }
- #ifdef MT_TASK
- uint8 *MT_TransportAlloc(uint8 cmd0, uint8 len)
- {
- uint8 *p;
- (void)cmd0;
-
- p = osal_msg_allocate(len + SPI_0DATA_MSG_LEN);
- if (p)
- {
- p++;
- return p;
- }
- else
- {
- return NULL;
- }
- }
- void MT_TransportSend(uint8 *pBuf)
- {
- uint8 *msgPtr;
- uint8 dataLen = pBuf[0];
-
- msgPtr = pBuf-1;
-
- msgPtr[0] = MT_UART_SOF;
-
- msgPtr[SPI_0DATA_MSG_LEN - 1 + dataLen] = MT_UartCalcFCS (pBuf, (3 + dataLen));
-
- #ifdef MT_UART_DEFAULT_PORT
- HalUARTWrite(MT_UART_DEFAULT_PORT, msgPtr, dataLen + SPI_0DATA_MSG_LEN);
- #endif
-
- osal_msg_deallocate(msgPtr);
- }
- #endif
|