1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087 |
- #include "ZComDef.h"
- #include "MT.h"
- #include "MT_SYS.h"
- #include "MT_VERSION.h"
- #include "nwk_util.h"
- #include "OSAL.h"
- #include "OSAL_NV.h"
- #include "Onboard.h"
- #include "hal_adc.h"
- #include "ZGlobals.h"
- #include "OSAL_Clock.h"
- #include "mac_low_level.h"
- #define MT_SYS_DEVICE_INFO_RESPONSE_LEN 14
- #define MT_NV_ITEM_MAX_LENGTH 250
- #if !defined HAL_GPIO || !HAL_GPIO
- #define GPIO_DIR_IN(IDX)
- #define GPIO_DIR_OUT(IDX)
- #define GPIO_TRI(IDX)
- #define GPIO_PULL_UP(IDX)
- #define GPIO_PULL_DN(IDX)
- #define GPIO_SET(IDX)
- #define GPIO_CLR(IDX)
- #define GPIO_TOG(IDX)
- #define GPIO_GET(IDX) 0
- #define GPIO_HiD_SET() (val = 0)
- #define GPIO_HiD_CLR() (val = 0)
- #endif
- #if !defined MT_SYS_OSAL_NV_READ_CERTIFICATE_DATA
- #define MT_SYS_OSAL_NV_READ_CERTIFICATE_DATA FALSE
- #endif
- const uint16 MT_SysOsalEventId [] = {
- MT_SYS_OSAL_EVENT_0,
- MT_SYS_OSAL_EVENT_1,
- MT_SYS_OSAL_EVENT_2,
- MT_SYS_OSAL_EVENT_3
- };
- typedef enum {
- GPIO_DIR,
- GPIO_TRI,
- GPIO_SET,
- GPIO_CLR,
- GPIO_TOG,
- GPIO_GET,
- GPIO_HiD = 0x12
- } GPIO_Op_t;
- #if defined (MT_SYS_FUNC)
- void MT_SysReset(uint8 *pBuf);
- void MT_SysPing(void);
- void MT_SysVersion(void);
- void MT_SysSetExtAddr(uint8 *pBuf);
- void MT_SysGetExtAddr(void);
- void MT_SysOsalNVItemInit(uint8 *pBuf);
- void MT_SysOsalNVDelete(uint8 *pBuf);
- void MT_SysOsalNVLength(uint8 *pBuf);
- void MT_SysOsalNVRead(uint8 *pBuf);
- void MT_SysOsalNVWrite(uint8 *pBuf);
- void MT_SysOsalStartTimer(uint8 *pBuf);
- void MT_SysOsalStopTimer(uint8 *pBuf);
- void MT_SysRandom(void);
- void MT_SysAdcRead(uint8 *pBuf);
- void MT_SysGpio(uint8 *pBuf);
- void MT_SysStackTune(uint8 *pBuf);
- void MT_SysGetDeviceInfo(uint8 *pBuf);
- void MT_SysSetUtcTime(uint8 *pBuf);
- void MT_SysGetUtcTime(void);
- void MT_SysSetTxPower(uint8 *pBuf);
- #endif
- #if defined (MT_SYS_FUNC)
- uint8 MT_SysCommandProcessing(uint8 *pBuf)
- {
- uint8 status = MT_RPC_SUCCESS;
- switch (pBuf[MT_RPC_POS_CMD1])
- {
- case MT_SYS_RESET_REQ:
- MT_SysReset(pBuf);
- break;
- case MT_SYS_PING:
- MT_SysPing();
- break;
- case MT_SYS_VERSION:
- MT_SysVersion();
- break;
- case MT_SYS_SET_EXTADDR:
- MT_SysSetExtAddr(pBuf);
- break;
- case MT_SYS_GET_EXTADDR:
- MT_SysGetExtAddr();
- break;
- #if !defined(CC253X_MACNP)
- case MT_SYS_OSAL_NV_DELETE:
- MT_SysOsalNVDelete(pBuf);
- break;
- case MT_SYS_OSAL_NV_ITEM_INIT:
- MT_SysOsalNVItemInit(pBuf);
- break;
- case MT_SYS_OSAL_NV_LENGTH:
- MT_SysOsalNVLength(pBuf);
- break;
- case MT_SYS_OSAL_NV_READ:
- MT_SysOsalNVRead(pBuf);
- break;
- case MT_SYS_OSAL_NV_WRITE:
- MT_SysOsalNVWrite(pBuf);
- break;
- #endif
- case MT_SYS_OSAL_START_TIMER:
- MT_SysOsalStartTimer(pBuf);
- break;
- case MT_SYS_OSAL_STOP_TIMER:
- MT_SysOsalStopTimer(pBuf);
- break;
- case MT_SYS_RANDOM:
- MT_SysRandom();
- break;
- case MT_SYS_ADC_READ:
- MT_SysAdcRead(pBuf);
- break;
- case MT_SYS_GPIO:
- MT_SysGpio(pBuf);
- break;
- case MT_SYS_STACK_TUNE:
- MT_SysStackTune(pBuf);
- break;
- case MT_SYS_SET_TIME:
- MT_SysSetUtcTime(pBuf);
- break;
- case MT_SYS_GET_TIME:
- MT_SysGetUtcTime();
- break;
- case MT_SYS_SET_TX_POWER:
- MT_SysSetTxPower(pBuf);
- break;
- default:
- status = MT_RPC_ERR_COMMAND_ID;
- break;
- }
- return status;
- }
- void MT_SysReset(uint8 *pBuf)
- {
- if (pBuf[MT_RPC_POS_DAT0] == 0)
- {
- SystemReset();
- }
- #if !(defined(HAL_BOARD_F2618) || defined(HAL_BOARD_F5438) || defined(HAL_BOARD_LM3S))
- else
- {
- SystemResetSoft();
- }
- #endif
- }
- void MT_SysPing(void)
- {
- uint16 tmp16;
- uint8 retArray[2];
-
- tmp16 = MT_CAP_SYS | MT_CAP_MAC | MT_CAP_NWK | MT_CAP_AF | MT_CAP_ZDO |
- MT_CAP_SAPI | MT_CAP_UTIL | MT_CAP_DEBUG | MT_CAP_APP | MT_CAP_ZOAD;
-
- retArray[0] = LO_UINT16( tmp16 );
- retArray[1] = HI_UINT16( tmp16 );
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), MT_SYS_PING,
- sizeof (tmp16), retArray );
- }
- void MT_SysVersion(void)
- {
- byte *verStr = (byte *)MTVersionString;
- uint8 respLen = sizeof(MTVersionString);
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), MT_SYS_VERSION,
- respLen, verStr);
- }
- void MT_SysSetExtAddr(uint8 *pBuf)
- {
- uint8 retValue = ZFailure;
- uint8 cmdId;
-
- cmdId = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- if ( ZMacSetReq(ZMacExtAddr, pBuf) == ZMacSuccess )
- {
- #if !defined(CC253X_MACNP)
- retValue = osal_nv_write(ZCD_NV_EXTADDR, 0, Z_EXTADDR_LEN, pBuf);
- #endif
- }
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), cmdId, 1, &retValue);
- }
- void MT_SysGetExtAddr(void)
- {
- uint8 extAddr[Z_EXTADDR_LEN];
- ZMacGetReq( ZMacExtAddr, extAddr );
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), MT_SYS_GET_EXTADDR,
- Z_EXTADDR_LEN, extAddr);
- }
- void MT_SysOsalNVRead(uint8 *pBuf)
- {
- uint16 nvId;
- uint8 nvItemLen=0, nvItemOffset=0;
- uint8 *pRetBuf=NULL;
- uint8 respLen;
-
- pBuf += MT_RPC_FRAME_HDR_SZ;
-
- nvId = BUILD_UINT16(pBuf[0], pBuf[1]);
-
- nvItemOffset = pBuf[2];
- #if !MT_SYS_OSAL_NV_READ_CERTIFICATE_DATA
- if ((ZCD_NV_IMPLICIT_CERTIFICATE == nvId) ||
- (ZCD_NV_CA_PUBLIC_KEY == nvId) ||
- (ZCD_NV_DEVICE_PRIVATE_KEY == nvId))
- {
- uint8 tmp[2] = { INVALIDPARAMETER, 0 };
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_OSAL_NV_READ, 2, tmp);
- return;
- }
- #endif
- #if !MT_SYS_KEY_MANAGEMENT
- if ( (nvId == ZCD_NV_NWK_ACTIVE_KEY_INFO) ||
- (nvId == ZCD_NV_NWK_ALTERN_KEY_INFO) ||
- ((nvId >= ZCD_NV_TCLK_TABLE_START) && (nvId <= ZCD_NV_TCLK_TABLE_END)) ||
- ((nvId >= ZCD_NV_APS_LINK_KEY_DATA_START) && (nvId <= ZCD_NV_APS_LINK_KEY_DATA_END)) ||
- ((nvId >= ZCD_NV_MASTER_KEY_DATA_START) && (nvId <= ZCD_NV_MASTER_KEY_DATA_END)) ||
- (nvId == ZCD_NV_PRECFGKEY) )
- {
- uint8 tmp1[2] = { INVALIDPARAMETER, 0 };
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_OSAL_NV_READ, 2, tmp1);
- return;
- }
- #endif
- nvItemLen = osal_nv_item_len(nvId);
-
- if (nvItemLen > MT_NV_ITEM_MAX_LENGTH)
- {
- nvItemLen = MT_NV_ITEM_MAX_LENGTH;
- }
- if ((nvItemLen > 0) && ((nvItemLen - nvItemOffset) > 0))
- {
- respLen = nvItemLen - nvItemOffset + 2;
- }
- else
- {
- respLen = 2;
- }
- pRetBuf = osal_mem_alloc(respLen);
- if (pRetBuf != NULL)
- {
- osal_memset(pRetBuf, 0, respLen);
-
- pRetBuf[0] = ZFailure;
- if (respLen > 2)
- {
- if (((osal_nv_read( nvId, (uint16)nvItemOffset, (uint16)nvItemLen, &pRetBuf[2])) == ZSUCCESS) && (respLen > 2))
- {
- pRetBuf[0] = ZSuccess;
- }
- pRetBuf[1] = nvItemLen - nvItemOffset;
- }
- else
- {
- pRetBuf[1] = 0;
- }
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_OSAL_NV_READ, respLen, pRetBuf );
- osal_mem_free(pRetBuf);
- }
- }
- void MT_SysOsalNVWrite(uint8 *pBuf)
- {
- uint16 nvId;
- uint8 nvItemLen=0, nvItemOffset=0;
- uint8 rtrn;
-
- pBuf += MT_RPC_FRAME_HDR_SZ;
-
- nvId = BUILD_UINT16(pBuf[0], pBuf[1]);
-
- nvItemOffset = pBuf[2];
-
- nvItemLen = pBuf[3];
- pBuf += 4;
-
- rtrn = ZFailure;
-
- zgSetItem( nvId, (uint16)nvItemLen, pBuf );
- if ((osal_nv_write(nvId, (uint16)nvItemOffset, (uint16)nvItemLen, pBuf)) == ZSUCCESS)
- {
- if (nvId == ZCD_NV_EXTADDR)
- {
- rtrn = ZMacSetReq(ZMacExtAddr, pBuf);
- }
- else
- {
- rtrn = ZSuccess;
- }
- }
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_OSAL_NV_WRITE, 1, &rtrn);
- }
- void MT_SysOsalNVItemInit(uint8 *pBuf)
- {
- uint8 ret;
- uint8 idLen;
- uint16 nvId;
- uint16 nvLen;
-
- pBuf += MT_RPC_FRAME_HDR_SZ;
-
- nvId = BUILD_UINT16(pBuf[0], pBuf[1]);
-
- nvLen = BUILD_UINT16(pBuf[2], pBuf[3]);
-
- idLen = pBuf[4];
- pBuf += 5;
- if ( idLen < nvLen )
- {
-
- ret = osal_nv_item_init( nvId, nvLen, NULL );
- if ( (ret == NV_ITEM_UNINIT) && (idLen > 0) )
- {
-
- (void) osal_nv_write( nvId, 0, (uint16)idLen, pBuf );
- }
- }
- else
- {
-
- ret = osal_nv_item_init( nvId, nvLen, pBuf );
- }
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_OSAL_NV_ITEM_INIT, 1, &ret);
- }
- void MT_SysOsalNVDelete(uint8 *pBuf)
- {
- uint16 nvId;
- uint16 nvLen;
- uint8 ret;
-
- pBuf += MT_RPC_FRAME_HDR_SZ;
-
- nvId = BUILD_UINT16(pBuf[0], pBuf[1]);
-
- nvLen = BUILD_UINT16(pBuf[2], pBuf[3]);
-
- ret = osal_nv_delete( nvId, nvLen );
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_OSAL_NV_DELETE, 1, &ret);
- }
- void MT_SysOsalNVLength(uint8 *pBuf)
- {
- uint16 nvId;
- uint16 nvLen;
- uint8 rsp[2];
-
- pBuf += MT_RPC_FRAME_HDR_SZ;
-
- nvId = BUILD_UINT16(pBuf[0], pBuf[1]);
-
- nvLen = osal_nv_item_len( nvId );
- rsp[0] = LO_UINT16( nvLen );
- rsp[1] = HI_UINT16( nvLen );
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_OSAL_NV_LENGTH, 2, rsp);
- }
- void MT_SysOsalStartTimer(uint8 *pBuf)
- {
- uint16 eventId;
- uint8 retValue = ZFailure;
- uint8 cmdId;
-
- cmdId = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- if (*pBuf <= 3)
- {
- eventId = (uint16) MT_SysOsalEventId[*pBuf];
- retValue = osal_start_timerEx(MT_TaskID, eventId, BUILD_UINT16(pBuf[1], pBuf[2]));
- }
- else
- {
- retValue = ZInvalidParameter;
- }
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), cmdId, 1, &retValue);
- }
- void MT_SysOsalStopTimer(uint8 *pBuf)
- {
- uint16 eventId;
- uint8 retValue = ZFailure;
- uint8 cmdId;
-
- cmdId = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- if (*pBuf <= 3)
- {
- eventId = (uint16) MT_SysOsalEventId[*pBuf];
- retValue = osal_stop_timerEx(MT_TaskID, eventId);
- }
- else
- {
- retValue = ZInvalidParameter;
- }
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), cmdId, 1, &retValue );
- }
- void MT_SysRandom()
- {
- uint16 randValue = Onboard_rand();
- uint8 retArray[2];
- retArray[0] = LO_UINT16(randValue);
- retArray[1] = HI_UINT16(randValue);
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), MT_SYS_RANDOM, 2, retArray );
- }
- void MT_SysAdcRead(uint8 *pBuf)
- {
- #ifndef HAL_BOARD_LM3S
- uint8 channel, resolution;
- uint16 tempValue;
- uint8 retArray[2];
- uint8 cmdId;
-
- cmdId = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
-
- channel = *pBuf++;
-
- resolution = *pBuf++;
-
- switch (channel)
- {
-
- case HAL_ADC_CHANNEL_0:
- case HAL_ADC_CHANNEL_1:
- case HAL_ADC_CHANNEL_2:
- case HAL_ADC_CHANNEL_3:
- case HAL_ADC_CHANNEL_4:
- case HAL_ADC_CHANNEL_5:
- case HAL_ADC_CHANNEL_6:
- case HAL_ADC_CHANNEL_7:
- tempValue = HalAdcRead(channel, resolution);
- break;
-
- case(HAL_ADC_CHANNEL_TEMP):
- tempValue = HalAdcRead(HAL_ADC_CHANNEL_TEMP, HAL_ADC_RESOLUTION_14);
- break;
-
- case(HAL_ADC_CHANNEL_VDD):
- tempValue = HalAdcRead(HAL_ADC_CHANNEL_VDD, HAL_ADC_RESOLUTION_14);
- break;
-
- default:
- tempValue = 0x00;
- break;
- }
- retArray[0] = LO_UINT16(tempValue);
- retArray[1] = HI_UINT16(tempValue);
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), cmdId, 2, retArray);
- #endif
- }
- void MT_SysGpio(uint8 *pBuf)
- {
- uint8 cmd, val;
- GPIO_Op_t op;
- cmd = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- op = (GPIO_Op_t)(*pBuf++);
- val = *pBuf;
- switch (op)
- {
- case GPIO_DIR:
- if (val & BV(0)) {GPIO_DIR_OUT(0);} else {GPIO_DIR_IN(0);}
- if (val & BV(1)) {GPIO_DIR_OUT(1);} else {GPIO_DIR_IN(1);}
- if (val & BV(2)) {GPIO_DIR_OUT(2);} else {GPIO_DIR_IN(2);}
- if (val & BV(3)) {GPIO_DIR_OUT(3);} else {GPIO_DIR_IN(3);}
- break;
- case GPIO_TRI:
- if(val & BV(0)) {GPIO_TRI(0);} else if(val & BV(4)) {GPIO_PULL_DN(0);} else {GPIO_PULL_UP(0);}
- if(val & BV(1)) {GPIO_TRI(1);} else if(val & BV(5)) {GPIO_PULL_DN(1);} else {GPIO_PULL_UP(1);}
- if(val & BV(2)) {GPIO_TRI(2);} else if(val & BV(6)) {GPIO_PULL_DN(2);} else {GPIO_PULL_UP(2);}
- if(val & BV(3)) {GPIO_TRI(3);} else if(val & BV(7)) {GPIO_PULL_DN(3);} else {GPIO_PULL_UP(3);}
- break;
- case GPIO_SET:
- if (val & BV(0)) {GPIO_SET(0);}
- if (val & BV(1)) {GPIO_SET(1);}
- if (val & BV(2)) {GPIO_SET(2);}
- if (val & BV(3)) {GPIO_SET(3);}
- break;
- case GPIO_CLR:
- if (val & BV(0)) {GPIO_CLR(0);}
- if (val & BV(1)) {GPIO_CLR(1);}
- if (val & BV(2)) {GPIO_CLR(2);}
- if (val & BV(3)) {GPIO_CLR(3);}
- break;
- case GPIO_TOG:
- if (val & BV(0)) {GPIO_TOG(0);}
- if (val & BV(1)) {GPIO_TOG(1);}
- if (val & BV(2)) {GPIO_TOG(2);}
- if (val & BV(3)) {GPIO_TOG(3);}
- break;
- case GPIO_GET:
- break;
- case GPIO_HiD:
- (val) ? GPIO_HiD_SET() : GPIO_HiD_CLR();
- break;
- default:
- break;
- }
- val = (GPIO_GET(0)) ? BV(0) : 0;
- val |= (GPIO_GET(1)) ? BV(1) : 0;
- val |= (GPIO_GET(2)) ? BV(2) : 0;
- val |= (GPIO_GET(3)) ? BV(3) : 0;
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), cmd, 1, &val);
- }
- void MT_SysStackTune(uint8 *pBuf)
- {
- uint8 cmd, rtrn;
- cmd = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- switch (*pBuf++)
- {
- case STK_TX_PWR:
- rtrn = ZMacSetReq(ZMacPhyTransmitPowerSigned, pBuf);
- break;
- case STK_RX_ON_IDLE:
- if ((*pBuf != TRUE) && (*pBuf != FALSE))
- {
- (void)ZMacGetReq(ZMacRxOnIdle, &rtrn);
- }
- else
- {
- rtrn = ZMacSetReq(ZMacRxOnIdle, pBuf);
- }
- break;
- default:
- rtrn = ZInvalidParameter;
- break;
- }
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS), cmd, 1, &rtrn);
- }
- void MT_SysSetUtcTime(uint8 *pBuf)
- {
- uint8 cmdId;
- uint8 retStat;
- UTCTime utcSecs;
-
- cmdId = pBuf[MT_RPC_POS_CMD1];
- pBuf += MT_RPC_FRAME_HDR_SZ;
- utcSecs = osal_build_uint32( pBuf, 4 );
- if ( utcSecs == 0 )
- {
- UTCTimeStruct utc;
-
- pBuf += 4;
-
- utc.hour = *pBuf++;
- utc.minutes = *pBuf++;
- utc.seconds = *pBuf++;
- utc.month = (*pBuf++) - 1;
- utc.day = (*pBuf++) - 1;
- utc.year = osal_build_uint16 ( pBuf );
- if ((utc.hour < 24) && (utc.minutes < 60) && (utc.seconds < 60) &&
- (utc.month < 12) && (utc.day < 31) && (utc.year > 1999) && (utc.year < 2136))
- {
-
- if ((utc.month != 1) || (utc.day < (IsLeapYear( utc.year ) ? 29 : 28)))
- {
-
- utcSecs = osal_ConvertUTCSecs( &utc );
- }
- }
- }
- if ( utcSecs == 0 )
- {
-
- retStat = ZInvalidParameter;
- }
- else
- {
-
- osal_setClock( utcSecs );
- retStat = ZSuccess;
- }
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- cmdId, 1, &retStat);
- }
- void MT_SysGetUtcTime(void)
- {
- uint8 len;
- uint8 *buf;
- len = sizeof( UTCTime ) + sizeof( UTCTimeStruct );
- buf = osal_mem_alloc( len );
- if ( buf )
- {
- uint8 *pBuf;
- UTCTime utcSecs;
- UTCTimeStruct utcTime;
-
- utcSecs = osal_getClock();
- osal_ConvertUTCTime( &utcTime, utcSecs );
-
- pBuf = osal_buffer_uint32( buf, utcSecs );
-
- *pBuf++ = utcTime.hour;
- *pBuf++ = utcTime.minutes;
- *pBuf++ = utcTime.seconds;
- *pBuf++ = utcTime.month + 1;
- *pBuf++ = utcTime.day + 1;
- *pBuf++ = LO_UINT16( utcTime.year );
- *pBuf++ = HI_UINT16( utcTime.year );
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_GET_TIME, (uint8)(pBuf-buf), buf);
- osal_mem_free( buf );
- }
- }
- void MT_SysSetTxPower(uint8 *pBuf)
- {
-
- uint8 signed_dBm_of_TxPower_requeseted;
-
- uint8 signed_dBm_of_TxPower_range_corrected;
-
- signed_dBm_of_TxPower_requeseted = pBuf[MT_RPC_POS_DAT0];
-
- signed_dBm_of_TxPower_range_corrected = macRadioSetTxPower(signed_dBm_of_TxPower_requeseted);
-
- (void)MAC_MlmeSetReq(MAC_PHY_TRANSMIT_POWER_SIGNED, &signed_dBm_of_TxPower_requeseted);
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_SYS),
- MT_SYS_SET_TX_POWER, 1,
- &signed_dBm_of_TxPower_range_corrected);
- }
- #endif
- void MT_SysResetInd(void)
- {
- uint8 retArray[6];
- retArray[0] = ResetReason();
- osal_memcpy( &retArray[1], MTVersionString, 5 );
-
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SYS), MT_SYS_RESET_IND,
- sizeof(retArray), retArray);
- }
- void MT_SysOsalTimerExpired(uint8 Id)
- {
- uint8 retValue;
- retValue = Id;
- MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_AREQ | (uint8)MT_RPC_SYS_SYS), MT_SYS_OSAL_TIMER_EXPIRED, 1, &retValue);
- }
|