123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525 |
- #include "ZComDef.h"
- #include "MT.h"
- #include "MT_APP.h"
- #include "MT_DEBUG.h"
- #include "MT_UTIL.h"
- #include "MT_SYS.h"
- #include "OnBoard.h"
- #include "OSAL.h"
- #include "OSAL_Memory.h"
- #include "OSAL_Nv.h"
- #include "DebugTrace.h"
- #include "ZMAC.h"
- #if !defined ( NONWK )
- #include "NLMEDE.h"
- #include "nwk_bufs.h"
- #include "ZDObject.h"
- #include "ssp.h"
- #include "nwk_util.h"
- #include "AF.h"
- #include "MT_SAPI.h"
- #endif
- #if defined( MT_MAC_FUNC ) || defined( MT_MAC_CB_FUNC )
- #include "MT_MAC.h"
- #endif
- #if defined( MT_NWK_FUNC ) || defined( MT_NWK_CB_FUNC )
- #include "MT_NWK.h"
- #include "nwk.h"
- #include "nwk_bufs.h"
- #endif
- #if defined( MT_AF_FUNC ) || defined( MT_AF_CB_FUNC )
- #include "MT_AF.h"
- #endif
- #if defined( MT_USER_TEST_FUNC )
- #include "AF.h"
- #endif
- #if defined( MT_ZDO_FUNC )
- #include "MT_ZDO.h"
- #endif
- #if defined (MT_SAPI_FUNC)
- #include "MT_SAPI.h"
- #endif
- #if defined (MT_OTA_FUNC)
- #include "MT_OTA.h"
- #endif
- #if defined( APP_TP )
- #include "TestProfile.h"
- #endif
- #if defined( APP_TP2 )
- #include "TestProfile2.h"
- #endif
- #if defined(APP_TGEN)
- #include "TrafficGenApp.h"
- #endif
- #if defined(APP_DEBUG)
- #include "DebugApp.h"
- #endif
- #if defined (NWK_TEST)
- #include "HWTTApp.h"
- #endif
- #include "hal_uart.h"
- #include "hal_led.h"
- #include "hal_key.h"
- #include "MT_UART.h"
- mtProcessMsg_t mtProcessIncoming[] =
- {
- NULL,
- #if defined (MT_SYS_FUNC)
- MT_SysCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_MAC_FUNC)
- MT_MacCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_NWK_FUNC)
- MT_NwkCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_AF_FUNC)
- MT_AfCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_ZDO_FUNC)
- MT_ZdoCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_SAPI_FUNC)
- MT_SapiCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_UTIL_FUNC)
- MT_UtilCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_DEBUG_FUNC)
- MT_DebugCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_APP_FUNC)
- MT_AppCommandProcessing,
- #else
- NULL,
- #endif
- #if defined (MT_OTA_FUNC)
- MT_OtaCommandProcessing,
- #else
- NULL,
- #endif
- };
- byte debugThreshold;
- byte debugCompId;
- void MT_MsgQueueInit( void );
- void MT_ResetMsgQueue( void );
- byte MT_QueueMsg( byte *msg , byte len );
- void MT_ProcessQueue( void );
- #if defined ( MT_USER_TEST_FUNC )
- void MT_ProcessAppUserCmd( byte *pData );
- #endif
- void MT_Init(void)
- {
- #if defined (MT_ZDO_FUNC)
- MT_ZdoInit();
- #endif
- MT_SysResetInd();
- }
- void MT_BuildSPIMsg( uint8 cmdType, uint8 cmdId, byte *msg, byte dataLen, byte *pData )
- {
-
- *msg++ = dataLen;
- *msg++ = cmdType;
- *msg++ = cmdId;
-
- if ( pData )
- {
- osal_memcpy( msg, pData, dataLen );
- }
- }
- void MT_BuildAndSendZToolResponse(uint8 cmdType, uint8 cmdId, uint8 dataLen, uint8 *pData)
- {
- uint8 *msg_ptr;
-
- msg_ptr = MT_TransportAlloc((mtRpcCmdType_t)(cmdType & 0xE0), dataLen);
- if (msg_ptr)
- {
-
- MT_BuildSPIMsg(cmdType, cmdId, msg_ptr, dataLen, pData);
-
- MT_TransportSend(msg_ptr);
- }
- }
- void MT_ProcessIncoming(uint8 *pBuf)
- {
- mtProcessMsg_t func;
- uint8 rsp[MT_RPC_FRAME_HDR_SZ];
-
- rsp[1] = pBuf[MT_RPC_POS_CMD0];
- rsp[2] = pBuf[MT_RPC_POS_CMD1];
-
- if (pBuf[MT_RPC_POS_LEN] > MT_RPC_DATA_MAX)
- {
- rsp[0] = MT_RPC_ERR_LENGTH;
- }
-
- else if ((rsp[1] & MT_RPC_SUBSYSTEM_MASK) < MT_RPC_SYS_MAX)
- {
-
- func = mtProcessIncoming[rsp[1] & MT_RPC_SUBSYSTEM_MASK];
- if (func)
- {
-
- rsp[0] = (*func)(pBuf);
- }
- else
- {
- rsp[0] = MT_RPC_ERR_SUBSYSTEM;
- }
- }
- else
- {
- rsp[0] = MT_RPC_ERR_SUBSYSTEM;
- }
-
- if ((rsp[0] != MT_RPC_SUCCESS) && ((rsp[1] & MT_RPC_CMD_TYPE_MASK) == MT_RPC_CMD_SREQ))
- {
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_RES0), 0,
- MT_RPC_FRAME_HDR_SZ, rsp);
- }
- }
- void MTProcessAppRspMsg( byte *pData, byte len )
- {
-
- MT_BuildAndSendZToolResponse( ((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), MT_APP_RSP, len, pData );
- }
- void MT_ReverseBytes( byte *pData, byte len )
- {
- byte i,j;
- byte temp;
- for ( i = 0, j = len-1; len > 1; len-=2 )
- {
- temp = pData[i];
- pData[i++] = pData[j];
- pData[j--] = temp;
- }
- }
- uint8 *MT_Word2Buf( uint8 *pBuf, uint16 *pWord, uint8 len )
- {
- while ( len-- > 0 )
- {
- *pBuf++ = LO_UINT16( *pWord );
- *pBuf++ = HI_UINT16( *pWord );
- pWord++;
- }
- return pBuf;
- }
- #if !defined(NONWK)
- uint8 MT_BuildEndpointDesc( uint8 *pBuf, void *param )
- {
- uint8 i;
- uint8 ret = ZSuccess;
- endPointDesc_t *epDesc;
- epDesc = (endPointDesc_t *)param;
-
- if ( afFindEndPointDesc( *pBuf ) != NULL )
- {
- ret = ZApsDuplicateEntry;
- }
- else if ( epDesc )
- {
- epDesc->endPoint = *pBuf;
-
- epDesc->latencyReq = noLatencyReqs;
-
- epDesc->simpleDesc = (SimpleDescriptionFormat_t *) osal_mem_alloc(sizeof(SimpleDescriptionFormat_t));
- if (epDesc->simpleDesc)
- {
-
- epDesc->simpleDesc->EndPoint = *pBuf++;
-
- epDesc->simpleDesc->AppProfId = BUILD_UINT16(pBuf[0], pBuf[1]);
- pBuf += sizeof(uint16);
-
- epDesc->simpleDesc->AppDeviceId = BUILD_UINT16(pBuf[0],pBuf[1]);
- pBuf += sizeof(uint16);
-
- epDesc->simpleDesc->AppDevVer = (*pBuf++) & AF_APP_DEV_VER_MASK ;
-
- pBuf++;
-
- epDesc->simpleDesc->AppNumInClusters = *pBuf++;
- if (epDesc->simpleDesc->AppNumInClusters)
- {
- epDesc->simpleDesc->pAppInClusterList = (uint16 *)
- osal_mem_alloc((epDesc->simpleDesc->AppNumInClusters)*sizeof(uint16));
- if ( epDesc->simpleDesc->pAppInClusterList )
- {
- for (i=0; i<(epDesc->simpleDesc->AppNumInClusters); i++)
- {
- epDesc->simpleDesc->pAppInClusterList[i] = BUILD_UINT16(*pBuf, *(pBuf+1));
- pBuf += 2;
- }
- }
- else
- {
- ret = ZMemError;
- }
- }
-
- epDesc->simpleDesc->AppNumOutClusters = *pBuf++;
- if (epDesc->simpleDesc->AppNumOutClusters)
- {
- epDesc->simpleDesc->pAppOutClusterList = (uint16 *)
- osal_mem_alloc((epDesc->simpleDesc->AppNumOutClusters)*sizeof(uint16));
- if (epDesc->simpleDesc->pAppOutClusterList)
- {
- for (i=0; i<(epDesc->simpleDesc->AppNumOutClusters); i++)
- {
- epDesc->simpleDesc->pAppOutClusterList[i] = BUILD_UINT16(*pBuf, *(pBuf+1));
- pBuf += 2;
- }
- }
- else
- {
- ret = ZMemError;
- }
- }
-
- if ( ret == ZMemError )
- {
- if (epDesc->simpleDesc->pAppInClusterList)
- {
- osal_mem_free(epDesc->simpleDesc->pAppInClusterList);
- }
- if (epDesc->simpleDesc->AppNumOutClusters)
- {
- osal_mem_free(epDesc->simpleDesc->pAppOutClusterList);
- }
- osal_mem_free(epDesc->simpleDesc);
- }
- }
- else
- {
- ret = ZMemError;
- }
- }
- return ret;
- }
- #endif
|