123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492 |
- /***************************************************************************************************
- Filename: MT_APP.c
- Revised: $Date: 2011-05-27 16:00:27 -0700 (Fri, 27 May 2011) $
- Revision: $Revision: 26145 $
- Description: MonitorTest processing for APP commands
- Copyright 2007-2011 Texas Instruments Incorporated. All rights reserved.
- IMPORTANT: Your use of this Software is limited to those specific rights
- granted under the terms of a software license agreement between the user
- who downloaded the software, his/her employer (which must be your employer)
- and Texas Instruments Incorporated (the "License"). You may not use this
- Software unless you agree to abide by the terms of the License. The License
- limits your use, and you acknowledge, that the Software may not be modified,
- copied or distributed unless embedded on a Texas Instruments microcontroller
- or used solely and exclusively in conjunction with a Texas Instruments radio
- frequency transceiver, which is integrated into your product. Other than for
- the foregoing purpose, you may not use, reproduce, copy, prepare derivative
- works of, modify, distribute, perform, display or sell this Software and/or
- its documentation for any purpose.
- YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
- PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
- NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
- TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
- NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
- LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
- INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
- OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
- OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
- (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
- Should you have any questions regarding your right to use this Software,
- contact Texas Instruments Incorporated at www.TI.com.
- ***************************************************************************************************/
- /***************************************************************************************************
- * INCLUDES
- ***************************************************************************************************/
- #include "ZComDef.h"
- #include "MT.h" /* This is here because all the SPI_CMD_XXX are defined in this header */
- #include "MT_APP.h"
- #include "MT_AF.h" /* This is here because this MT_APP makes some routine call to AF */
- #include "MT_RPC.h"
- #if defined( APP_TP )
- #include "TestProfile.h"
- #endif
- #if defined( APP_TP2 )
- #include "TestProfile2.h"
- #include "nwk_util.h"
- #endif
- /***************************************************************************************************
- * LOCAL FUNCTIONS
- ***************************************************************************************************/
- #if defined (MT_APP_FUNC)
- void MT_AppMsg(uint8 *pBuf);
- void MT_AppUserCmd(byte *pData);
- #endif
- #if defined (MT_APP_FUNC)
- /***************************************************************************************************
- * @fn MT_AppCommandProcessing
- *
- * @brief Process all the APP commands that are issued by test tool
- *
- * @param pBuf - pointer to the received buffer
- *
- * @return status
- ***************************************************************************************************/
- uint8 MT_AppCommandProcessing(uint8 *pBuf)
- {
- uint8 status = MT_RPC_SUCCESS;
- switch (pBuf[MT_RPC_POS_CMD1])
- {
- case MT_APP_MSG:
- MT_AppMsg(pBuf);
- break;
- case MT_APP_USER_TEST:
- MT_AppUserCmd(pBuf);
- break;
- default:
- status = MT_RPC_ERR_COMMAND_ID;
- break;
- }
- return status;
- }
- /***************************************************************************************************
- * @fn MT_AppMsg
- *
- * @brief Process APP_MSG command
- *
- * @param pBuf - pointer to the received buffer
- *
- * @return void
- ***************************************************************************************************/
- void MT_AppMsg(uint8 *pBuf)
- {
- uint8 retValue = ZFailure;
- uint8 endpoint;
- endPointDesc_t *epDesc;
- mtSysAppMsg_t *msg;
- uint8 cmdId, dataLen;
- /* parse header */
- dataLen = pBuf[MT_RPC_POS_LEN];
- cmdId = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- /* Get the endpoint and skip past it.*/
- endpoint = *pBuf++;
- dataLen--;
- /* Look up the endpoint */
- epDesc = afFindEndPointDesc( endpoint );
- if (epDesc)
- {
- /* Build and send the message to the APP */
- msg = (mtSysAppMsg_t *)osal_msg_allocate(sizeof(mtSysAppMsg_t) + (dataLen));
- if ( msg )
- {
- /* Build and send message up the app */
- msg->hdr.event = MT_SYS_APP_MSG;
- msg->endpoint = endpoint;
- msg->appDataLen = dataLen;
- msg->appData = (uint8*)(msg+1);
- osal_memcpy( msg->appData, pBuf, dataLen);
- osal_msg_send( *(epDesc->task_id), (uint8 *)msg );
- /* Info for response */
- retValue = ZSuccess;
- }
- }
- /* Build and send back the response */
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 1, &retValue);
- }
- /***************************************************************************************************
- * @fn MT_AppMsg
- *
- * @brief Process APP_MSG command
- *
- * @param pBuf - pointer to the received buffer
- *
- * @return void
- ***************************************************************************************************/
- void MT_AppUserCmd(uint8 *pBuf)
- {
- uint8 retValue, cmdId;
- #if defined (APP_TGEN) || defined (NWK_TEST) || defined (APP_TP) || defined (APP_TP2) || defined (OSAL_TOTAL_MEM) || defined (APP_DEBUG)
- uint16 app_cmd;
- uint8 srcEp;
- uint16 param1;
- uint16 param2;
- #endif
- #if defined (OSAL_TOTAL_MEM)
- uint8 pData[2];
- #endif
- /* parse header */
- cmdId = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- retValue = INVALID_TASK; //should be changed later
- #if defined (APP_TGEN) || defined (NWK_TEST) || defined (APP_TP) || defined (APP_TP2) || defined (OSAL_TOTAL_MEM) || defined (APP_DEBUG)
- srcEp = *pBuf++;
- app_cmd = BUILD_UINT16( pBuf[0] , pBuf[1] );
- pBuf = pBuf + sizeof( uint16 );
- param1 = BUILD_UINT16( pBuf[0] , pBuf[1] );
- pBuf = pBuf + sizeof( uint16 );
- param2 = BUILD_UINT16( pBuf[0] , pBuf[1] );
- switch ( app_cmd )
- {
- #if defined (APP_TGEN)
- case TGEN_START:
- TrafficGenApp_SendCmdMSG( param1, param2, TRAFFICGENAPP_CMD_START );
- retValue = ZSUCCESS;
- break;
- case TGEN_STOP:
- TrafficGenApp_SendCmdMSG( param1, param2, TRAFFICGENAPP_CMD_STOP );
- retValue = ZSUCCESS;
- break;
- case TGEN_COUNT:
- retValue = TrafficGenApp_CountPkt( param1, param2 );
- return;
- break;
- #endif
- #if defined (NWK_TEST)
- case HW_TEST:
- HwApp_Start( HI_UINT16(param1), LO_UINT16(param1), HI_UINT16(param2),
- 1000, LO_UINT16(param2), 3, 0 );
- break;
- case HW_DISPLAY_RESULT:
- HwApp_TestInfo();
- break;
- case HW_SEND_STATUS:
- HwApp_SendStats();
- break;
- #endif
- #if defined( APP_TP ) || defined ( APP_TP2 )
- #if defined( APP_TP )
- case TP_SEND_NODATA:
- retValue = TestProfileApp_SendNoData( srcEp, (byte)param1 );
- break;
- #endif // APP_TP
- case TP_SEND_BUFFERTEST:
- retValue = TestProfileApp_SendBufferReq( srcEp, (byte)param1 );
- break;
- #if defined( APP_TP )
- case TP_SEND_UINT8:
- retValue = TestProfileApp_SendUint8( srcEp, (byte)param1 );
- break;
- case TP_SEND_INT8:
- retValue = TestProfileApp_SendInt8( srcEp, (byte)param1 );
- break;
- case TP_SEND_UINT16:
- retValue = TestProfileApp_SendUint16( srcEp, (byte)param1 );
- break;
- case TP_SEND_INT16:
- retValue = TestProfileApp_SendInt16( srcEp, (byte)param1 );
- break;
- case TP_SEND_SEMIPREC:
- retValue = TestProfileApp_SendSemiPrec( srcEp, (byte)param1 );
- break;
- case TP_SEND_FREEFORM:
- retValue = TestProfileApp_SendFreeFormReq( srcEp, (byte)param1 );
- break;
- #else // APP_TP
- case TP_SEND_FREEFORM:
- retValue = TestProfileApp_SendFreeFormReq(srcEp, (byte)param1, (byte)param2);
- break;
- #endif
- #if defined( APP_TP )
- case TP_SEND_ABS_TIME:
- retValue = TestProfileApp_SendAbsTime( srcEp, (byte)param1 );
- break;
- case TP_SEND_REL_TIME:
- retValue = TestProfileApp_SendRelativeTime( srcEp, (byte)param1 );
- break;
- case TP_SEND_CHAR_STRING:
- retValue = TestProfileApp_SendCharString( srcEp, (byte)param1 );
- break;
- case TP_SEND_OCTET_STRING:
- retValue = TestProfileApp_SendOctetString( srcEp, (byte)param1 );
- break;
- #endif // APP_TP
- case TP_SET_DSTADDRESS:
- retValue = TestProfileApp_SetDestAddress(HI_UINT16(param1), LO_UINT16(param1), param2);
- break;
- #if defined( APP_TP2 )
- case TP_SEND_BUFFER_GROUP:
- retValue = TestProfileApp_SendBufferGroup( srcEp, (byte)param1 );
- break;
- #endif // APP_TP
- case TP_SEND_BUFFER:
- retValue = TestProfileApp_SendBuffer( srcEp, (byte)param1 );
- break;
- #if defined( APP_TP )
- case TP_SEND_MULT_KVP_8BIT:
- TestProfileApp_SendMultiKVP_8bit( srcEp, (byte)param1 );
- retValue = ZSuccess;
- break;
- case TP_SEND_MULT_KVP_16BIT:
- TestProfileApp_SendMultiKVP_16bit( srcEp, (byte)param1 );
- retValue = ZSuccess;
- break;
- case TP_SEND_MULT_KVP_TIME:
- TestProfileApp_SendMultiKVP_Time( srcEp, (byte)param1 );
- retValue = ZSuccess;
- break;
- case TP_SEND_MULT_KVP_STRING:
- TestProfileApp_SendMultiKVP_String( srcEp, (byte)param1 );
- retValue = ZSuccess;
- break;
- case TP_SEND_MULTI_KVP_STR_TIME:
- retValue = ZSuccess;
- TestProfileApp_SendMultiKVP_String_Time( srcEp, (byte)param1 );
- break;
- #endif // APP_TP
- case TP_SEND_COUNTED_PKTS:
- TestProfileApp_SendCountedPktsReq(HI_UINT16(param1), LO_UINT16(param1), param2);
- retValue = ZSuccess;
- break;
- case TP_SEND_RESET_COUNTER:
- TestProfileApp_CountedPakts_ResetCounterReq( (byte)param1 );
- retValue = ZSuccess;
- break;
- case TP_SEND_GET_COUNTER:
- TestProfileApp_CountedPakts_GetCounterReq( srcEp, (byte)param1 );
- retValue = ZSuccess;
- break;
- case TP_SET_PERMIT_JOIN:
- if ( ZG_BUILD_RTR_TYPE && ZG_DEVICE_RTR_TYPE )
- {
- NLME_PermitJoiningRequest( (byte)param1 );
- retValue = ZSuccess;
- }
- else
- {
- retValue = ZFailure;
- }
- break;
- #if defined ( APP_TP2 )
- case TP_ADD_GROUP:
- retValue = TestProfileApp_SetGroup( srcEp, param1 );
- break;
- case TP_REMOVE_GROUP:
- retValue = TestProfileApp_RemoveGroup( srcEp, param1 );
- break;
- case TP_SEND_UPDATE_KEY:
- retValue = TestProfileApp_UpdateKey( srcEp, (uint8)param1, param2 );
- break;
- case TP_SEND_SWITCH_KEY:
- retValue = TestProfileApp_SwitchKey( srcEp, (uint8)param1, param2 );
- break;
- case TP_SEND_BUFFERTEST_GROUP:
- retValue = TestProfileApp_SendBufferGroupReq( srcEp, (byte)param1, (byte)param2 );
- break;
- case TP_SEND_ROUTE_DISC_REQ:
- retValue = TestProfileApp_SendRouteDiscReq( srcEp, param1,
- HI_UINT16( param2 ), LO_UINT16( param2 ) );
- break;
- case TP_SEND_ROUTE_DISCOVERY:
- if ( ZG_BUILD_RTR_TYPE && ZG_DEVICE_RTR_TYPE )
- {
- retValue = TestProfileApp_SendRouteDiscovery( param1,
- HI_UINT16( param2 ), LO_UINT16( param2 ) );
- }
- break;
- case TP_SEND_NEW_ADDR:
- retValue = TestProfileApp_ChangeShortAddr( param1, LO_UINT16(param2) );
- break;
- case TP_SEND_NWK_UPDATE:
- /* Send out a Network Update command. */
- retValue = NLME_SendNetworkUpdate( NWK_BROADCAST_SHORTADDR, NWKUPDATE_PANID_UPDATE,
- _NIB.extendedPANID, _NIB.nwkUpdateId+1, param1 );
- break;
- case TP_NWK_ADDR_CONFLICT:
- retValue = NLME_SendNetworkStatus( NWK_BROADCAST_SHORTADDR_DEVZCZR, param1,
- NWKSTAT_ADDRESS_CONFLICT, FALSE );
- break;
- #if (ZG_BUILD_JOINING_TYPE)
- case TP_AK_SETUP_PARTNER:
- retValue = TestProfileApp_AppKeySetupPartner( srcEp, param1, param2 );
- break;
- case TP_AK_REQ_KEY:
- retValue = TestProfileApp_AppKeyRequest( srcEp, param1, param2 );
- break;
- case TP_AK_PARTNER_NWKADDR:
- retValue = TestProfileApp_SetPartnerNwkAddr( srcEp, param1, param2 );
- break;
- case TP_AK_PARTNER_EXTADDR7654:
- retValue = TestProfileApp_SetPartnerExtAddr7654( srcEp, param1, param2 );
- break;
- case TP_AK_PARTNER_EXTADDR3210:
- retValue = TestProfileApp_SetPartnerExtAddr3210( srcEp, param1, param2 );
- break;
- case TP_AK_PARTNER_SET:
- retValue = TestProfileApp_SetPartner( srcEp, param1, param2 );
- break;
- #endif /* ZG_BUILD_JOINING_TYPE */
- #if (ZG_BUILD_COORDINATOR_TYPE)
- case TP_AK_TYPE_SET:
- retValue = TestProfileApp_AppKeyTypeSet( srcEp, param1, param2 );
- break;
- #endif /* ZG_BUILD_COORDINATOR_TYPE */
- #if defined ( ZIGBEE_FRAGMENTATION )
- case TP_FRAG_SKIP_BLOCK:
- retValue = TestProfileApp_FragSkipBlock( (uint8)param1 );
- break;
- #endif
- case TP_APS_REMOVE:
- retValue = TestProfileApp_APSRemove( param1, param2 );
- break;
- #endif // APP_TP2
- #endif // APP_TP || APP_TP2
- #if defined ( OSAL_TOTAL_MEM )
- case OSAL_MEM_STACK_HIGH_WATER:
- case OSAL_MEM_HEAP_HIGH_WATER:
- if ( app_cmd == OSAL_MEM_STACK_HIGH_WATER)
- {
- param1 = osal_stack_used();
- }
- else
- {
- param1 = osal_heap_high_water();
- }
- pData[0] = LO_UINT16( param1 );
- pData[1] = HI_UINT16( param1 );
- MT_BuildAndSendZToolResponse((MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 2, pData);
- return;
- #endif
- #if defined ( APP_DEBUG )
- case DEBUG_GET:
- DebugApp_SendQuery( param1 );
- retValue = ZSUCCESS;
- break;
- #endif
- #if defined ( APP_TP2 )
- case TP_SEND_BCAST_RSP:
- retValue = TestProfileApp_SendBcastRsp( srcEp, (byte)param1 );
- break;
- #endif
- default:
- break;
- }
- #endif // (APP_TGEN) || (NWK_TEST) || (APP_TP) || (APP_TP2) || (OSAL_TOTAL_MEM) || (APP_DEBUG)
- /* Build and send back the response */
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_APP), cmdId, 1, &retValue);
- }
- #endif /* MT_APP_FUNC */
- /***************************************************************************************************
- ***************************************************************************************************/
|