summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: fad45bb)
raw | patch | inline | side by side (parent: fad45bb)
author | Hector Ramos <h-ramos@ti.com> | |
Thu, 26 Mar 2015 18:53:56 +0000 (11:53 -0700) | ||
committer | Hector Ramos <h-ramos@ti.com> | |
Thu, 26 Mar 2015 18:53:56 +0000 (11:53 -0700) |
examples/cmdLine/cmdLine.c~ | [deleted file] | patch | blob | history |
examples/dataSendRcv/dataSendRcv.c~ | [deleted file] | patch | blob | history |
examples/nwkTopology/nwkTopology.c~ | [deleted file] | patch | blob | history |
examples/servDisc/servDisc.c~ | [deleted file] | patch | blob | history |
framework/mt/Zdo/mtZdo.c~ | [deleted file] | patch | blob | history |
framework/mt/Zdo/mtZdo.h~ | [deleted file] | patch | blob | history |
framework/platform/gnu/rpcTransportUart.c~ | [deleted file] | patch | blob | history |
framework/platform/tirtos/Board/EK_TM4C1294XL.c~ | [deleted file] | patch | blob | history |
diff --git a/examples/cmdLine/cmdLine.c~ b/examples/cmdLine/cmdLine.c~
+++ /dev/null
@@ -1,3474 +0,0 @@
-/**************************************************************************************************\r
- * Filename: cmdLine.c\r
- * Description: This file contains cmdLine application.\r
- *\r
- *\r
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/\r
- *\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * Redistributions of source code must retain the above copyright\r
- * notice, this list of conditions and the following disclaimer.\r
- *\r
- * Redistributions in binary form must reproduce the above copyright\r
- * notice, this list of conditions and the following disclaimer in the\r
- * documentation and/or other materials provided with the\r
- * distribution.\r
- *\r
- * Neither the name of Texas Instruments Incorporated nor the names of\r
- * its contributors may be used to endorse or promote products derived\r
- * from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- */\r
-\r
-/*********************************************************************\r
- * INCLUDES\r
- */\r
-#include <string.h>\r
-#include <stdio.h>\r
-#include <unistd.h>\r
-#include <stdlib.h>\r
-\r
-#include "rpc.h"\r
-#include "mtSys.h"\r
-#include "mtZdo.h"\r
-#include "mtAf.h"\r
-#include "mtParser.h"\r
-#include "mtSapi.h"\r
-#include "rpcTransport.h"\r
-#include "dbgPrint.h"\r
-#include "hostConsole.h"\r
-\r
-/*********************************************************************\r
- * MACROS\r
- */\r
-#define KNRM "\x1B[0m"\r
-#define KRED "\x1B[31m"\r
-#define KGRN "\x1B[32m"\r
-#define KYEL "\x1B[33m"\r
-#define KBLU "\x1B[34m"\r
-#define KMAG "\x1B[35m"\r
-#define KCYN "\x1B[36m"\r
-#define KWHT "\x1B[37m"\r
-\r
-#define SET_RSP_COLOR(); consolePrint("%s", KYEL);\r
-#define SET_HELP_COLOR(); consolePrint("%s", KGRN);\r
-#define SET_PARAM_COLOR(); consolePrint("%s", KCYN);\r
-#define SET_NRM_COLOR(); consolePrint("%s", KNRM);\r
-\r
-/*********************************************************************\r
- * TYPES\r
- */\r
-\r
-/*********************************************************************\r
- * LOCAL VARIABLE\r
- */\r
-\r
-//init ZDO device state\r
-devStates_t devState = DEV_HOLD;\r
-uint8_t gSrcEndPoint = 1;\r
-uint8_t gDstEndPoint = 1;\r
-\r
-/***********************************************************************/\r
-\r
-void usage(char* exeName)\r
-{\r
- consolePrint("Usage: ./%s <port>\n", exeName);\r
- consolePrint("Eample: ./%s /dev/ttyACM0\n", exeName);\r
-}\r
-\r
-/*********************************************************************\r
- * LOCAL FUNCTIONS\r
- */\r
-//ZDO Callbacks\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState);\r
-static uint8_t mtZdoGetLinkKeyCb(GetLinkKeySrspFormat_t *msg);\r
-static uint8_t mtZdoNwkAddrRspCb(NwkAddrRspFormat_t *msg);\r
-static uint8_t mtZdoIeeeAddrRspCb(IeeeAddrRspFormat_t *msg);\r
-static uint8_t mtZdoNodeDescRspCb(NodeDescRspFormat_t *msg);\r
-static uint8_t mtZdoPowerDescRspCb(PowerDescRspFormat_t *msg);\r
-static uint8_t mtZdoSimpleDescRspCb(SimpleDescRspFormat_t *msg);\r
-static uint8_t mtZdoActiveEpRspCb(ActiveEpRspFormat_t *msg);\r
-static uint8_t mtZdoMatchDescRspCb(MatchDescRspFormat_t *msg);\r
-static uint8_t mtZdoComplexDescRspCb(ComplexDescRspFormat_t *msg);\r
-static uint8_t mtZdoUserDescRspCb(UserDescRspFormat_t *msg);\r
-static uint8_t mtZdoUserDescConfCb(UserDescConfFormat_t *msg);\r
-static uint8_t mtZdoServerDiscRspCb(ServerDiscRspFormat_t *msg);\r
-static uint8_t mtZdoEndDeviceBindRspCb(EndDeviceBindRspFormat_t *msg);\r
-static uint8_t mtZdoBindRspCb(BindRspFormat_t *msg);\r
-static uint8_t mtZdoUnbindRspCb(UnbindRspFormat_t *msg);\r
-static uint8_t mtZdoMgmtNwkDiscRspCb(MgmtNwkDiscRspFormat_t *msg);\r
-static uint8_t mtZdoMgmtLqiRspCb(MgmtLqiRspFormat_t *msg);\r
-static uint8_t mtZdoMgmtRtgRspCb(MgmtRtgRspFormat_t *msg);\r
-static uint8_t mtZdoMgmtBindRspCb(MgmtBindRspFormat_t *msg);\r
-static uint8_t mtZdoMgmtLeaveRspCb(MgmtLeaveRspFormat_t *msg);\r
-static uint8_t mtZdoMgmtDirectJoinRspCb(MgmtDirectJoinRspFormat_t *msg);\r
-static uint8_t mtZdoMgmtPermitJoinRspCb(MgmtPermitJoinRspFormat_t *msg);\r
-static uint8_t mtZdoEndDeviceAnnceIndCb(EndDeviceAnnceIndFormat_t *msg);\r
-static uint8_t mtZdoMatchDescRspSentCb(MatchDescRspSentFormat_t *msg);\r
-static uint8_t mtZdoStatusErrorRspCb(StatusErrorRspFormat_t *msg);\r
-static uint8_t mtZdoSrcRtgIndCb(SrcRtgIndFormat_t *msg);\r
-static uint8_t mtZdoBeaconNotifyIndCb(BeaconNotifyIndFormat_t *msg);\r
-static uint8_t mtZdoJoinCnfCb(JoinCnfFormat_t *msg);\r
-static uint8_t mtZdoNwkDiscoveryCnfCb(NwkDiscoveryCnfFormat_t *msg);\r
-static uint8_t mtZdoLeaveIndCb(LeaveIndFormat_t *msg);\r
-static uint8_t mtZdoMsgCbIncomingCb(MsgCbIncomingFormat_t *msg);\r
-\r
-//SYS Callbacks\r
-//static uint8_t mtSysResetInd(uint8_t resetReason, uint8_t version[5]);\r
-static uint8_t mtSysPingSrspCb(PingSrspFormat_t *msg);\r
-static uint8_t mtSysGetExtAddrSrspCb(GetExtAddrSrspFormat_t *msg);\r
-static uint8_t mtSysRamReadSrspCb(RamReadSrspFormat_t *msg);\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg);\r
-static uint8_t mtSysVersionSrspCb(VersionSrspFormat_t *msg);\r
-static uint8_t mtSysOsalNvReadSrspCb(OsalNvReadSrspFormat_t *msg);\r
-static uint8_t mtSysOsalNvLengthSrspCb(OsalNvLengthSrspFormat_t *msg);\r
-static uint8_t mtSysOsalTimerExpiredCb(OsalTimerExpiredFormat_t *msg);\r
-static uint8_t mtSysStackTuneSrspCb(StackTuneSrspFormat_t *msg);\r
-static uint8_t mtSysAdcReadSrspCb(AdcReadSrspFormat_t *msg);\r
-static uint8_t mtSysGpioSrspCb(GpioSrspFormat_t *msg);\r
-static uint8_t mtSysRandomSrspCb(RandomSrspFormat_t *msg);\r
-static uint8_t mtSysGetTimeSrspCb(GetTimeSrspFormat_t *msg);\r
-static uint8_t mtSysSetTxPowerSrspCb(SetTxPowerSrspFormat_t *msg);\r
-\r
-//AF callbacks\r
-static uint8_t mtAfDataConfirmCb(DataConfirmFormat_t *msg);\r
-static uint8_t mtAfIncomingMsgCb(IncomingMsgFormat_t *msg);\r
-static uint8_t mtAfIncomingMsgExt(IncomingMsgExtFormat_t *msg);\r
-static uint8_t mtAfDataRetrieveSrspCb(DataRetrieveSrspFormat_t *msg);\r
-static uint8_t mtAfReflectErrorCb(ReflectErrorFormat_t *msg);\r
-\r
-//SAPI Callbacks\r
-static uint8_t mtSapiReadConfigurationSrspCb(ReadConfigurationSrspFormat_t *msg);\r
-static uint8_t mtSapiGetDeviceInfoSrspCb(GetDeviceInfoSrspFormat_t *msg);\r
-static uint8_t mtSapiFindDeviceCnfCb(FindDeviceCnfFormat_t *msg);\r
-static uint8_t mtSapiSendDataCnfCb(SendDataCnfFormat_t *msg);\r
-static uint8_t mtSapiReceiveDataIndCb(ReceiveDataIndFormat_t *msg);\r
-static uint8_t mtSapiAllowBindCnfCb(AllowBindCnfFormat_t *msg);\r
-static uint8_t mtSapiBindCnfCb(BindCnfFormat_t *msg);\r
-static uint8_t mtSapiStartCnfCb(StartCnfFormat_t *msg);\r
-\r
-//helper functions\r
-static uint8_t setNVStartup(uint8_t startupOption);\r
-static uint8_t setNVChanList(uint32_t chanList);\r
-static uint8_t setNVPanID(uint32_t panId);\r
-static uint8_t setNVDevType(uint8_t devType);\r
-static int32_t startNetwork(void);\r
-static int32_t registerAf(void);\r
-\r
-typedef struct\r
-{\r
- char *name;\r
- uint8_t size;\r
- uint8_t isList;\r
-} cmdAtt_t;\r
-\r
-typedef struct\r
-{\r
- char *cmdName;\r
- char *cmdDesc;\r
- uint8_t attNum;\r
- cmdAtt_t atts[20];\r
-} cmd_t;\r
-#define COMMANDS_SIZE 72\r
-\r
-cmd_t commands[COMMANDS_SIZE];\r
-\r
-/*********************************************************************\r
- * CALLBACK FUNCTIONS\r
- */\r
-\r
-// SYS callbacks\r
-static mtSysCb_t mtSysCb =\r
- { mtSysPingSrspCb, mtSysGetExtAddrSrspCb, mtSysRamReadSrspCb,\r
- mtSysResetIndCb, mtSysVersionSrspCb, mtSysOsalNvReadSrspCb,\r
- mtSysOsalNvLengthSrspCb, mtSysOsalTimerExpiredCb,\r
- mtSysStackTuneSrspCb, mtSysAdcReadSrspCb, mtSysGpioSrspCb,\r
- mtSysRandomSrspCb, mtSysGetTimeSrspCb, mtSysSetTxPowerSrspCb };\r
-\r
-static mtZdoCb_t mtZdoCb =\r
- { mtZdoNwkAddrRspCb, // MT_ZDO_NWK_ADDR_RSP\r
- mtZdoIeeeAddrRspCb, // MT_ZDO_IEEE_ADDR_RSP\r
- mtZdoNodeDescRspCb, // MT_ZDO_NODE_DESC_RSP\r
- mtZdoPowerDescRspCb, // MT_ZDO_POWER_DESC_RSP\r
- mtZdoSimpleDescRspCb, // MT_ZDO_SIMPLE_DESC_RSP\r
- mtZdoActiveEpRspCb, // MT_ZDO_ACTIVE_EP_RSP\r
- mtZdoMatchDescRspCb, // MT_ZDO_MATCH_DESC_RSP\r
- mtZdoComplexDescRspCb, // MT_ZDO_COMPLEX_DESC_RSP\r
- mtZdoUserDescRspCb, // MT_ZDO_USER_DESC_RSP\r
- mtZdoUserDescConfCb, // MT_ZDO_USER_DESC_CONF\r
- mtZdoServerDiscRspCb, // MT_ZDO_SERVER_DISC_RSP\r
- mtZdoEndDeviceBindRspCb, // MT_ZDO_END_DEVICE_BIND_RSP\r
- mtZdoBindRspCb, // MT_ZDO_BIND_RSP\r
- mtZdoUnbindRspCb, // MT_ZDO_UNBIND_RSP\r
- mtZdoMgmtNwkDiscRspCb, // MT_ZDO_MGMT_NWK_DISC_RSP\r
- mtZdoMgmtLqiRspCb, // MT_ZDO_MGMT_LQI_RSP\r
- mtZdoMgmtRtgRspCb, // MT_ZDO_MGMT_RTG_RSP\r
- mtZdoMgmtBindRspCb, // MT_ZDO_MGMT_BIND_RSP\r
- mtZdoMgmtLeaveRspCb, // MT_ZDO_MGMT_LEAVE_RSP\r
- mtZdoMgmtDirectJoinRspCb, // MT_ZDO_MGMT_DIRECT_JOIN_RSP\r
- mtZdoMgmtPermitJoinRspCb, // MT_ZDO_MGMT_PERMIT_JOIN_RSP\r
- mtZdoStateChangeIndCb, // MT_ZDO_STATE_CHANGE_IND\r
- mtZdoEndDeviceAnnceIndCb, // MT_ZDO_END_DEVICE_ANNCE_IND\r
- mtZdoSrcRtgIndCb, // MT_ZDO_SRC_RTG_IND\r
- mtZdoBeaconNotifyIndCb, //MT_ZDO_BEACON_NOTIFY_IND\r
- mtZdoJoinCnfCb, //MT_ZDO_JOIN_CNF\r
- mtZdoNwkDiscoveryCnfCb, //MT_ZDO_NWK_DISCOVERY_CNF\r
- NULL, // MT_ZDO_CONCENTRATOR_IND_CB\r
- mtZdoLeaveIndCb, // MT_ZDO_LEAVE_IND\r
- mtZdoStatusErrorRspCb, //MT_ZDO_STATUS_ERROR_RSP\r
- mtZdoMatchDescRspSentCb, //MT_ZDO_MATCH_DESC_RSP_SENT\r
- mtZdoMsgCbIncomingCb, mtZdoGetLinkKeyCb };\r
-\r
-static mtAfCb_t mtAfCb =\r
- { mtAfDataConfirmCb, //MT_AF_DATA_CONFIRM\r
- mtAfIncomingMsgCb, //MT_AF_INCOMING_MSG\r
- mtAfIncomingMsgExt, //MT_AF_INCOMING_MSG_EXT\r
- mtAfDataRetrieveSrspCb, //MT_AF_DATA_RETRIEVE\r
- mtAfReflectErrorCb, //MT_AF_REFLECT_ERROR\r
- };\r
-\r
-// SAPI callbacks\r
-static mtSapiCb_t mtSapiCb =\r
- { mtSapiReadConfigurationSrspCb, //MT_SAPI_READ_CONFIGURATION\r
- mtSapiGetDeviceInfoSrspCb, //MT_SAPI_GET_DEVICE_INFO\r
- mtSapiFindDeviceCnfCb, //MT_SAPI_FIND_DEVICE_CNF\r
- mtSapiSendDataCnfCb, //MT_SAPI_SEND_DATA_CNF\r
- mtSapiReceiveDataIndCb, //MT_SAPI_RECEIVE_DATA_IND\r
- mtSapiAllowBindCnfCb, //MT_SAPI_ALLOW_BIND_CNF\r
- mtSapiBindCnfCb, //MT_SAPI_BIND_CNF\r
- mtSapiStartCnfCb, //MT_SAPI_START_CNF\r
- };\r
-\r
-static void InitCmds(void)\r
-{\r
-\r
- commands[0].cmdName = "SYS_PING";\r
- commands[0].cmdDesc =\r
- " This command issues PING requests to verify if a device is active and check the\n"\r
- " capability of the device.\n";\r
- commands[0].attNum = 0;\r
- commands[1].cmdName = "SYS_SET_EXTADDR";\r
- commands[1].cmdDesc =\r
- " This command is used to set the extended address of the device.\n";\r
- commands[1].attNum = 1;\r
- commands[1].atts[0].name = "ExtAddr";\r
- commands[1].atts[0].size = 8;\r
- commands[1].atts[0].isList = 0;\r
- commands[2].cmdName = "SYS_GET_EXTADDR";\r
- commands[2].cmdDesc =\r
- " This command is used to get the extended address of the device.\n";\r
- commands[2].attNum = 0;\r
- commands[3].cmdName = "SYS_RAM_READ";\r
- commands[3].cmdDesc =\r
- " This command is used by the tester to read a single memory location in the target\n"\r
- " RAM. The command accepts an address value and returns the memory value present in\n"\r
- " the target RAM at that address.\n";\r
- commands[3].attNum = 2;\r
- commands[3].atts[0].name = "Address";\r
- commands[3].atts[0].size = 2;\r
- commands[3].atts[0].isList = 0;\r
- commands[3].atts[1].name = "Len";\r
- commands[3].atts[1].size = 1;\r
- commands[3].atts[1].isList = 0;\r
- commands[4].cmdName = "SYS_RAM_WRITE";\r
- commands[4].cmdDesc =\r
- " This command is used by the tester to write to a particular location in the target\n"\r
- " RAM. The command accepts an address location and a memory value. The memory value\n"\r
- " is written to the address location in the target RAM.\n";\r
- commands[4].attNum = 3;\r
- commands[4].atts[0].name = "Address";\r
- commands[4].atts[0].size = 2;\r
- commands[4].atts[0].isList = 0;\r
- commands[4].atts[1].name = "Len";\r
- commands[4].atts[1].size = 1;\r
- commands[4].atts[1].isList = 0;\r
- commands[4].atts[2].name = "Value";\r
- commands[4].atts[2].size = 1;\r
- commands[4].atts[2].isList = 128;\r
- commands[5].cmdName = "SYS_RESET_REQ";\r
- commands[5].cmdDesc =\r
- " This command is sent by the tester to reset the target device.\n";\r
- commands[5].attNum = 1;\r
- commands[5].atts[0].name = "Type";\r
- commands[5].atts[0].size = 1;\r
- commands[5].atts[0].isList = 0;\r
- commands[6].cmdName = "SYS_VERSION";\r
- commands[6].cmdDesc =\r
- " This command is used to request for the device\'s version string.\n";\r
- commands[6].attNum = 0;\r
- commands[7].cmdName = "SYS_OSAL_NV_READ";\r
- commands[7].cmdDesc =\r
- " This command is used by the tester to read a single memory item from the target\n"\r
- " non-volatile memory. The command accepts an attribute Id value and data offset and\n"\r
- " returns the memory value present in the target for the specified attribute Id.\n";\r
- commands[7].attNum = 2;\r
- commands[7].atts[0].name = "Id";\r
- commands[7].atts[0].size = 2;\r
- commands[7].atts[0].isList = 0;\r
- commands[7].atts[1].name = "Offset";\r
- commands[7].atts[1].size = 1;\r
- commands[7].atts[1].isList = 0;\r
- commands[8].cmdName = "SYS_OSAL_NV_WRITE";\r
- commands[8].cmdDesc =\r
- " This command is used by the tester to write to a particular item in non-volatile\n"\r
- " memory. The command accepts an attribute Id, data offset, data length, and attribute\n"\r
- " value. The attribute value is written to the location specified for the attribute\n"\r
- " Id in the target.\n";\r
- commands[8].attNum = 4;\r
- commands[8].atts[0].name = "Id";\r
- commands[8].atts[0].size = 2;\r
- commands[8].atts[0].isList = 0;\r
- commands[8].atts[1].name = "Offset";\r
- commands[8].atts[1].size = 1;\r
- commands[8].atts[1].isList = 0;\r
- commands[8].atts[2].name = "Len";\r
- commands[8].atts[2].size = 1;\r
- commands[8].atts[2].isList = 0;\r
- commands[8].atts[3].name = "Value";\r
- commands[8].atts[3].size = 1;\r
- commands[8].atts[3].isList = 246;\r
- commands[9].cmdName = "SYS_OSAL_NV_ITEM_INIT";\r
- commands[9].cmdDesc =\r
- " This command is used by the tester to write to a particular item in non-volatile\n"\r
- " memory. The command accepts an attribute Id, data offset, data length, and attribute\n"\r
- " value. The attribute value is written to the location specified for the attribute\n"\r
- " Id in the target.\n";\r
- commands[9].attNum = 4;\r
- commands[9].atts[0].name = "Id";\r
- commands[9].atts[0].size = 2;\r
- commands[9].atts[0].isList = 0;\r
- commands[9].atts[1].name = "ItemLen";\r
- commands[9].atts[1].size = 2;\r
- commands[9].atts[1].isList = 0;\r
- commands[9].atts[2].name = "InitLen";\r
- commands[9].atts[2].size = 1;\r
- commands[9].atts[2].isList = 0;\r
- commands[9].atts[3].name = "InitData";\r
- commands[9].atts[3].size = 1;\r
- commands[9].atts[3].isList = 245;\r
- commands[10].cmdName = "SYS_OSAL_NV_DELETE";\r
- commands[10].cmdDesc =\r
- " This command is used by the tester to delete an item from the non-volatile memory.\n"\r
- " The ItemLen parameter must match the length of the NV item or the command will fail.\n"\r
- " Use this command with caution – deleted items cannot be recovered.\n";\r
- commands[10].attNum = 2;\r
- commands[10].atts[0].name = "Id";\r
- commands[10].atts[0].size = 2;\r
- commands[10].atts[0].isList = 0;\r
- commands[10].atts[1].name = "ItemLen";\r
- commands[10].atts[1].size = 2;\r
- commands[10].atts[1].isList = 0;\r
- commands[11].cmdName = "SYS_OSAL_NV_LENGTH";\r
- commands[11].cmdDesc =\r
- " This command is used by the tester to get the length of an item in non-volatile\n"\r
- " memory. A returned length of zero indicates that the NV item does not exist.\n";\r
- commands[11].attNum = 1;\r
- commands[11].atts[0].name = "Id";\r
- commands[11].atts[0].size = 2;\r
- commands[11].atts[0].isList = 0;\r
- commands[12].cmdName = "SYS_OSAL_START_TIMER";\r
- commands[12].cmdDesc =\r
- " This command is used by the tester to start a timer event. The event will expired\n"\r
- " after the indicated amount of time and a notification will be sent back to the tester.\n";\r
- commands[12].attNum = 2;\r
- commands[12].atts[0].name = "Id";\r
- commands[12].atts[0].size = 1;\r
- commands[12].atts[0].isList = 0;\r
- commands[12].atts[1].name = "Timeout";\r
- commands[12].atts[1].size = 2;\r
- commands[12].atts[1].isList = 0;\r
- commands[13].cmdName = "SYS_OSAL_STOP_TIMER";\r
- commands[13].cmdDesc =\r
- " This command is used by the tester to stop a timer event.\n";\r
- commands[13].attNum = 1;\r
- commands[13].atts[0].name = "Id";\r
- commands[13].atts[0].size = 1;\r
- commands[13].atts[0].isList = 0;\r
- commands[14].cmdName = "SYS_STACK_TUNE";\r
- commands[14].cmdDesc =\r
- " This command is used by the tester to tune intricate or arcane settings at runtime.\n";\r
- commands[14].attNum = 2;\r
- commands[14].atts[0].name = "Operation";\r
- commands[14].atts[0].size = 1;\r
- commands[14].atts[0].isList = 0;\r
- commands[14].atts[1].name = "Value";\r
- commands[14].atts[1].size = 1;\r
- commands[14].atts[1].isList = 0;\r
- commands[15].cmdName = "SYS_ADC_READ";\r
- commands[15].cmdDesc =\r
- " This command reads a value from the ADC based on specified channel and resolution.\n";\r
- commands[15].attNum = 2;\r
- commands[15].atts[0].name = "Channel";\r
- commands[15].atts[0].size = 1;\r
- commands[15].atts[0].isList = 0;\r
- commands[15].atts[1].name = "Resolution";\r
- commands[15].atts[1].size = 1;\r
- commands[15].atts[1].isList = 0;\r
- commands[16].cmdName = "SYS_GPIO";\r
- commands[16].cmdDesc =\r
- " This command is used by the tester to control the GPIO pins.\n";\r
- commands[16].attNum = 2;\r
- commands[16].atts[0].name = "Operation";\r
- commands[16].atts[0].size = 1;\r
- commands[16].atts[0].isList = 0;\r
- commands[16].atts[1].name = "Value";\r
- commands[16].atts[1].size = 1;\r
- commands[16].atts[1].isList = 0;\r
- commands[17].cmdName = "SYS_RANDOM";\r
- commands[17].cmdDesc =\r
- " This command is used by the tester to get a random 16-bit number.\n";\r
- commands[17].attNum = 0;\r
- commands[18].cmdName = "SYS_SET_TIME";\r
- commands[18].cmdDesc =\r
- " This command is used by the tester to set the target system date and time. The time\n"\r
- " can be specified in seconds since 00:00:00 on January 1, 2000 or in parsed\n"\r
- " date/time components.\n";\r
- commands[18].attNum = 7;\r
- commands[18].atts[0].name = "UTCTime";\r
- commands[18].atts[0].size = 4;\r
- commands[18].atts[0].isList = 0;\r
- commands[18].atts[1].name = "Hour";\r
- commands[18].atts[1].size = 1;\r
- commands[18].atts[1].isList = 0;\r
- commands[18].atts[2].name = "Minute";\r
- commands[18].atts[2].size = 1;\r
- commands[18].atts[2].isList = 0;\r
- commands[18].atts[3].name = "Second";\r
- commands[18].atts[3].size = 1;\r
- commands[18].atts[3].isList = 0;\r
- commands[18].atts[4].name = "Month";\r
- commands[18].atts[4].size = 1;\r
- commands[18].atts[4].isList = 0;\r
- commands[18].atts[5].name = "Day";\r
- commands[18].atts[5].size = 1;\r
- commands[18].atts[5].isList = 0;\r
- commands[18].atts[6].name = "Year";\r
- commands[18].atts[6].size = 2;\r
- commands[18].atts[6].isList = 0;\r
- commands[19].cmdName = "SYS_GET_TIME";\r
- commands[19].cmdDesc =\r
- " This command is used by the tester to get the target system date and time. The time\n"\r
- " is returned in seconds since 00:00:00 on January 1, 2000 and parsed date/time\n"\r
- " components.\n";\r
- commands[19].attNum = 0;\r
- commands[20].cmdName = "SYS_SET_TX_POWER";\r
- commands[20].cmdDesc =\r
- " This command is used by the tester to set the target system radio transmit power.\n"\r
- " The returned TX power is the actual setting applied to the radio – nearest characterized\n"\r
- " value for the specific radio.\n";\r
- commands[20].attNum = 1;\r
- commands[20].atts[0].name = "TxPower";\r
- commands[20].atts[0].size = 1;\r
- commands[20].atts[0].isList = 0;\r
- commands[21].cmdName = "AF_REGISTER";\r
- commands[21].cmdDesc =\r
- " This command enables the tester to register an application's endpoint description.\n";\r
- commands[21].attNum = 9;\r
- commands[21].atts[0].name = "EndPoint";\r
- commands[21].atts[0].size = 1;\r
- commands[21].atts[0].isList = 0;\r
- commands[21].atts[1].name = "AppProfId";\r
- commands[21].atts[1].size = 2;\r
- commands[21].atts[1].isList = 0;\r
- commands[21].atts[2].name = "AppDeviceId";\r
- commands[21].atts[2].size = 2;\r
- commands[21].atts[2].isList = 0;\r
- commands[21].atts[3].name = "AppDevVer";\r
- commands[21].atts[3].size = 1;\r
- commands[21].atts[3].isList = 0;\r
- commands[21].atts[4].name = "LatencyReq";\r
- commands[21].atts[4].size = 1;\r
- commands[21].atts[4].isList = 0;\r
- commands[21].atts[5].name = "AppNumInClusters";\r
- commands[21].atts[5].size = 1;\r
- commands[21].atts[5].isList = 0;\r
- commands[21].atts[6].name = "AppInClusterList";\r
- commands[21].atts[6].size = 2;\r
- commands[21].atts[6].isList = 16;\r
- commands[21].atts[7].name = "AppNumOutClusters";\r
- commands[21].atts[7].size = 1;\r
- commands[21].atts[7].isList = 0;\r
- commands[21].atts[8].name = "AppOutClusterList";\r
- commands[21].atts[8].size = 2;\r
- commands[21].atts[8].isList = 16;\r
- commands[22].cmdName = "AF_DATA_REQUEST";\r
- commands[22].cmdDesc =\r
- " This command is used by the tester to build and send a message through AF layer.\n";\r
- commands[22].attNum = 9;\r
- commands[22].atts[0].name = "DstAddr";\r
- commands[22].atts[0].size = 2;\r
- commands[22].atts[0].isList = 0;\r
- commands[22].atts[1].name = "DstEndpoint";\r
- commands[22].atts[1].size = 1;\r
- commands[22].atts[1].isList = 0;\r
- commands[22].atts[2].name = "SrcEndpoint";\r
- commands[22].atts[2].size = 1;\r
- commands[22].atts[2].isList = 0;\r
- commands[22].atts[3].name = "ClusterID";\r
- commands[22].atts[3].size = 2;\r
- commands[22].atts[3].isList = 0;\r
- commands[22].atts[4].name = "TransID";\r
- commands[22].atts[4].size = 1;\r
- commands[22].atts[4].isList = 0;\r
- commands[22].atts[5].name = "Options";\r
- commands[22].atts[5].size = 1;\r
- commands[22].atts[5].isList = 0;\r
- commands[22].atts[6].name = "Radius";\r
- commands[22].atts[6].size = 1;\r
- commands[22].atts[6].isList = 0;\r
- commands[22].atts[7].name = "Len";\r
- commands[22].atts[7].size = 1;\r
- commands[22].atts[7].isList = 0;\r
- commands[22].atts[8].name = "Data";\r
- commands[22].atts[8].size = 1;\r
- commands[22].atts[8].isList = 128;\r
- commands[23].cmdName = "AF_DATA_REQUEST_EXT";\r
- commands[23].cmdDesc =\r
- " This extended form of the AF_DATA_REQUEST must be used to send an inter-pan message\n"\r
- " (note that the target code must be compiled with the INTER_PAN flag defined.) This\n"\r
- " extended data request must also be used when making a request with a huge data byte\n"\r
- " count which is defined to be a size that would cause the RPC request to exceed the\n"\r
- " maximum allowed size:\n \tMT_RPC_DATA_MAX – sizeof(AF_DATA_REQUEST_EXT)\n Where"\r
- " sizeof(AF_DATA_REQUEST_EXT) counts everything but the data bytes and now stands\n"\r
- " at 20. When making an AF_DATA_REQUEST_EXT with a huge data byte count, the request\n"\r
- " shall not contain any data bytes. The huge data buffer is sent over separately as\n"\r
- " a sequence of one or more AF_DATA_STORE requests. Note that the outgoing huge message\n"\r
- " is timed-out in 15 seconds; thus all AF_DATA_STORE requests must be completed within\n"\r
- " 15 seconds of an AF_DATA_REQUEST_EXT with a huge data byte count. And any AF_DATA_REQUEST_EXT\n"\r
- " with a huge data byte count must be completed (or timed-out) before another will\n"\r
- " be started. The default timeout can be changed by defining the following to other\n"\r
- " values:\n \t#if !defined MT_AF_EXEC_CNT\n \t#define MT_AF_EXEC_CNT 15\n \t#endif\n"\r
- " \t#if !defined MT_AF_EXEC_DLY\n \t#define MT_AF_EXEC_DLY 1000\n \t#endif\n";\r
- commands[23].attNum = 11;\r
- commands[23].atts[0].name = "DstAddrMode";\r
- commands[23].atts[0].size = 1;\r
- commands[23].atts[0].isList = 0;\r
- commands[23].atts[1].name = "DstAddr";\r
- commands[23].atts[1].size = 8;\r
- commands[23].atts[1].isList = 0;\r
- commands[23].atts[2].name = "DstEndpoint";\r
- commands[23].atts[2].size = 1;\r
- commands[23].atts[2].isList = 0;\r
- commands[23].atts[3].name = "DstPanID";\r
- commands[23].atts[3].size = 2;\r
- commands[23].atts[3].isList = 0;\r
- commands[23].atts[4].name = "SrcEndpoint";\r
- commands[23].atts[4].size = 1;\r
- commands[23].atts[4].isList = 0;\r
- commands[23].atts[5].name = "ClusterId";\r
- commands[23].atts[5].size = 2;\r
- commands[23].atts[5].isList = 0;\r
- commands[23].atts[6].name = "TransId";\r
- commands[23].atts[6].size = 1;\r
- commands[23].atts[6].isList = 0;\r
- commands[23].atts[7].name = "Options";\r
- commands[23].atts[7].size = 1;\r
- commands[23].atts[7].isList = 0;\r
- commands[23].atts[8].name = "Radius";\r
- commands[23].atts[8].size = 1;\r
- commands[23].atts[8].isList = 0;\r
- commands[23].atts[9].name = "Len";\r
- commands[23].atts[9].size = 2;\r
- commands[23].atts[9].isList = 0;\r
- commands[23].atts[10].name = "Data";\r
- commands[23].atts[10].size = 1;\r
- commands[23].atts[10].isList = 230;\r
- commands[24].cmdName = "AF_DATA_REQUEST_SRC_RTG";\r
- commands[24].cmdDesc =\r
- " This command is used by the tester to build and send a message through AF layer\n"\r
- " using source routing.\n";\r
- commands[24].attNum = 11;\r
- commands[24].atts[0].name = "DstAddr";\r
- commands[24].atts[0].size = 2;\r
- commands[24].atts[0].isList = 0;\r
- commands[24].atts[1].name = "DstEndpoint";\r
- commands[24].atts[1].size = 1;\r
- commands[24].atts[1].isList = 0;\r
- commands[24].atts[2].name = "SrcEndpoint";\r
- commands[24].atts[2].size = 1;\r
- commands[24].atts[2].isList = 0;\r
- commands[24].atts[3].name = "ClusterID";\r
- commands[24].atts[3].size = 2;\r
- commands[24].atts[3].isList = 0;\r
- commands[24].atts[4].name = "TransID";\r
- commands[24].atts[4].size = 1;\r
- commands[24].atts[4].isList = 0;\r
- commands[24].atts[5].name = "Options";\r
- commands[24].atts[5].size = 1;\r
- commands[24].atts[5].isList = 0;\r
- commands[24].atts[6].name = "Radius";\r
- commands[24].atts[6].size = 1;\r
- commands[24].atts[6].isList = 0;\r
- commands[24].atts[7].name = "RelayCount";\r
- commands[24].atts[7].size = 1;\r
- commands[24].atts[7].isList = 0;\r
- commands[24].atts[8].name = "RelayList";\r
- commands[24].atts[8].size = 2;\r
- commands[24].atts[8].isList = 255;\r
- commands[24].atts[9].name = "Len";\r
- commands[24].atts[9].size = 1;\r
- commands[24].atts[9].isList = 0;\r
- commands[24].atts[10].name = "Data";\r
- commands[24].atts[10].size = 1;\r
- commands[24].atts[10].isList = 128;\r
- commands[25].cmdName = "AF_INTER_PAN_CTL";\r
- commands[25].cmdDesc =\r
- " Inter-Pan control command and data. The data content depends upon the command and\n"\r
- " the available commands are enumerated as InterPanCtl_t.\n";\r
- commands[25].attNum = 2;\r
- commands[25].atts[0].name = "Command";\r
- commands[25].atts[0].size = 1;\r
- commands[25].atts[0].isList = 0;\r
- commands[25].atts[1].name = "Data";\r
- commands[25].atts[1].size = 1;\r
- commands[25].atts[1].isList = 3;\r
- commands[26].cmdName = "AF_DATA_STORE";\r
- commands[26].cmdDesc =\r
- " Huge AF data request data buffer store command and data.\n";\r
- commands[26].attNum = 3;\r
- commands[26].atts[0].name = "Index";\r
- commands[26].atts[0].size = 2;\r
- commands[26].atts[0].isList = 0;\r
- commands[26].atts[1].name = "Length";\r
- commands[26].atts[1].size = 1;\r
- commands[26].atts[1].isList = 0;\r
- commands[26].atts[2].name = "Data";\r
- commands[26].atts[2].size = 1;\r
- commands[26].atts[2].isList = 247;\r
- commands[27].cmdName = "AF_DATA_RETRIEVE";\r
- commands[27].cmdDesc =\r
- " Huge AF incoming message data buffer retrieve command.\n";\r
- commands[27].attNum = 3;\r
- commands[27].atts[0].name = "TimeStamp";\r
- commands[27].atts[0].size = 4;\r
- commands[27].atts[0].isList = 0;\r
- commands[27].atts[1].name = "Index";\r
- commands[27].atts[1].size = 2;\r
- commands[27].atts[1].isList = 0;\r
- commands[27].atts[2].name = "Length";\r
- commands[27].atts[2].size = 1;\r
- commands[27].atts[2].isList = 0;\r
- commands[28].cmdName = "AF_APSF_CONFIG_SET";\r
- commands[28].cmdDesc = " MT proxy for afAPSF_ConfigSet().\n";\r
- commands[28].attNum = 3;\r
- commands[28].atts[0].name = "Endpoint";\r
- commands[28].atts[0].size = 1;\r
- commands[28].atts[0].isList = 0;\r
- commands[28].atts[1].name = "FrameDelay";\r
- commands[28].atts[1].size = 1;\r
- commands[28].atts[1].isList = 0;\r
- commands[28].atts[2].name = "WindowSize";\r
- commands[28].atts[2].size = 1;\r
- commands[28].atts[2].isList = 0;\r
- commands[29].cmdName = "ZDO_NWK_ADDR_REQ";\r
- commands[29].cmdDesc =\r
- " This message will request the device to send a Network Address Request.\n"\r
- " This message sends a broadcast message looking for a 16 bit address with a known\n"\r
- " 64 bit IEEE address.\n";\r
- commands[29].attNum = 3;\r
- commands[29].atts[0].name = "IEEEAddress";\r
- commands[29].atts[0].size = 8;\r
- commands[29].atts[0].isList = 0;\r
- commands[29].atts[1].name = "ReqType";\r
- commands[29].atts[1].size = 1;\r
- commands[29].atts[1].isList = 0;\r
- commands[29].atts[2].name = "StartIndex";\r
- commands[29].atts[2].size = 1;\r
- commands[29].atts[2].isList = 0;\r
- commands[30].cmdName = "ZDO_IEEE_ADDR_REQ";\r
- commands[30].cmdDesc =\r
- " This command will request a device's IEEE 64-bit address.\n";\r
- commands[30].attNum = 3;\r
- commands[30].atts[0].name = "ShortAddr";\r
- commands[30].atts[0].size = 2;\r
- commands[30].atts[0].isList = 0;\r
- commands[30].atts[1].name = "ReqType";\r
- commands[30].atts[1].size = 1;\r
- commands[30].atts[1].isList = 0;\r
- commands[30].atts[2].name = "StartIndex";\r
- commands[30].atts[2].size = 1;\r
- commands[30].atts[2].isList = 0;\r
- commands[31].cmdName = "ZDO_NODE_DESC_REQ";\r
- commands[31].cmdDesc =\r
- " This command is generated to inquire about the Node Descriptor information of the\n"\r
- " destination device\n";\r
- commands[31].attNum = 2;\r
- commands[31].atts[0].name = "DstAddr";\r
- commands[31].atts[0].size = 2;\r
- commands[31].atts[0].isList = 0;\r
- commands[31].atts[1].name = "NwkAddrOfInterest";\r
- commands[31].atts[1].size = 2;\r
- commands[31].atts[1].isList = 0;\r
- commands[32].cmdName = "ZDO_POWER_DESC_REQ";\r
- commands[32].cmdDesc =\r
- " This command is generated to inquire about the Power Descriptor information of the\n"\r
- " destination device.\n";\r
- commands[32].attNum = 2;\r
- commands[32].atts[0].name = "DstAddr";\r
- commands[32].atts[0].size = 2;\r
- commands[32].atts[0].isList = 0;\r
- commands[32].atts[1].name = "NwkAddrOfInterest";\r
- commands[32].atts[1].size = 2;\r
- commands[32].atts[1].isList = 0;\r
- commands[33].cmdName = "ZDO_SIMPLE_DESC_REQ";\r
- commands[33].cmdDesc =\r
- " This command is generated to inquire as to the Simple Descriptor of the destination\n"\r
- " devices Endpoint.\n";\r
- commands[33].attNum = 3;\r
- commands[33].atts[0].name = "DstAddr";\r
- commands[33].atts[0].size = 2;\r
- commands[33].atts[0].isList = 0;\r
- commands[33].atts[1].name = "NwkAddrOfInterest";\r
- commands[33].atts[1].size = 2;\r
- commands[33].atts[1].isList = 0;\r
- commands[33].atts[2].name = "Endpoint";\r
- commands[33].atts[2].size = 1;\r
- commands[33].atts[2].isList = 0;\r
- commands[34].cmdName = "ZDO_ACTIVE_EP_REQ";\r
- commands[34].cmdDesc =\r
- " This command is generated to request a list of active endpoint from the destination\n"\r
- " device.\n";\r
- commands[34].attNum = 2;\r
- commands[34].atts[0].name = "DstAddr";\r
- commands[34].atts[0].size = 2;\r
- commands[34].atts[0].isList = 0;\r
- commands[34].atts[1].name = "NwkAddrOfInterest";\r
- commands[34].atts[1].size = 2;\r
- commands[34].atts[1].isList = 0;\r
- commands[35].cmdName = "ZDO_MATCH_DESC_REQ";\r
- commands[35].cmdDesc =\r
- " This command is generated to request the device match descriptor.\n";\r
- commands[35].attNum = 7;\r
- commands[35].atts[0].name = "DstAddr";\r
- commands[35].atts[0].size = 2;\r
- commands[35].atts[0].isList = 0;\r
- commands[35].atts[1].name = "NwkAddrOfInterest";\r
- commands[35].atts[1].size = 2;\r
- commands[35].atts[1].isList = 0;\r
- commands[35].atts[2].name = "ProfileID";\r
- commands[35].atts[2].size = 2;\r
- commands[35].atts[2].isList = 0;\r
- commands[35].atts[3].name = "NumInClusters";\r
- commands[35].atts[3].size = 1;\r
- commands[35].atts[3].isList = 0;\r
- commands[35].atts[4].name = "InClusterList";\r
- commands[35].atts[4].size = 2;\r
- commands[35].atts[4].isList = 16;\r
- commands[35].atts[5].name = "NumOutClusters";\r
- commands[35].atts[5].size = 1;\r
- commands[35].atts[5].isList = 0;\r
- commands[35].atts[6].name = "OutClusterList";\r
- commands[35].atts[6].size = 2;\r
- commands[35].atts[6].isList = 16;\r
- commands[36].cmdName = "ZDO_COMPLEX_DESC_REQ";\r
- commands[36].cmdDesc =\r
- " This command is generated to request for the destination device’s complex descriptor.\n";\r
- commands[36].attNum = 2;\r
- commands[36].atts[0].name = "DstAddr";\r
- commands[36].atts[0].size = 2;\r
- commands[36].atts[0].isList = 0;\r
- commands[36].atts[1].name = "NwkAddrOfInterest";\r
- commands[36].atts[1].size = 2;\r
- commands[36].atts[1].isList = 0;\r
- commands[37].cmdName = "ZDO_USER_DESC_REQ";\r
- commands[37].cmdDesc =\r
- " This command is generated to request for the destination device’s user descriptor.\n";\r
- commands[37].attNum = 2;\r
- commands[37].atts[0].name = "DstAddr";\r
- commands[37].atts[0].size = 2;\r
- commands[37].atts[0].isList = 0;\r
- commands[37].atts[1].name = "NwkAddrOfInterest";\r
- commands[37].atts[1].size = 2;\r
- commands[37].atts[1].isList = 0;\r
- commands[38].cmdName = "ZDO_DEVICE_ANNCE";\r
- commands[38].cmdDesc =\r
- " This command will cause the CC2480 device to issue an “End device announce�\n"\r
- " broadcast packet to the network. This is typically used by an end-device to announce\n"\r
- " itself to the network.\n";\r
- commands[38].attNum = 3;\r
- commands[38].atts[0].name = "NWKAddr";\r
- commands[38].atts[0].size = 2;\r
- commands[38].atts[0].isList = 0;\r
- commands[38].atts[1].name = "IEEEAddr";\r
- commands[38].atts[1].size = 8;\r
- commands[38].atts[1].isList = 0;\r
- commands[38].atts[2].name = "Capabilities";\r
- commands[38].atts[2].size = 1;\r
- commands[38].atts[2].isList = 0;\r
- commands[39].cmdName = "ZDO_USER_DESC_SET";\r
- commands[39].cmdDesc =\r
- " This command is generated to write a User Descriptor value to the targeted device\n";\r
- commands[39].attNum = 4;\r
- commands[39].atts[0].name = "DstAddr";\r
- commands[39].atts[0].size = 2;\r
- commands[39].atts[0].isList = 0;\r
- commands[39].atts[1].name = "NwkAddrOfInterest";\r
- commands[39].atts[1].size = 2;\r
- commands[39].atts[1].isList = 0;\r
- commands[39].atts[2].name = "Len";\r
- commands[39].atts[2].size = 1;\r
- commands[39].atts[2].isList = 0;\r
- commands[39].atts[3].name = "UserDescriptor";\r
- commands[39].atts[3].size = 1;\r
- commands[39].atts[3].isList = 16;\r
- commands[40].cmdName = "ZDO_SERVER_DISC_REQ";\r
- commands[40].cmdDesc =\r
- " The command is used for local device to discover the location of a particular system\n"\r
- " server or servers as indicated by the ServerMask parameter. The destination addressing\n"\r
- " on this request is broadcast to all RxOnWhenIdle devices.\n";\r
- commands[40].attNum = 1;\r
- commands[40].atts[0].name = "ServerMask";\r
- commands[40].atts[0].size = 2;\r
- commands[40].atts[0].isList = 0;\r
- commands[41].cmdName = "ZDO_END_DEVICE_BIND_REQ";\r
- commands[41].cmdDesc =\r
- " This command is generated to request an End Device Bind with the destination device.\n";\r
- commands[41].attNum = 9;\r
- commands[41].atts[0].name = "DstAddr";\r
- commands[41].atts[0].size = 2;\r
- commands[41].atts[0].isList = 0;\r
- commands[41].atts[1].name = "LocalCoordinator";\r
- commands[41].atts[1].size = 2;\r
- commands[41].atts[1].isList = 0;\r
- commands[41].atts[2].name = "CoordinatorIEEE";\r
- commands[41].atts[2].size = 8;\r
- commands[41].atts[2].isList = 0;\r
- commands[41].atts[3].name = "EndPoint";\r
- commands[41].atts[3].size = 1;\r
- commands[41].atts[3].isList = 0;\r
- commands[41].atts[4].name = "ProfileID";\r
- commands[41].atts[4].size = 2;\r
- commands[41].atts[4].isList = 0;\r
- commands[41].atts[5].name = "NumInClusters";\r
- commands[41].atts[5].size = 1;\r
- commands[41].atts[5].isList = 0;\r
- commands[41].atts[6].name = "InClusterList";\r
- commands[41].atts[6].size = 2;\r
- commands[41].atts[6].isList = 16;\r
- commands[41].atts[7].name = "NumOutClusters";\r
- commands[41].atts[7].size = 1;\r
- commands[41].atts[7].isList = 0;\r
- commands[41].atts[8].name = "OutClusterList";\r
- commands[41].atts[8].size = 2;\r
- commands[41].atts[8].isList = 16;\r
- commands[42].cmdName = "ZDO_BIND_REQ";\r
- commands[42].cmdDesc = " This command is generated to request a Bind.\n";\r
- commands[42].attNum = 7;\r
- commands[42].atts[0].name = "DstAddr";\r
- commands[42].atts[0].size = 2;\r
- commands[42].atts[0].isList = 0;\r
- commands[42].atts[1].name = "SrcAddress";\r
- commands[42].atts[1].size = 8;\r
- commands[42].atts[1].isList = 0;\r
- commands[42].atts[2].name = "SrcEndpoint";\r
- commands[42].atts[2].size = 1;\r
- commands[42].atts[2].isList = 0;\r
- commands[42].atts[3].name = "ClusterID";\r
- commands[42].atts[3].size = 2;\r
- commands[42].atts[3].isList = 0;\r
- commands[42].atts[4].name = "DstAddrMode";\r
- commands[42].atts[4].size = 1;\r
- commands[42].atts[4].isList = 0;\r
- commands[42].atts[5].name = "DstAddress";\r
- commands[42].atts[5].size = 8;\r
- commands[42].atts[5].isList = 0;\r
- commands[42].atts[6].name = "DstEndpoint";\r
- commands[42].atts[6].size = 1;\r
- commands[42].atts[6].isList = 0;\r
- commands[43].cmdName = "ZDO_UNBIND_REQ";\r
- commands[43].cmdDesc =\r
- " This command is generated to request an un-bind.\n";\r
- commands[43].attNum = 7;\r
- commands[43].atts[0].name = "DstAddr";\r
- commands[43].atts[0].size = 2;\r
- commands[43].atts[0].isList = 0;\r
- commands[43].atts[1].name = "SrcAddress";\r
- commands[43].atts[1].size = 8;\r
- commands[43].atts[1].isList = 0;\r
- commands[43].atts[2].name = "SrcEndpoint";\r
- commands[43].atts[2].size = 1;\r
- commands[43].atts[2].isList = 0;\r
- commands[43].atts[3].name = "ClusterID";\r
- commands[43].atts[3].size = 2;\r
- commands[43].atts[3].isList = 0;\r
- commands[43].atts[4].name = "DstAddrMode";\r
- commands[43].atts[4].size = 1;\r
- commands[43].atts[4].isList = 0;\r
- commands[43].atts[5].name = "DstAddress";\r
- commands[43].atts[5].size = 8;\r
- commands[43].atts[5].isList = 0;\r
- commands[43].atts[6].name = "DstEndpoint";\r
- commands[43].atts[6].size = 1;\r
- commands[43].atts[6].isList = 0;\r
- commands[44].cmdName = "ZDO_MGMT_NWK_DISC_REQ";\r
- commands[44].cmdDesc =\r
- " This command is generated to request the destination device to perform a network\n"\r
- " discovery.\n";\r
- commands[44].attNum = 4;\r
- commands[44].atts[0].name = "DstAddr";\r
- commands[44].atts[0].size = 2;\r
- commands[44].atts[0].isList = 0;\r
- commands[44].atts[1].name = "ScanChannels";\r
- commands[44].atts[1].size = 4;\r
- commands[44].atts[1].isList = 0;\r
- commands[44].atts[2].name = "ScanDuration";\r
- commands[44].atts[2].size = 1;\r
- commands[44].atts[2].isList = 0;\r
- commands[44].atts[3].name = "StartIndex";\r
- commands[44].atts[3].size = 1;\r
- commands[44].atts[3].isList = 0;\r
- commands[45].cmdName = "ZDO_MGMT_LQI_REQ";\r
- commands[45].cmdDesc =\r
- " This command is generated to request the destination device to perform a LQI query\n"\r
- " of other devices in the network.\n";\r
- commands[45].attNum = 2;\r
- commands[45].atts[0].name = "DstAddr";\r
- commands[45].atts[0].size = 2;\r
- commands[45].atts[0].isList = 0;\r
- commands[45].atts[1].name = "StartIndex";\r
- commands[45].atts[1].size = 1;\r
- commands[45].atts[1].isList = 0;\r
- commands[46].cmdName = "ZDO_MGMT_RTG_REQ";\r
- commands[46].cmdDesc =\r
- " This command is generated to request the Routing Table of the destination device\n";\r
- commands[46].attNum = 2;\r
- commands[46].atts[0].name = "DstAddr";\r
- commands[46].atts[0].size = 2;\r
- commands[46].atts[0].isList = 0;\r
- commands[46].atts[1].name = "StartIndex";\r
- commands[46].atts[1].size = 1;\r
- commands[46].atts[1].isList = 0;\r
- commands[47].cmdName = "ZDO_MGMT_BIND_REQ";\r
- commands[47].cmdDesc =\r
- " This command is generated to request the Binding Table of the destination device.\n";\r
- commands[47].attNum = 2;\r
- commands[47].atts[0].name = "DstAddr";\r
- commands[47].atts[0].size = 2;\r
- commands[47].atts[0].isList = 0;\r
- commands[47].atts[1].name = "StartIndex";\r
- commands[47].atts[1].size = 1;\r
- commands[47].atts[1].isList = 0;\r
- commands[48].cmdName = "ZDO_MGMT_LEAVE_REQ";\r
- commands[48].cmdDesc =\r
- " This command is generated to request a Management Leave Request for the target device\n";\r
- commands[48].attNum = 3;\r
- commands[48].atts[0].name = "DstAddr";\r
- commands[48].atts[0].size = 2;\r
- commands[48].atts[0].isList = 0;\r
- commands[48].atts[1].name = "DeviceAddr";\r
- commands[48].atts[1].size = 8;\r
- commands[48].atts[1].isList = 0;\r
- commands[48].atts[2].name = "RemoveChildre_Rejoin";\r
- commands[48].atts[2].size = 1;\r
- commands[48].atts[2].isList = 0;\r
- commands[49].cmdName = "ZDO_MGMT_DIRECT_JOIN_REQ";\r
- commands[49].cmdDesc =\r
- " This command is generated to request the Management Direct Join Request of a designated\n"\r
- " device.\n";\r
- commands[49].attNum = 3;\r
- commands[49].atts[0].name = "DstAddr";\r
- commands[49].atts[0].size = 2;\r
- commands[49].atts[0].isList = 0;\r
- commands[49].atts[1].name = "DeviceAddr";\r
- commands[49].atts[1].size = 8;\r
- commands[49].atts[1].isList = 0;\r
- commands[49].atts[2].name = "CapInfo";\r
- commands[49].atts[2].size = 1;\r
- commands[49].atts[2].isList = 0;\r
- commands[50].cmdName = "ZDO_MGMT_PERMIT_JOIN_REQ";\r
- commands[50].cmdDesc =\r
- " This command is generated to set the Permit Join for the destination device\n";\r
- commands[50].attNum = 4;\r
- commands[50].atts[0].name = "AddrMode";\r
- commands[50].atts[0].size = 1;\r
- commands[50].atts[0].isList = 0;\r
- commands[50].atts[1].name = "DstAddr";\r
- commands[50].atts[1].size = 2;\r
- commands[50].atts[1].isList = 0;\r
- commands[50].atts[2].name = "Duration";\r
- commands[50].atts[2].size = 1;\r
- commands[50].atts[2].isList = 0;\r
- commands[50].atts[3].name = "TCSignificance";\r
- commands[50].atts[3].size = 1;\r
- commands[50].atts[3].isList = 0;\r
- commands[51].cmdName = "ZDO_MGMT_NWK_UPDATE_REQ";\r
- commands[51].cmdDesc =\r
- " This command is provided to allow updating of network configuration parameters or\n"\r
- " to request information from devices on network conditions in the local operating\n"\r
- " environment.\n";\r
- commands[51].attNum = 6;\r
- commands[51].atts[0].name = "DstAddr";\r
- commands[51].atts[0].size = 2;\r
- commands[51].atts[0].isList = 0;\r
- commands[51].atts[1].name = "DstAddrMode";\r
- commands[51].atts[1].size = 1;\r
- commands[51].atts[1].isList = 0;\r
- commands[51].atts[2].name = "ChannelMask";\r
- commands[51].atts[2].size = 4;\r
- commands[51].atts[2].isList = 0;\r
- commands[51].atts[3].name = "ScanDuration";\r
- commands[51].atts[3].size = 1;\r
- commands[51].atts[3].isList = 0;\r
- commands[51].atts[4].name = "ScanCount";\r
- commands[51].atts[4].size = 1;\r
- commands[51].atts[4].isList = 0;\r
- commands[51].atts[5].name = "NwkManagerAddr";\r
- commands[51].atts[5].size = 2;\r
- commands[51].atts[5].isList = 0;\r
- commands[52].cmdName = "ZDO_STARTUP_FROM_APP";\r
- commands[52].cmdDesc = " This command starts the device in the network.\n";\r
- commands[52].attNum = 1;\r
- commands[52].atts[0].name = "StartDelay";\r
- commands[52].atts[0].size = 2;\r
- commands[52].atts[0].isList = 0;\r
- commands[53].cmdName = "ZDO_AUTO_FIND_DESTINATION";\r
- commands[53].cmdDesc =\r
- " This function will issue a Match Description Request for the requested endpoint\n"\r
- " outputs. This message will generate a broadcast message.\n";\r
- commands[53].attNum = 1;\r
- commands[53].atts[0].name = "Endpoint";\r
- commands[53].atts[0].size = 1;\r
- commands[53].atts[0].isList = 0;\r
- commands[54].cmdName = "ZDO_SET_LINK_KEY";\r
- commands[54].cmdDesc =\r
- " This command sets the application link key for a given device.\n";\r
- commands[54].attNum = 3;\r
- commands[54].atts[0].name = "ShortAddr";\r
- commands[54].atts[0].size = 2;\r
- commands[54].atts[0].isList = 0;\r
- commands[54].atts[1].name = "IEEEaddr";\r
- commands[54].atts[1].size = 8;\r
- commands[54].atts[1].isList = 0;\r
- commands[54].atts[2].name = "LinkKeyData";\r
- commands[54].atts[2].size = 16;\r
- commands[54].atts[2].isList = 0;\r
- commands[55].cmdName = "ZDO_REMOVE_LINK_KEY";\r
- commands[55].cmdDesc =\r
- " This command removes the application link key of a given device.\n";\r
- commands[55].attNum = 1;\r
- commands[55].atts[0].name = "IEEEaddr";\r
- commands[55].atts[0].size = 8;\r
- commands[55].atts[0].isList = 0;\r
- commands[56].cmdName = "ZDO_GET_LINK_KEY";\r
- commands[56].cmdDesc =\r
- " This command retrieves the application link key of a given device.\n";\r
- commands[56].attNum = 1;\r
- commands[56].atts[0].name = "IEEEaddr";\r
- commands[56].atts[0].size = 8;\r
- commands[56].atts[0].isList = 0;\r
- commands[57].cmdName = "ZDO_NWK_DISCOVERY_REQ";\r
- commands[57].cmdDesc =\r
- " This command is used to initiate a network discovery (active scan).\n";\r
- commands[57].attNum = 2;\r
- commands[57].atts[0].name = "ScanChannels";\r
- commands[57].atts[0].size = 4;\r
- commands[57].atts[0].isList = 0;\r
- commands[57].atts[1].name = "ScanDuration";\r
- commands[57].atts[1].size = 1;\r
- commands[57].atts[1].isList = 0;\r
- commands[58].cmdName = "ZDO_JOIN_REQ";\r
- commands[58].cmdDesc =\r
- " This command is used to request the device to join itself to a parent device on\n"\r
- " a network.\n";\r
- commands[58].attNum = 6;\r
- commands[58].atts[0].name = "LogicalChannel";\r
- commands[58].atts[0].size = 1;\r
- commands[58].atts[0].isList = 0;\r
- commands[58].atts[1].name = "PanID";\r
- commands[58].atts[1].size = 2;\r
- commands[58].atts[1].isList = 0;\r
- commands[58].atts[2].name = "ExtendedPanID";\r
- commands[58].atts[2].size = 8;\r
- commands[58].atts[2].isList = 0;\r
- commands[58].atts[3].name = "ChosenParent";\r
- commands[58].atts[3].size = 2;\r
- commands[58].atts[3].isList = 0;\r
- commands[58].atts[4].name = "ParentDepth";\r
- commands[58].atts[4].size = 1;\r
- commands[58].atts[4].isList = 0;\r
- commands[58].atts[5].name = "StackProfile";\r
- commands[58].atts[5].size = 1;\r
- commands[58].atts[5].isList = 0;\r
- commands[59].cmdName = "ZDO_MSG_CB_REGISTER";\r
- commands[59].cmdDesc = " This command registers for a ZDO callback.\n";\r
- commands[59].attNum = 1;\r
- commands[59].atts[0].name = "ClusterID";\r
- commands[59].atts[0].size = 2;\r
- commands[59].atts[0].isList = 0;\r
- commands[60].cmdName = "ZDO_MSG_CB_REMOVE";\r
- commands[60].cmdDesc =\r
- " This command removes a registration for a ZDO callback\n";\r
- commands[60].attNum = 1;\r
- commands[60].atts[0].name = "ClusterID";\r
- commands[60].atts[0].size = 2;\r
- commands[60].atts[0].isList = 0;\r
- commands[61].cmdName = "ZB_SYSTEM_RESET";\r
- commands[61].cmdDesc =\r
- " This command will reset the device by using a soft reset (i.e. a jump to the reset\n"\r
- " vector) vice a hardware reset (i.e. watchdog reset.) This is especially useful in\n"\r
- " the CC2531, for instance, so that the USB host does not have to contend with the\n"\r
- " USB H/W resetting (and thus causing the USB host to re-enumerate the device which\n"\r
- " can cause an open virtual serial port to hang.)\n";\r
- commands[61].attNum = 0;\r
- commands[62].cmdName = "ZB_APP_REGISTER_REQ";\r
- commands[62].cmdDesc =\r
- " This command enables the application processor to register its application with\n"\r
- " a ZNP device.\n";\r
- commands[62].attNum = 9;\r
- commands[62].atts[0].name = "AppEndpoint";\r
- commands[62].atts[0].size = 1;\r
- commands[62].atts[0].isList = 0;\r
- commands[62].atts[1].name = "AppProfileId";\r
- commands[62].atts[1].size = 2;\r
- commands[62].atts[1].isList = 0;\r
- commands[62].atts[2].name = "DeviceId";\r
- commands[62].atts[2].size = 2;\r
- commands[62].atts[2].isList = 0;\r
- commands[62].atts[3].name = "DeviceVersion";\r
- commands[62].atts[3].size = 1;\r
- commands[62].atts[3].isList = 0;\r
- commands[62].atts[4].name = "Unused";\r
- commands[62].atts[4].size = 1;\r
- commands[62].atts[4].isList = 0;\r
- commands[62].atts[5].name = "InputCommandsNum";\r
- commands[62].atts[5].size = 1;\r
- commands[62].atts[5].isList = 0;\r
- commands[62].atts[6].name = "InputCommandsList";\r
- commands[62].atts[6].size = 2;\r
- commands[62].atts[6].isList = 255;\r
- commands[62].atts[7].name = "OutputCommandsNum";\r
- commands[62].atts[7].size = 1;\r
- commands[62].atts[7].isList = 0;\r
- commands[62].atts[8].name = "OutputCommandsList";\r
- commands[62].atts[8].size = 2;\r
- commands[62].atts[8].isList = 255;\r
- commands[63].cmdName = "ZB_START_REQ";\r
- commands[63].cmdDesc =\r
- " This command starts the ZigBee stack. When the ZigBee stack starts, the device reads\n"\r
- " configuration parameters from nonvolatile memory and the device joins its network.\n"\r
- " The ZigBee stack calls the zb_StartConfirm callback function when the startup process\n"\r
- " completes. After the start request process completes, the device is ready to send,\n"\r
- " receive, and route network traffic.\n";\r
- commands[63].attNum = 0;\r
- commands[64].cmdName = "ZB_PERMIT_JOINING_REQ";\r
- commands[64].cmdDesc =\r
- " This command is used to control the joining permissions and thus allows or disallows\n"\r
- " new devices from joining the network.\n";\r
- commands[64].attNum = 2;\r
- commands[64].atts[0].name = "Destination";\r
- commands[64].atts[0].size = 2;\r
- commands[64].atts[0].isList = 0;\r
- commands[64].atts[1].name = "Timeout";\r
- commands[64].atts[1].size = 1;\r
- commands[64].atts[1].isList = 0;\r
- commands[65].cmdName = "ZB_BIND_DEVICE";\r
- commands[65].cmdDesc =\r
- " This command establishes or removes a ‘binding’ between two devices. Once bound,\n"\r
- " an application can send messages to a device by referencing the commandId for the\n"\r
- " binding.\n";\r
- commands[65].attNum = 3;\r
- commands[65].atts[0].name = "Create";\r
- commands[65].atts[0].size = 1;\r
- commands[65].atts[0].isList = 0;\r
- commands[65].atts[1].name = "CommandId";\r
- commands[65].atts[1].size = 2;\r
- commands[65].atts[1].isList = 0;\r
- commands[65].atts[2].name = "DstIeee";\r
- commands[65].atts[2].size = 8;\r
- commands[65].atts[2].isList = 0;\r
- commands[66].cmdName = "ZB_ALLOW_BIND";\r
- commands[66].cmdDesc =\r
- " This command puts the device into the Allow Binding Mode for a given period of time.\n"\r
- " A peer device can establish a binding to a device in the Allow Binding Mode by calling\n"\r
- " zb_BindDevice with a destination address of NULL.\n";\r
- commands[66].attNum = 1;\r
- commands[66].atts[0].name = "Timeout";\r
- commands[66].atts[0].size = 1;\r
- commands[66].atts[0].isList = 0;\r
- commands[67].cmdName = "ZB_SEND_DATA_REQ";\r
- commands[67].cmdDesc =\r
- " This command initiates transmission of data to a peer device.\n";\r
- commands[67].attNum = 7;\r
- commands[67].atts[0].name = "Destination";\r
- commands[67].atts[0].size = 2;\r
- commands[67].atts[0].isList = 0;\r
- commands[67].atts[1].name = "CommandId";\r
- commands[67].atts[1].size = 2;\r
- commands[67].atts[1].isList = 0;\r
- commands[67].atts[2].name = "Handle";\r
- commands[67].atts[2].size = 1;\r
- commands[67].atts[2].isList = 0;\r
- commands[67].atts[3].name = "Ack";\r
- commands[67].atts[3].size = 1;\r
- commands[67].atts[3].isList = 0;\r
- commands[67].atts[4].name = "Radius";\r
- commands[67].atts[4].size = 1;\r
- commands[67].atts[4].isList = 0;\r
- commands[67].atts[5].name = "Len";\r
- commands[67].atts[5].size = 1;\r
- commands[67].atts[5].isList = 0;\r
- commands[67].atts[6].name = "Data";\r
- commands[67].atts[6].size = 1;\r
- commands[67].atts[6].isList = 99;\r
- commands[68].cmdName = "ZB_FIND_DEVICE_REQ";\r
- commands[68].cmdDesc =\r
- " This command is used to determine the short address for a device in the network.\n"\r
- " The device initiating a call to zbFindDeviceRequest and the device being discovered\n"\r
- " must both be a member of the same network. When the search is complete, the zbFindDeviceConfirm\n"\r
- " callback function is called.\n";\r
- commands[68].attNum = 1;\r
- commands[68].atts[0].name = "SearchKey";\r
- commands[68].atts[0].size = 8;\r
- commands[68].atts[0].isList = 0;\r
- commands[69].cmdName = "ZB_WRITE_CONFIGURATION";\r
- commands[69].cmdDesc =\r
- " This command is used to write a Configuration Property to nonvolatile memory.\n";\r
- commands[69].attNum = 3;\r
- commands[69].atts[0].name = "ConfigId";\r
- commands[69].atts[0].size = 1;\r
- commands[69].atts[0].isList = 0;\r
- commands[69].atts[1].name = "Len";\r
- commands[69].atts[1].size = 1;\r
- commands[69].atts[1].isList = 0;\r
- commands[69].atts[2].name = "Value";\r
- commands[69].atts[2].size = 1;\r
- commands[69].atts[2].isList = 128;\r
- commands[70].cmdName = "ZB_GET_DEVICE_INFO";\r
- commands[70].cmdDesc =\r
- " This command retrieves a Device Information Property.\n";\r
- commands[70].attNum = 1;\r
- commands[70].atts[0].name = "Param";\r
- commands[70].atts[0].size = 1;\r
- commands[70].atts[0].isList = 0;\r
- commands[71].cmdName = "ZB_READ_CONFIGURATION";\r
- commands[71].cmdDesc =\r
- " This command is used to get a configuration property from nonvolatile memory.\n";\r
- commands[71].attNum = 1;\r
- commands[71].atts[0].name = "ConfigId";\r
- commands[71].atts[0].size = 1;\r
- commands[71].atts[0].isList = 0;\r
-}\r
-\r
-/********************************************************************\r
- * START OF SYS CALL BACK FUNCTIONS\r
- */\r
-\r
-static uint8_t mtSysPingSrspCb(PingSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysPingSrspCb\n");\r
- consolePrint("Capabilities: 0x%04X\n", msg->Capabilities);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysGetExtAddrSrspCb(GetExtAddrSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysGetExtAddrSrspCb\n");\r
- consolePrint("ExtAddr: 0x%016llX\n", (long long unsigned int) msg->ExtAddr);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysRamReadSrspCb(RamReadSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysRamReadSrspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("Len: 0x%02X\n", msg->Len);\r
- uint32_t i;\r
- for (i = 0; i < msg->Len; i++)\r
- {\r
- consolePrint("Value[%d]: 0x%02X\n", i, msg->Value[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("RamReadSrsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
- return msg->Status;\r
-}\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("ZNP Version: %d.%d.%d\n", msg->MajorRel, msg->MinorRel,\r
- msg->HwRev);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysVersionSrspCb(VersionSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysVersionSrspCb\n");\r
- consolePrint("TransportRev: 0x%02X\n", msg->TransportRev);\r
- consolePrint("Product: 0x%02X\n", msg->Product);\r
- consolePrint("MajorRel: 0x%02X\n", msg->MajorRel);\r
- consolePrint("MinorRel: 0x%02X\n", msg->MinorRel);\r
- consolePrint("MaintRel: 0x%02X\n", msg->MaintRel);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysOsalNvReadSrspCb(OsalNvReadSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysOsalNvReadSrspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("Len: 0x%02X\n", msg->Len);\r
- uint32_t i;\r
- for (i = 0; i < msg->Len; i++)\r
- {\r
- consolePrint("Value[%d]: 0x%02X\n", i, msg->Value[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("OsalNvReadSrsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
- return msg->Status;\r
-}\r
-static uint8_t mtSysOsalNvLengthSrspCb(OsalNvLengthSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysOsalNvLengthSrspCb\n");\r
- consolePrint("ItemLen: 0x%04X\n", msg->ItemLen);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysOsalTimerExpiredCb(OsalTimerExpiredFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysOsalTimerExpiredCb\n");\r
- consolePrint("Id: 0x%02X\n", msg->Id);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysStackTuneSrspCb(StackTuneSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysStackTuneSrspCb\n");\r
- consolePrint("Value: 0x%02X\n", msg->Value);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysAdcReadSrspCb(AdcReadSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysAdcReadSrspCb\n");\r
- consolePrint("Value: 0x%04X\n", msg->Value);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysGpioSrspCb(GpioSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysGpioSrspCb\n");\r
- consolePrint("Value: 0x%02X\n", msg->Value);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysRandomSrspCb(RandomSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysRandomSrspCb\n");\r
- consolePrint("Value: 0x%04X\n", msg->Value);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysGetTimeSrspCb(GetTimeSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysGetTimeSrspCb\n");\r
- consolePrint("UTCTime: 0x%08X\n", msg->UTCTime);\r
- consolePrint("Hour: 0x%02X\n", msg->Hour);\r
- consolePrint("Minute: 0x%02X\n", msg->Minute);\r
- consolePrint("Second: 0x%02X\n", msg->Second);\r
- consolePrint("Month: 0x%02X\n", msg->Month);\r
- consolePrint("Day: 0x%02X\n", msg->Day);\r
- consolePrint("Year: 0x%04X\n", msg->Year);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSysSetTxPowerSrspCb(SetTxPowerSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSysSetTxPowerSrspCb\n");\r
- consolePrint("TxPower: 0x%02X\n", msg->TxPower);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-/********************************************************************\r
- * END OF SYS CALL BACK FUNCTIONS\r
- */\r
-\r
-/********************************************************************\r
- * START OF ZDO CALL BACK FUNCTIONS\r
- */\r
-\r
-/********************************************************************\r
- * @fn Callback function for ZDO State Change Indication\r
-\r
- * @brief receives the AREQ status and specifies the change ZDO state\r
- *\r
- * @param uint8 zdoState\r
- *\r
- * @return SUCCESS or FAILURE\r
- */\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState)\r
-{\r
- SET_RSP_COLOR();\r
-\r
- switch ((devStates_t) newDevState)\r
- {\r
- case DEV_HOLD:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not started automatically\n");\r
- break;\r
- case DEV_INIT:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not connected to anything\n");\r
- break;\r
- case DEV_NWK_DISC:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Discovering PAN's to join\n");\r
- consolePrint("Network Discovering\n");\r
- break;\r
- case DEV_NWK_JOINING:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: Joining a PAN\n");\r
- consolePrint("Network Joining\n");\r
- break;\r
- case DEV_NWK_REJOIN:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: ReJoining a PAN, only for end devices\n");\r
- consolePrint("Network Rejoining\n");\r
- break;\r
- case DEV_END_DEVICE_UNAUTH:\r
- consolePrint("Network Authenticating\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Joined but not yet authenticated by trust center\n");\r
- break;\r
- case DEV_END_DEVICE:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as device after authentication\n");\r
- break;\r
- case DEV_ROUTER:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device joined, authenticated and is a router\n");\r
- break;\r
- case DEV_COORD_STARTING:\r
- consolePrint("Network Starting\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_ZB_COORD:\r
- consolePrint("Network Started\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_NWK_ORPHAN:\r
- consolePrint("Network Orphaned\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device has lost information about its parent\n");\r
- break;\r
- default:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: unknown state");\r
- break;\r
- }\r
-\r
- devState = (devStates_t) newDevState;\r
-\r
- SET_NRM_COLOR();\r
-\r
- return SUCCESS;\r
-}\r
-\r
-static uint8_t mtZdoGetLinkKeyCb(GetLinkKeySrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
-\r
- consolePrint("mtZdoGetLinkKeyCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("IEEEAddr: 0x%016llX\n",\r
- (long long unsigned int) msg->IEEEAddr);\r
- }\r
- else\r
- {\r
- consolePrint("GetLinkKey Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoNwkAddrRspCb(NwkAddrRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoNwkAddrRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("IEEEAddr: 0x%016llX\n",\r
- (long long unsigned int) msg->IEEEAddr);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("StartIndex: 0x%02X\n", msg->StartIndex);\r
- consolePrint("NumAssocDev: 0x%02X\n", msg->NumAssocDev);\r
- uint32_t i;\r
- for (i = 0; i < msg->NumAssocDev; i++)\r
- {\r
- consolePrint("AssocDevList[%d]: 0x%04X\n", i, msg->AssocDevList[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("NwkAddrRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoIeeeAddrRspCb(IeeeAddrRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoIeeeAddrRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("IEEEAddr: 0x%016llX\n",\r
- (long long unsigned int) msg->IEEEAddr);\r
- //consolePrint("%08X\n", msg -> IEEEAddr);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("StartIndex: 0x%02X\n", msg->StartIndex);\r
- consolePrint("NumAssocDev: 0x%02X\n", msg->NumAssocDev);\r
- uint32_t i;\r
- for (i = 0; i < msg->NumAssocDev; i++)\r
- {\r
- consolePrint("AssocDevList[%d]: 0x%04X\n", i, msg->AssocDevList[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("IeeeAddrRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoNodeDescRspCb(NodeDescRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoNodeDescRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("LoTy_ComDescAv_UsrDesAv: 0x%02X\n",\r
- msg->LoTy_ComDescAv_UsrDesAv);\r
- consolePrint("APSFlg_FrqBnd: 0x%02X\n", msg->APSFlg_FrqBnd);\r
- consolePrint("MACCapFlg: 0x%02X\n", msg->MACCapFlg);\r
- consolePrint("ManufacturerCode: 0x%04X\n", msg->ManufacturerCode);\r
- consolePrint("MaxBufferSize: 0x%02X\n", msg->MaxBufferSize);\r
- consolePrint("MaxTransferSize: 0x%04X\n", msg->MaxTransferSize);\r
- consolePrint("ServerMask: 0x%04X\n", msg->ServerMask);\r
- consolePrint("MaxOutTransferSize: 0x%04X\n", msg->MaxOutTransferSize);\r
- consolePrint("DescriptorCapabilities: 0x%02X\n",\r
- msg->DescriptorCapabilities);\r
- }\r
- else\r
- {\r
- consolePrint("NodeDescRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoPowerDescRspCb(PowerDescRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoPowerDescRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("CurrntPwrMode_AvalPwrSrcs: 0x%02X\n",\r
- msg->CurrntPwrMode_AvalPwrSrcs);\r
- consolePrint("CurrntPwrSrc_CurrntPwrSrcLvl: 0x%02X\n",\r
- msg->CurrntPwrSrc_CurrntPwrSrcLvl);\r
- }\r
- else\r
- {\r
- consolePrint("PowerDescRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoSimpleDescRspCb(SimpleDescRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoSimpleDescRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("Len: 0x%02X\n", msg->Len);\r
- consolePrint("Endpoint: 0x%02X\n", msg->Endpoint);\r
- consolePrint("ProfileID: 0x%04X\n", msg->ProfileID);\r
- consolePrint("DeviceID: 0x%04X\n", msg->DeviceID);\r
- consolePrint("DeviceVersion: 0x%02X\n", msg->DeviceVersion);\r
- consolePrint("NumInClusters: 0x%02X\n", msg->NumInClusters);\r
- uint32_t i;\r
- for (i = 0; i < msg->NumInClusters; i++)\r
- {\r
- consolePrint("InClusterList[%d]: 0x%04X\n", i,\r
- msg->InClusterList[i]);\r
- }\r
- consolePrint("NumOutClusters: 0x%02X\n", msg->NumOutClusters);\r
- for (i = 0; i < msg->NumOutClusters; i++)\r
- {\r
- consolePrint("OutClusterList[%d]: 0x%04X\n", i,\r
- msg->OutClusterList[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("SimpleDescRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoActiveEpRspCb(ActiveEpRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoActiveEpRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("ActiveEPCount: 0x%02X\n", msg->ActiveEPCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->ActiveEPCount; i++)\r
- {\r
- consolePrint("ActiveEPList[%d]: 0x%02X\n", i, msg->ActiveEPList[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("ActiveEpRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMatchDescRspCb(MatchDescRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMatchDescRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("MatchLength: 0x%02X\n", msg->MatchLength);\r
- uint32_t i;\r
- for (i = 0; i < msg->MatchLength; i++)\r
- {\r
- consolePrint("MatchList[%d]: 0x%02X\n", i, msg->MatchList[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("MatchDescRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoComplexDescRspCb(ComplexDescRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoComplexDescRspCb\n");\r
-\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("ComplexLength: 0x%02X\n", msg->ComplexLength);\r
- uint32_t i;\r
- for (i = 0; i < msg->ComplexLength; i++)\r
- {\r
- consolePrint("ComplexList[%d]: 0x%02X\n", i, msg->ComplexList[i]);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoUserDescRspCb(UserDescRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoUserDescRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("Len: 0x%02X\n", msg->Len);\r
- uint32_t i;\r
- for (i = 0; i < msg->Len; i++)\r
- {\r
- consolePrint("CUserDescriptor[%d]: 0x%02X\n", i,\r
- msg->CUserDescriptor[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("UserDescRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoUserDescConfCb(UserDescConfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoUserDescConfCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- }\r
- else\r
- {\r
- consolePrint("UserDescConf Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoServerDiscRspCb(ServerDiscRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoServerDiscRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("ServerMask: 0x%04X\n", msg->ServerMask);\r
- }\r
- else\r
- {\r
- consolePrint("ServerDiscRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoEndDeviceBindRspCb(EndDeviceBindRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoEndDeviceBindRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("EndDeviceBindRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoBindRspCb(BindRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoBindRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("BindRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoUnbindRspCb(UnbindRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoUnbindRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("UnbindRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMgmtNwkDiscRspCb(MgmtNwkDiscRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMgmtNwkDiscRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NetworkCount: 0x%02X\n", msg->NetworkCount);\r
- consolePrint("StartIndex: 0x%02X\n", msg->StartIndex);\r
- consolePrint("NetworkListCount: 0x%02X\n", msg->NetworkListCount);\r
-\r
- uint32_t i;\r
- for (i = 0; i < msg->NetworkListCount; i++)\r
- {\r
- consolePrint("mtZdoNetworkListItems[%d]:\n", i);\r
- consolePrint("\tPanID: 0x%016llX\n",\r
- (long long unsigned int) msg->NetworkList[i].PanID);\r
- consolePrint("\tLogicalChannel: 0x%02X\n",\r
- msg->NetworkList[i].LogicalChannel);\r
- consolePrint("\tStackProf_ZigVer: 0x%02X\n",\r
- msg->NetworkList[i].StackProf_ZigVer);\r
- consolePrint("\tBeacOrd_SupFramOrd: 0x%02X\n",\r
- msg->NetworkList[i].BeacOrd_SupFramOrd);\r
- consolePrint("\tPermitJoin: 0x%02X\n\n",\r
- msg->NetworkList[i].PermitJoin);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("MgmtNwkDiscRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMgmtLqiRspCb(MgmtLqiRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMgmtLqiRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("NeighborTableEntries: 0x%02X\n",\r
- msg->NeighborTableEntries);\r
- consolePrint("StartIndex: 0x%02X\n", msg->StartIndex);\r
- consolePrint("NeighborLqiListCount: 0x%02X\n",\r
- msg->NeighborLqiListCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->NeighborLqiListCount; i++)\r
- {\r
-\r
- consolePrint("mtZdoNeighborLqiListItem[%d]:\n", i);\r
-\r
- consolePrint("\tExtendedPanID: 0x%016llX\n",\r
- (long long unsigned int) msg->NeighborLqiList[i].ExtendedPanID);\r
- consolePrint("\tExtendedAddress: 0x%016llX\n",\r
- (long long unsigned int) msg->NeighborLqiList[i].ExtendedAddress);\r
- consolePrint("\tNetworkAddress: 0x%04X\n",\r
- msg->NeighborLqiList[i].NetworkAddress);\r
- consolePrint("\tDevTyp_RxOnWhenIdle_Relat: 0x%02X\n",\r
- msg->NeighborLqiList[i].DevTyp_RxOnWhenIdle_Relat);\r
- consolePrint("\tPermitJoining: 0x%02X\n",\r
- msg->NeighborLqiList[i].PermitJoining);\r
- consolePrint("\tDepth: 0x%02X\n", msg->NeighborLqiList[i].Depth);\r
- consolePrint("\tLQI: 0x%02X\n", msg->NeighborLqiList[i].LQI);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("MgmtLqiRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMgmtRtgRspCb(MgmtRtgRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMgmtRtgRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("RoutingTableEntries: 0x%02X\n", msg->RoutingTableEntries);\r
- consolePrint("StartIndex: 0x%02X\n", msg->StartIndex);\r
- consolePrint("RoutingTableListCount: 0x%02X\n",\r
- msg->RoutingTableListCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->RoutingTableListCount; i++)\r
- {\r
- consolePrint("RoutingTableListItem[%d]:\n", i);\r
- consolePrint("\tDstAddr: 0x%04X\n",\r
- msg->RoutingTableList[i].DstAddr);\r
- consolePrint("\tStatus: 0x%02X\n", msg->RoutingTableList[i].Status);\r
- consolePrint("\tNextHop: 0x%04X\n",\r
- msg->RoutingTableList[i].NextHop);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("MgmtRtgRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMgmtBindRspCb(MgmtBindRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMgmtBindRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("BindingTableEntries: 0x%02X\n", msg->BindingTableEntries);\r
- consolePrint("StartIndex: 0x%02X\n", msg->StartIndex);\r
- consolePrint("BindingTableListCount: 0x%02X\n",\r
- msg->BindingTableListCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->BindingTableListCount; i++)\r
- {\r
- consolePrint("BindingTableList[%d]:\n", i);\r
- consolePrint("SrcIEEEAddr: 0x%016llX\n",\r
- (long long unsigned int) msg->BindingTableList[i].SrcIEEEAddr);\r
- consolePrint("\tSrcEndpoint: 0x%02X\n",\r
- msg->BindingTableList[i].SrcEndpoint);\r
- consolePrint("\tClusterID: 0x%02X\n",\r
- msg->BindingTableList[i].ClusterID);\r
- consolePrint("\tDstAddrMode: 0x%02X\n",\r
- msg->BindingTableList[i].DstAddrMode);\r
- consolePrint("DstIEEEAddr: 0x%016llX\n",\r
- (long long unsigned int) msg->BindingTableList[i].DstIEEEAddr);\r
- consolePrint("\tDstEndpoint: 0x%02X\n",\r
- msg->BindingTableList[i].DstEndpoint);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("MgmtBindRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMgmtLeaveRspCb(MgmtLeaveRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMgmtLeaveRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("MgmtLeaveRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMgmtDirectJoinRspCb(MgmtDirectJoinRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMgmtDirectJoinRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("MgmtDirectJoinRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoMgmtPermitJoinRspCb(MgmtPermitJoinRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMgmtPermitJoinRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("MgmtPermitJoinRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoEndDeviceAnnceIndCb(EndDeviceAnnceIndFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoEndDeviceAnnceIndCb\n");\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("IEEEAddr: 0x%016llX\n",\r
- (long long unsigned int) msg->IEEEAddr);\r
- consolePrint("Capabilities: 0x%02X\n", msg->Capabilities);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtZdoMatchDescRspSentCb(MatchDescRspSentFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoMatchDescRspSentCb\n");\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- consolePrint("NumInClusters: 0x%02X\n", msg->NumInClusters);\r
- uint32_t i;\r
- for (i = 0; i < msg->NumInClusters; i++)\r
- {\r
- consolePrint("InClusterList[%d]: 0x%04X\n", i, msg->InClusterList[i]);\r
- }\r
- consolePrint("NumOutClusters: 0x%02X\n", msg->NumOutClusters);\r
- for (i = 0; i < msg->NumOutClusters; i++)\r
- {\r
- consolePrint("OutClusterList[%d]: 0x%04X\n", i, msg->OutClusterList[i]);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return 0;\r
-}\r
-static uint8_t mtZdoStatusErrorRspCb(StatusErrorRspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoStatusErrorRspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("StatusErrorRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoSrcRtgIndCb(SrcRtgIndFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoSrcRtgIndCb\n");\r
- consolePrint("DstAddr: 0x%04X\n", msg->DstAddr);\r
- consolePrint("RelayCount: 0x%02X\n", msg->RelayCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->RelayCount; i++)\r
- {\r
- consolePrint("RelayList[%d]: 0x%04X\n", i, msg->RelayList[i]);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return 0;\r
-}\r
-static uint8_t mtZdoBeaconNotifyIndCb(BeaconNotifyIndFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoBeaconNotifyIndCb\n");\r
- consolePrint("BeaconCount: 0x%02X\n", msg->BeaconCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->BeaconCount; i++)\r
- {\r
- consolePrint("BeaconListItem[%d]:\n", i);\r
-\r
- consolePrint("\tSrcAddr: 0x%04X\n", msg->BeaconList[i].SrcAddr);\r
- consolePrint("\tPanId: 0x%04X\n", msg->BeaconList[i].PanId);\r
- consolePrint("\tLogicalChannel: 0x%02X\n",\r
- msg->BeaconList[i].LogicalChannel);\r
- consolePrint("\tPermitJoining: 0x%02X\n",\r
- msg->BeaconList[i].PermitJoining);\r
- consolePrint("\tRouterCap: 0x%02X\n", msg->BeaconList[i].RouterCap);\r
- consolePrint("\tPDevCap: 0x%02X\n", msg->BeaconList[i].DevCap);\r
- consolePrint("\tProtocolVer: 0x%02X\n", msg->BeaconList[i].ProtocolVer);\r
- consolePrint("\tStackProf: 0x%02X\n", msg->BeaconList[i].StackProf);\r
- consolePrint("\tLQI: 0x%02X\n", msg->BeaconList[i].Lqi);\r
- consolePrint("\tDepth: 0x%02X\n", msg->BeaconList[i].Depth);\r
- consolePrint("\tUpdateId: 0x%02X\n", msg->BeaconList[i].UpdateId);\r
- consolePrint("ExtendedPanID: 0x%016llX\n",\r
- (long long unsigned int) msg->BeaconList[i].ExtendedPanId);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return 0;\r
-}\r
-static uint8_t mtZdoJoinCnfCb(JoinCnfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoJoinCnfCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("DevAddr: 0x%04X\n", msg->DevAddr);\r
- consolePrint("ParentAddr: 0x%04X\n", msg->ParentAddr);\r
- }\r
- else\r
- {\r
- consolePrint("JoinCnf Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoNwkDiscoveryCnfCb(NwkDiscoveryCnfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoNwkDiscoveryCnfCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("NwkDiscoveryCnf Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoLeaveIndCb(LeaveIndFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtZdoLeaveIndCb\n");\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("ExtAddr: 0x%016llX\n", (long long unsigned int) msg->ExtAddr);\r
- consolePrint("Request: 0x%02X\n", msg->Request);\r
- consolePrint("Remove: 0x%02X\n", msg->Remove);\r
- consolePrint("Rejoin: 0x%02X\n", msg->Rejoin);\r
- return 0;\r
-}\r
-static uint8_t mtZdoMsgCbIncomingCb(MsgCbIncomingFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
-\r
- consolePrint("mtZdoMsgCbIncomingCb\n");\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("WasBroadcast: 0x%02X\n", msg->WasBroadcast);\r
- consolePrint("ClusterID: 0x%04X\n", msg->ClusterID);\r
- consolePrint("SecurityUse: 0x%02X\n", msg->SecurityUse);\r
- consolePrint("SeqNum: 0x%02X\n", msg->SeqNum);\r
- consolePrint("MacDstAddr: 0x%04X\n", msg->MacDstAddr);\r
- uint32_t i;\r
- for (i = 0; i < msg->MacDstAddr; i++)\r
- {\r
- consolePrint("Data[%d]: 0x%02X\n", i, msg->Data[i]);\r
- }\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-\r
-/********************************************************************\r
- * END OF ZDO CALL BACK FUNCTIONS\r
- */\r
-\r
-/********************************************************************\r
- * START OF AF CALL BACK FUNCTIONS\r
- */\r
-\r
-static uint8_t mtAfDataConfirmCb(DataConfirmFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtAfDataConfirmCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("Endpoint: 0x%02X\n", msg->Endpoint);\r
- consolePrint("TransId: 0x%02X\n", msg->TransId);\r
- }\r
- else\r
- {\r
- consolePrint("DataConfirm Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtAfIncomingMsgCb(IncomingMsgFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtAfIncomingMsgCb\n");\r
- consolePrint("GroupId: 0x%04X\n", msg->GroupId);\r
- consolePrint("ClusterId: 0x%04X\n", msg->ClusterId);\r
- consolePrint("SrcAddr: 0x%04X\n", msg->SrcAddr);\r
- consolePrint("SrcEndpoint: 0x%02X\n", msg->SrcEndpoint);\r
- consolePrint("DstEndpoint: 0x%02X\n", msg->DstEndpoint);\r
- consolePrint("WasVroadcast: 0x%02X\n", msg->WasVroadcast);\r
- consolePrint("LinkQuality: 0x%02X\n", msg->LinkQuality);\r
- consolePrint("SecurityUse: 0x%02X\n", msg->SecurityUse);\r
- consolePrint("TimeStamp: 0x%08X\n", msg->TimeStamp);\r
- consolePrint("TransSeqNum: 0x%02X\n", msg->TransSeqNum);\r
- consolePrint("Len: 0x%02X\n", msg->Len);\r
- uint32_t i;\r
- for (i = 0; i < msg->Len; i++)\r
- {\r
- consolePrint("Data[%d]: 0x%02X\n", i, msg->Data[i]);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return 0;\r
-}\r
-static uint8_t mtAfIncomingMsgExt(IncomingMsgExtFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtAfIncomingMsgExt\n");\r
- consolePrint("GroupId: 0x%04X\n", msg->GroupId);\r
- consolePrint("ClusterId: 0x%04X\n", msg->ClusterId);\r
- consolePrint("SrcAddrMode: 0x%02X\n", msg->SrcAddrMode);\r
- consolePrint("SrcAddr: 0x%016llX\n", (long long unsigned int) msg->SrcAddr);\r
- consolePrint("SrcEndpoint: 0x%02X\n", msg->SrcEndpoint);\r
- consolePrint("SrcPanId: 0x%04X\n", msg->SrcPanId);\r
- consolePrint("DstEndpoint: 0x%02X\n", msg->DstEndpoint);\r
- consolePrint("WasVroadcast: 0x%02X\n", msg->WasVroadcast);\r
- consolePrint("LinkQuality: 0x%02X\n", msg->LinkQuality);\r
- consolePrint("SecurityUse: 0x%02X\n", msg->SecurityUse);\r
- consolePrint("TimeStamp: 0x%08X\n", msg->TimeStamp);\r
- consolePrint("TransSeqNum: 0x%02X\n", msg->TransSeqNum);\r
- consolePrint("Len: 0x%02X\n", msg->Len);\r
- uint32_t i;\r
- for (i = 0; i < msg->Len; i++)\r
- {\r
- consolePrint("Data[%d]: 0x%02X\n", i, msg->Data[i]);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return 0;\r
-}\r
-static uint8_t mtAfDataRetrieveSrspCb(DataRetrieveSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtAfDataRetrieveSrspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("Length: 0x%02X\n", msg->Length);\r
- uint32_t i;\r
- for (i = 0; i < msg->Length; i++)\r
- {\r
- consolePrint("Data[%d]: 0x%02X\n", i, msg->Data[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("DataRetrieveSrsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtAfReflectErrorCb(ReflectErrorFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtAfReflectErrorCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("Endpoint: 0x%02X\n", msg->Endpoint);\r
- consolePrint("TransId: 0x%02X\n", msg->TransId);\r
- consolePrint("DstAddrMode: 0x%02X\n", msg->DstAddrMode);\r
- consolePrint("DstAddr: 0x%04X\n", msg->DstAddr);\r
- }\r
- else\r
- {\r
- consolePrint("ReflectError Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
-\r
- SET_NRM_COLOR();\r
- return msg->Status;\r
-}\r
-\r
-/********************************************************************\r
- * END OF AF CALL BACK FUNCTIONS\r
- */\r
-\r
-/********************************************************************\r
- * START OF SAPI CALL BACK FUNCTIONS\r
- */\r
-\r
-static uint8_t mtSapiReadConfigurationSrspCb(ReadConfigurationSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiReadConfigurationSrspCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- consolePrint("ConfigId: 0x%02X\n", msg->ConfigId);\r
- consolePrint("Len: 0x%02X\n", msg->Len);\r
- uint32_t i;\r
- for (i = 0; i < msg->Len; i++)\r
- {\r
- consolePrint("Value[%d]: 0x%02X\n", i, msg->Value[i]);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("ReadConfigurationSrsp Status: FAIL 0x%02X\n",\r
- msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
- return msg->Status;\r
-}\r
-static uint8_t mtSapiGetDeviceInfoSrspCb(GetDeviceInfoSrspFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiGetDeviceInfoSrspCb\n");\r
-\r
- switch (msg->Param)\r
- {\r
- case 0:\r
- consolePrint("Param: (0x%02X) State\n", msg->Param);\r
- consolePrint("Value: 0x%01X\n", msg->Value[0]);\r
- break;\r
- case 1:\r
- consolePrint("Param: (0x%02X) IEEE Address\n", msg->Param);\r
- consolePrint(\r
- "Value: 0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X\n",\r
- (unsigned char) msg->Value[0], (unsigned char) msg->Value[1],\r
- (unsigned char) msg->Value[2], (unsigned char) msg->Value[3],\r
- (unsigned char) msg->Value[4], (unsigned char) msg->Value[5],\r
- (unsigned char) msg->Value[6], (unsigned char) msg->Value[7]);\r
- break;\r
- case 2:\r
- consolePrint("Param: (0x%02X) Short Address\n", msg->Param);\r
- consolePrint("Value: 0x%04X\n",\r
- BUILD_UINT16(msg->Value[0], msg->Value[1]));\r
- break;\r
- case 3:\r
- consolePrint("Param: (0x%02X) Parent Short Address\n", msg->Param);\r
- consolePrint("Value: 0x%04X\n",\r
- BUILD_UINT16(msg->Value[0], msg->Value[1]));\r
- break;\r
- case 4:\r
- consolePrint("Param: (0x%02X) Parent IEEE Address\n", msg->Param);\r
- consolePrint(\r
- "Value: 0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X\n",\r
- (unsigned char) msg->Value[0], (unsigned char) msg->Value[1],\r
- (unsigned char) msg->Value[2], (unsigned char) msg->Value[3],\r
- (unsigned char) msg->Value[4], (unsigned char) msg->Value[5],\r
- (unsigned char) msg->Value[6], (unsigned char) msg->Value[7]);\r
- break;\r
- case 5:\r
- consolePrint("Param: (0x%02X) Channel\n", msg->Param);\r
- consolePrint("Value: 0x%01X\n", msg->Value[0]);\r
- break;\r
- case 6:\r
- consolePrint("Param: (0x%02X) PAN ID\n", msg->Param);\r
- consolePrint("Value: 0x%04X\n",\r
- BUILD_UINT16(msg->Value[0], msg->Value[1]));\r
- break;\r
- case 7:\r
- consolePrint("Param: (0x%02X) Extended PAN ID\n", msg->Param);\r
- consolePrint(\r
- "Value: 0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X\n",\r
- (unsigned char) msg->Value[0], (unsigned char) msg->Value[1],\r
- (unsigned char) msg->Value[2], (unsigned char) msg->Value[3],\r
- (unsigned char) msg->Value[4], (unsigned char) msg->Value[5],\r
- (unsigned char) msg->Value[6], (unsigned char) msg->Value[7]);\r
- break;\r
-\r
- }\r
-\r
- SET_NRM_COLOR();\r
-\r
- return 0;\r
-}\r
-static uint8_t mtSapiFindDeviceCnfCb(FindDeviceCnfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiFindDeviceCnfCb\n");\r
- consolePrint("SearchKey: 0x%04X\n", msg->SearchKey);\r
- consolePrint("Result: 0x%016llX\n", (long long unsigned int) msg->Result);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSapiSendDataCnfCb(SendDataCnfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiSendDataCnfCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Handle: 0x%02X\n", msg->Handle);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("SendDataCnf Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
- return msg->Status;\r
-}\r
-static uint8_t mtSapiReceiveDataIndCb(ReceiveDataIndFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiReceiveDataIndCb\n");\r
- consolePrint("Source: 0x%04X\n", msg->Source);\r
- consolePrint("Command: 0x%04X\n", msg->Command);\r
- consolePrint("Len: 0x%04X\n", msg->Len);\r
- uint32_t i;\r
- for (i = 0; i < msg->Len; i++)\r
- {\r
- consolePrint("Data[%d]: 0x%02X\n", i, msg->Data[i]);\r
- }\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSapiAllowBindCnfCb(AllowBindCnfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiAllowBindCnfCb\n");\r
- consolePrint("Source: 0x%04X\n", msg->Source);\r
- SET_NRM_COLOR();\r
- return 0;\r
-}\r
-static uint8_t mtSapiBindCnfCb(BindCnfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiBindCnfCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("CommandId: 0x%04X\n", msg->CommandId);\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("BindCnf Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
- return msg->Status;\r
-}\r
-static uint8_t mtSapiStartCnfCb(StartCnfFormat_t *msg)\r
-{\r
- SET_RSP_COLOR();\r
- consolePrint("mtSapiStartCnfCb\n");\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Status: 0x%02X\n", msg->Status);\r
- }\r
- else\r
- {\r
- consolePrint("StartCnf Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
- SET_NRM_COLOR();\r
- return msg->Status;\r
-}\r
-\r
-/********************************************************************\r
- * END OF SAPI CALL BACK FUNCTIONS\r
- */\r
-\r
-// helper functions for building and sending the NV messages\r
-static uint8_t setNVStartup(uint8_t startupOption)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- // sending startup option\r
- nvWrite.Id = ZCD_NV_STARTUP_OPTION;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = startupOption;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Startup Option cmd sent[%d]...\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVDevType(uint8_t devType)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- nvWrite.Id = ZCD_NV_LOGICAL_TYPE;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = devType;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Device Type cmd sent... [%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVPanID(uint32_t panId)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write PAN ID cmd sending...\n");\r
-\r
- nvWrite.Id = ZCD_NV_PANID;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 2;\r
- nvWrite.Value[0] = LO_UINT16(panId);\r
- nvWrite.Value[1] = HI_UINT16(panId);\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write PAN ID cmd sent...[%d]\n", status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVChanList(uint32_t chanList)\r
-{\r
- OsalNvWriteFormat_t nvWrite;\r
- uint8_t status;\r
-\r
- // setting chanList\r
- nvWrite.Id = ZCD_NV_CHANLIST;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 4;\r
- nvWrite.Value[0] = BREAK_UINT32(chanList, 0);\r
- nvWrite.Value[1] = BREAK_UINT32(chanList, 1);\r
- nvWrite.Value[2] = BREAK_UINT32(chanList, 2);\r
- nvWrite.Value[3] = BREAK_UINT32(chanList, 3);\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Channel List cmd sent...[%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static int32_t startNetwork(void)\r
-{\r
- char cDevType;\r
- uint8_t devType;\r
- int32_t status;\r
- uint8_t newNwk = 0;\r
- char sCh[128];\r
-\r
- do\r
- {\r
- consolePrint("Do you wish to start/join a new network? (y/n)\n");\r
- consoleGetLine(sCh, 128);\r
- if (sCh[0] == 'n' || sCh[0] == 'N')\r
- {\r
- status = setNVStartup(0);\r
- }\r
- else if (sCh[0] == 'y' || sCh[0] == 'Y')\r
- {\r
- status = setNVStartup(\r
- ZCD_STARTOPT_CLEAR_STATE | ZCD_STARTOPT_CLEAR_CONFIG);\r
- newNwk = 1;\r
-\r
- }\r
- else\r
- {\r
- consolePrint("Incorrect input please type y or n\n");\r
- }\r
- } while (sCh[0] != 'y' && sCh[0] != 'Y' && sCh[0] != 'n' && sCh[0] != 'N');\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "network start failed\n");\r
- return -1;\r
- }\r
- consolePrint("Resetting ZNP\n");\r
- ResetReqFormat_t resReq;\r
- resReq.Type = 1;\r
- sysResetReq(&resReq);\r
- //flush the rsp\r
- rpcWaitMqClientMsg(5000);\r
-\r
- if (newNwk)\r
- {\r
- #ifndef CC26xx\r
- consolePrint(\r
- "Enter device type c: Coordinator, r: Router, e: End Device:\n");\r
- consoleGetLine(sCh, 128);\r
- cDevType = sCh[0];\r
-\r
- switch (cDevType)\r
- {\r
- case 'c':\r
- case 'C':\r
- devType = DEVICETYPE_COORDINATOR;\r
- break;\r
- case 'r':\r
- case 'R':\r
- devType = DEVICETYPE_ROUTER;\r
- break;\r
- case 'e':\r
- case 'E':\r
- default:\r
- devType = DEVICETYPE_ENDDEVICE;\r
- break;\r
- }\r
- status = setNVDevType(devType);\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVDevType failed\n");\r
- return 0;\r
- }\r
-#endif // CC26xx\r
-\r
-\r
- //Select random PAN ID for Coord and join any PAN for RTR/ED\r
- status = setNVPanID(0xFFFF);\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVPanID failed\n");\r
- return -1;\r
- }\r
- consolePrint("Enter channel 11-26:\n");\r
- consoleGetLine(sCh, 128);\r
-\r
- status = setNVChanList(1 << atoi(sCh));\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "setNVPanID failed\n");\r
- return -1;\r
- }\r
-\r
- }\r
-\r
- registerAf();\r
- consolePrint("EndPoint: 1\n");\r
-\r
- status = zdoInit();\r
- if (status == NEW_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit NEW_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else if (status == RESTORED_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit RESTORED_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit failed\n");\r
- status = -1;\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "process zdoStatechange callbacks\n");\r
-\r
- //flush AREQ ZDO State Change messages\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(5000);\r
-\r
- if (((devType == DEVICETYPE_COORDINATOR) && (devState == DEV_ZB_COORD))\r
- || ((devType == DEVICETYPE_ROUTER) && (devState == DEV_ROUTER))\r
- || ((devType == DEVICETYPE_ENDDEVICE)\r
- && (devState == DEV_END_DEVICE)))\r
- {\r
- break;\r
- }\r
- }\r
- //set startup option back to keep configuration in case of reset\r
- status = setNVStartup(0);\r
- if (devState < DEV_END_DEVICE)\r
- {\r
- //start network failed\r
- return -1;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-static int32_t registerAf(void)\r
-{\r
- int32_t status = 0;\r
- RegisterFormat_t reg;\r
-\r
- reg.EndPoint = 1;\r
- reg.AppProfId = 0x0104;\r
- reg.AppDeviceId = 0x0100;\r
- reg.AppDevVer = 1;\r
- reg.LatencyReq = 0;\r
- reg.AppNumInClusters = 1;\r
- reg.AppInClusterList[0] = 0x0006;\r
- reg.AppNumOutClusters = 0;\r
-\r
- status = afRegister(®);\r
- return status;\r
-}\r
-\r
-/*********************************************************************\r
- * INTERFACE FUNCTIONS\r
- */\r
-uint32_t appInit(void)\r
-{\r
- int32_t status = 0;\r
- uint32_t msgCnt = 0;\r
-\r
- //Flush all messages from the que\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(10);\r
- if (status != -1)\r
- {\r
- msgCnt++;\r
- }\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "flushed %d message from msg queue\n", msgCnt);\r
-\r
- //Register Callbacks MT system callbacks\r
- sysRegisterCallbacks(mtSysCb);\r
- zdoRegisterCallbacks(mtZdoCb);\r
- afRegisterCallbacks(mtAfCb);\r
- sapiRegisterCallbacks(mtSapiCb);\r
-\r
- return 0;\r
-}\r
-/*********************************************************************\r
- * START OF COMMANDS PROCESSING\r
- */\r
-static void sendCmd(uint8_t* req, uint8_t index)\r
-{\r
- switch (index)\r
- {\r
- case 0:\r
- sysPing();\r
- break;\r
- case 1:\r
- sysSetExtAddr((SetExtAddrFormat_t*) req);\r
- break;\r
- case 2:\r
- sysGetExtAddr();\r
- break;\r
- case 3:\r
- sysRamRead((RamReadFormat_t*) req);\r
- break;\r
- case 4:\r
- sysRamWrite((RamWriteFormat_t*) req);\r
- break;\r
- case 5:\r
- sysResetReq((ResetReqFormat_t*) req);\r
- break;\r
- case 6:\r
- sysVersion();\r
- break;\r
- case 7:\r
- sysOsalNvRead((OsalNvReadFormat_t*) req);\r
- break;\r
- case 8:\r
- sysOsalNvWrite((OsalNvWriteFormat_t*) req);\r
- break;\r
- case 9:\r
- sysOsalNvItemInit((OsalNvItemInitFormat_t*) req);\r
- break;\r
- case 10:\r
- sysOsalNvDelete((OsalNvDeleteFormat_t*) req);\r
- break;\r
- case 11:\r
- sysOsalNvLength((OsalNvLengthFormat_t*) req);\r
- break;\r
- case 12:\r
- sysOsalStartTimer((OsalStartTimerFormat_t*) req);\r
- break;\r
- case 13:\r
- sysOsalStopTimer((OsalStopTimerFormat_t*) req);\r
- break;\r
- case 14:\r
- sysStackTune((StackTuneFormat_t*) req);\r
- break;\r
- case 15:\r
- sysAdcRead((AdcReadFormat_t*) req);\r
- break;\r
- case 16:\r
- sysGpio((GpioFormat_t*) req);\r
- break;\r
- case 17:\r
- sysRandom();\r
- break;\r
- case 18:\r
- sysSetTime((SetTimeFormat_t*) req);\r
- break;\r
- case 19:\r
- sysGetTime();\r
- break;\r
- case 20:\r
- sysSetTxPower((SetTxPowerFormat_t*) req);\r
- break;\r
- case 21:\r
- afRegister((RegisterFormat_t*) req);\r
- break;\r
- case 22:\r
- afDataRequest((DataRequestFormat_t*) req);\r
- break;\r
- case 23:\r
- afDataRequestExt((DataRequestExtFormat_t*) req);\r
- break;\r
- case 24:\r
- afDataRequestSrcRtg((DataRequestSrcRtgFormat_t*) req);\r
- break;\r
- case 25:\r
- afInterPanCtl((InterPanCtlFormat_t*) req);\r
- break;\r
- case 26:\r
- afDataStore((DataStoreFormat_t*) req);\r
- break;\r
- case 27:\r
- afDataRetrieve((DataRetrieveFormat_t*) req);\r
- break;\r
- case 28:\r
- afApsfConfigSet((ApsfConfigSetFormat_t*) req);\r
- break;\r
- case 29:\r
- zdoNwkAddrReq((NwkAddrReqFormat_t*) req);\r
- break;\r
- case 30:\r
- zdoIeeeAddrReq((IeeeAddrReqFormat_t*) req);\r
- break;\r
- case 31:\r
- zdoNodeDescReq((NodeDescReqFormat_t*) req);\r
- break;\r
- case 32:\r
- zdoPowerDescReq((PowerDescReqFormat_t*) req);\r
- break;\r
- case 33:\r
- zdoSimpleDescReq((SimpleDescReqFormat_t*) req);\r
- break;\r
- case 34:\r
- zdoActiveEpReq((ActiveEpReqFormat_t*) req);\r
- break;\r
- case 35:\r
- zdoMatchDescReq((MatchDescReqFormat_t*) req);\r
- break;\r
- case 36:\r
- zdoComplexDescReq((ComplexDescReqFormat_t*) req);\r
- break;\r
- case 37:\r
- zdoUserDescReq((UserDescReqFormat_t*) req);\r
- break;\r
- case 38:\r
- zdoDeviceAnnce((DeviceAnnceFormat_t*) req);\r
- break;\r
- case 39:\r
- zdoUserDescSet((UserDescSetFormat_t*) req);\r
- break;\r
- case 40:\r
- zdoServerDiscReq((ServerDiscReqFormat_t*) req);\r
- break;\r
- case 41:\r
- zdoEndDeviceBindReq((EndDeviceBindReqFormat_t*) req);\r
- break;\r
- case 42:\r
- zdoBindReq((BindReqFormat_t*) req);\r
- break;\r
- case 43:\r
- zdoUnbindReq((UnbindReqFormat_t*) req);\r
- break;\r
- case 44:\r
- zdoMgmtNwkDiscReq((MgmtNwkDiscReqFormat_t*) req);\r
- break;\r
- case 45:\r
- zdoMgmtLqiReq((MgmtLqiReqFormat_t*) req);\r
- break;\r
- case 46:\r
- zdoMgmtRtgReq((MgmtRtgReqFormat_t*) req);\r
- break;\r
- case 47:\r
- zdoMgmtBindReq((MgmtBindReqFormat_t*) req);\r
- break;\r
- case 48:\r
- zdoMgmtLeaveReq((MgmtLeaveReqFormat_t*) req);\r
- break;\r
- case 49:\r
- zdoMgmtDirectJoinReq((MgmtDirectJoinReqFormat_t*) req);\r
- break;\r
- case 50:\r
- zdoMgmtPermitJoinReq((MgmtPermitJoinReqFormat_t*) req);\r
- break;\r
- case 51:\r
- zdoMgmtNwkUpdateReq((MgmtNwkUpdateReqFormat_t*) req);\r
- break;\r
- case 52:\r
- zdoStartupFromApp((StartupFromAppFormat_t*) req);\r
- break;\r
- case 53:\r
- zdoAutoFindDestination((AutoFindDestinationFormat_t*) req);\r
- break;\r
- case 54:\r
- zdoSetLinkKey((SetLinkKeyFormat_t*) req);\r
- break;\r
- case 55:\r
- zdoRemoveLinkKey((RemoveLinkKeyFormat_t*) req);\r
- break;\r
- case 56:\r
- zdoGetLinkKey((GetLinkKeyFormat_t*) req);\r
- break;\r
- case 57:\r
- zdoNwkDiscoveryReq((NwkDiscoveryReqFormat_t*) req);\r
- break;\r
- case 58:\r
- zdoJoinReq((JoinReqFormat_t*) req);\r
- break;\r
- case 59:\r
- zdoMsgCbRegister((MsgCbRegisterFormat_t*) req);\r
- break;\r
- case 60:\r
- zdoMsgCbRemove((MsgCbRemoveFormat_t*) req);\r
- break;\r
- case 61:\r
- zbSystemReset();\r
- break;\r
- case 62:\r
- zbAppRegisterReq((AppRegisterReqFormat_t*) req);\r
- break;\r
- case 63:\r
- zbStartReq();\r
- break;\r
- case 64:\r
- zbPermitJoiningReq((PermitJoiningReqFormat_t*) req);\r
- break;\r
- case 65:\r
- zbBindDevice((BindDeviceFormat_t*) req);\r
- break;\r
- case 66:\r
- zbAllowBind((AllowBindFormat_t*) req);\r
- break;\r
- case 67:\r
- zbSendDataReq((SendDataReqFormat_t*) req);\r
- break;\r
- case 68:\r
- zbFindDeviceReq((FindDeviceReqFormat_t*) req);\r
- break;\r
- case 69:\r
- zbWriteConfiguration((WriteConfigurationFormat_t*) req);\r
- break;\r
- case 70:\r
- zbGetDeviceInfo((GetDeviceInfoFormat_t*) req);\r
- break;\r
- case 71:\r
- zbReadConfiguration((ReadConfigurationFormat_t*) req);\r
- break;\r
-\r
- }\r
-\r
-}\r
-uint8_t matchedCmds[250];\r
-uint8_t matchedLength;\r
-static void inputCmd(uint16_t index)\r
-{\r
- char value[128];\r
- char* strPos = value;\r
- uint8_t commandSize = 0;\r
- uint8_t attSize = 0;\r
- uint16_t currentPos = 0;\r
-\r
- uint8_t x;\r
- for (x = 0; x < commands[index].attNum; x++)\r
- {\r
- commandSize += commands[index].atts[x].size\r
- * (commands[index].atts[x].isList == 0 ?\r
- 1 : commands[index].atts[x].isList);\r
- commandSize += (\r
- (commands[index].atts[x].size == 2 && (commandSize % 2) != 0) ?\r
- 1 : 0);\r
- }\r
-\r
- uint8_t *input = malloc(commandSize);\r
- int tem;\r
-\r
- SET_PARAM_COLOR();\r
- consolePrint("Command: %s\n", commands[index].cmdName);\r
- SET_NRM_COLOR();\r
- for (x = 0; x < commands[index].attNum; x++)\r
- {\r
- attSize = commands[index].atts[x].size;\r
- if (commands[index].atts[x].isList == 0)\r
- {\r
- SET_PARAM_COLOR();\r
- consolePrint("Enter %s: (%dB)\n", commands[index].atts[x].name,\r
- attSize);\r
- SET_NRM_COLOR();\r
- consoleGetLine(value, 128);\r
-\r
- if (attSize == 2)\r
- {\r
- sscanf(value, "%x", &tem);\r
- sprintf(value, "%04X", tem);\r
- //strPos = value;\r
- if (currentPos % 2 != 0)\r
- {\r
- currentPos++;\r
- }\r
- }\r
- else if (attSize == 4)\r
- {\r
- sscanf(value, "%x", &tem);\r
- sprintf(value, "%08X", tem);\r
- //strPos = value;\r
- }\r
- else if (attSize == 1)\r
- {\r
- sscanf(value, "%x", &tem);\r
- sprintf(value, "%02X", tem);\r
- //strPos = value;\r
- }\r
- strPos = value;\r
- uint8_t idx;\r
- for (idx = 0; idx < attSize; idx++)\r
- {\r
- if (strlen(strPos) > 0)\r
- {\r
-\r
- sscanf(strPos, "%2hhx",\r
- &input[currentPos + attSize - 1 - idx]);\r
- strPos += (strPos[2] == ':' ? 3 : 2);\r
- }\r
- else\r
- {\r
- input[currentPos + attSize - 1 - idx] = 0;\r
- }\r
-\r
- }\r
- currentPos += attSize;\r
- }\r
- else\r
- {\r
- uint16_t tempPos = currentPos;\r
- uint8_t listLen = input[currentPos - 1];\r
- uint8_t listIdx;\r
- for (listIdx = 0; listIdx < listLen; listIdx++)\r
- {\r
- SET_PARAM_COLOR();\r
- consolePrint("Enter %s[%d]:\n", commands[index].atts[x].name,\r
- listIdx);\r
- SET_NRM_COLOR();\r
- consoleGetLine(value, 128);\r
- if (attSize == 2)\r
- {\r
- sscanf(value, "%x", &tem);\r
- sprintf(value, "%04X", tem);\r
- //strPos = value;\r
- if (tempPos % 2 != 0)\r
- {\r
- tempPos++;\r
- currentPos++;\r
- }\r
- }\r
- else if (attSize == 1)\r
- {\r
- sscanf(value, "%x", &tem);\r
- sprintf(value, "%02X", tem);\r
- //strPos = value;\r
- }\r
- strPos = value;\r
- uint8_t idx;\r
- for (idx = 0; idx < attSize; idx++)\r
- {\r
- if (strlen(strPos) > 0)\r
- {\r
- sscanf(strPos, "%2hhx",\r
- &input[tempPos + attSize - 1 - idx]);\r
- strPos += (strPos[2] == ':' ? 3 : 2);\r
- }\r
- else\r
- {\r
- input[currentPos + attSize - 1 - idx] = 0;\r
- }\r
- }\r
- tempPos += attSize;\r
- }\r
- currentPos += (attSize * commands[index].atts[x].isList);\r
- }\r
- }\r
-\r
- sendCmd(input, index);\r
- free(input);\r
-\r
-}\r
-static uint8_t getMatched(char* cmd)\r
-{\r
- uint8_t cmdLength = strlen(cmd);\r
- uint8_t tempLength = 0;\r
- uint16_t cmdMatches = 0;\r
- uint8_t matchedTemp[250];\r
- char tempcmd[200];\r
-\r
- uint16_t Idx;\r
- for (Idx = 0; Idx < COMMANDS_SIZE; Idx++)\r
- {\r
- tempLength = strlen(commands[Idx].cmdName);\r
- if (tempLength >= cmdLength)\r
- {\r
- strcpy(tempcmd, commands[Idx].cmdName);\r
- tempcmd[cmdLength] = '\0';\r
- if (strcmp(cmd, tempcmd) == 0)\r
- {\r
- if (tempLength == cmdLength)\r
- {\r
- matchedTemp[0] = Idx;\r
- cmdMatches = 1;\r
- matchedLength = 0;\r
- Idx = COMMANDS_SIZE;\r
- }\r
- else\r
- {\r
- matchedTemp[cmdMatches] = Idx;\r
- cmdMatches++;\r
- }\r
- }\r
- }\r
- }\r
- uint8_t index = strlen(cmd);\r
- if (cmdMatches > 1 && (matchedLength == cmdMatches || matchedLength == 0))\r
- {\r
-\r
- matchedLength = cmdMatches;\r
- cmd[index] = commands[matchedTemp[0]].cmdName[index];\r
- cmd[index + 1] = '\0';\r
- getMatched(cmd);\r
- matchedLength = cmdMatches;\r
- memcpy(matchedCmds, matchedTemp, cmdMatches);\r
- return 0;\r
- }\r
- memcpy(matchedCmds, matchedTemp, cmdMatches);\r
- if (matchedLength != 0)\r
- cmd[index - 1] = '\0';\r
- matchedLength = cmdMatches;\r
- return 0;\r
-\r
-}\r
-\r
-uint8_t histIdx = 0;\r
-uint8_t isHistRollOver = 0;\r
-uint32_t maxHist = 256;\r
-char hist[256][256];\r
-static uint8_t clGetCmd(void)\r
-{\r
- char ch;\r
- char tempStr[256];\r
- char tempHist[256];\r
- uint8_t cPos = 0;\r
- char cmdStr[256] =\r
- { 0 };\r
- char lastChar;\r
- uint32_t cmdStrIdx = 0;\r
- uint32_t currHist = 0;\r
- uint8_t cmdComplete = 0;\r
- uint8_t isDir;\r
- isDir = 0;\r
- cmdStr[0] = '\0';\r
- consolePrint("Enter CMD\n");\r
-\r
- while (cmdComplete == 0)\r
- {\r
- ch = consoleGetCh();\r
- switch (ch)\r
- {\r
- case '\t':\r
- consoleClearLn()\r
- ;\r
- consolePrint("\r%s", cmdStr);\r
-\r
- getMatched(cmdStr);\r
-\r
- if (matchedLength == 1) // there was only 1 match\r
- {\r
- if (lastChar == '\t') //2 tabs pressed then print command description\r
- {\r
- SET_HELP_COLOR();\r
- consolePrint("\nDescription:\n%s",\r
- commands[matchedCmds[0]].cmdDesc);\r
- SET_NRM_COLOR();\r
- consolePrint("\nEnter CMD\n");\r
- ch = ' ';\r
- }\r
- else\r
- {\r
- strcpy(cmdStr, commands[matchedCmds[0]].cmdName);\r
- }\r
- }\r
- else if (matchedLength > 1) // there was more than 1 match\r
- {\r
- if (lastChar == '\t') //2 tabs pressed then print all commands that start with\r
- {\r
- consolePrint("\n\n");\r
- uint8_t mIdx;\r
- SET_HELP_COLOR();\r
- for (mIdx = 0; mIdx < matchedLength; mIdx++)\r
- {\r
- consolePrint("%s\n",\r
- commands[matchedCmds[mIdx]].cmdName);\r
- }\r
- SET_NRM_COLOR();\r
- consolePrint("\n\nEnter CMD\n");\r
- ch = ' ';\r
- }\r
- }\r
- cmdStrIdx = strlen(cmdStr);\r
- consoleClearLn()\r
- ;\r
- consolePrint("\r%s", cmdStr);\r
- matchedLength = 0;\r
- consolePrint("%s", KNRM);\r
- break;\r
- case '\n':\r
- //enter was press\r
- getMatched(cmdStr);\r
- if ((histIdx == 0 && isHistRollOver == 0)\r
- || strcmp(hist[(maxHist + histIdx - 1) % maxHist], cmdStr)\r
- != 0)\r
- {\r
- strcpy(hist[histIdx], cmdStr);\r
- histIdx = ((histIdx + 1) % maxHist);\r
- }\r
- if (histIdx == 0)\r
- {\r
- isHistRollOver = 1;\r
- }\r
- if (matchedLength == 1)\r
- {\r
- if (strcmp(cmdStr, commands[matchedCmds[0]].cmdName) == 0)\r
- {\r
- consolePrint("\n");\r
- inputCmd(matchedCmds[0]);\r
-\r
- }\r
-\r
- }\r
- matchedLength = 0;\r
- cmdComplete = 1;\r
- break;\r
- case 127:\r
- //backspace was press\r
- //clear line\r
- if (cmdStrIdx > 0)\r
- {\r
- if (cPos < cmdStrIdx)\r
- {\r
- uint8_t x;\r
- for (x = 0; x < cPos; x++)\r
- {\r
- cmdStr[cmdStrIdx - cPos + x - 1] =\r
- tempStr[cPos - x - 1];\r
- }\r
- cmdStr[--cmdStrIdx] = '\0';\r
- }\r
-\r
- consoleClearLn();\r
- consolePrint("\r%s", cmdStr);\r
-\r
- }\r
- else\r
- {\r
- consoleClearLn();\r
- consolePrint("\r");\r
- }\r
- break;\r
- case 27:\r
- isDir = 1;\r
- if (cmdStrIdx > 0)\r
- {\r
- consoleClearLn();\r
- consolePrint("\r%s", cmdStr);\r
-\r
- }\r
- else\r
- {\r
- consoleClearLn();\r
- consolePrint("\r");\r
- }\r
-\r
- break;\r
- default:\r
- if (isDir)\r
- {\r
- if (ch == '[')\r
- {\r
- isDir = 1;\r
- }\r
- else if (ch == 'A')\r
- {\r
- if (currHist < histIdx)\r
- {\r
- cPos = 0;\r
- if (currHist)\r
- {\r
- strcpy(hist[histIdx - currHist], cmdStr);\r
- }\r
- if (currHist == 0)\r
- strcpy(tempHist, cmdStr);\r
- currHist++;\r
- strcpy(cmdStr, hist[histIdx - currHist]);\r
- cmdStrIdx = strlen(cmdStr);\r
-\r
- }\r
-\r
- isDir = 0;\r
- }\r
- else if (ch == 'B')\r
- {\r
- if (currHist)\r
- {\r
- strcpy(hist[histIdx - currHist], cmdStr);\r
- currHist--;\r
- if (currHist)\r
- {\r
- strcpy(cmdStr, hist[histIdx - currHist]);\r
- }\r
- else\r
- {\r
- strcpy(cmdStr, tempHist);\r
- }\r
- cmdStrIdx = strlen(cmdStr);\r
-\r
- }\r
- isDir = 0;\r
- }\r
- else if (ch == 'C')\r
- {\r
- if (cPos > 0)\r
- {\r
- cPos--;\r
- }\r
-\r
- isDir = 0;\r
- }\r
- else if (ch == 'D')\r
- {\r
- if (cPos < cmdStrIdx)\r
- {\r
- tempStr[cPos] = cmdStr[cmdStrIdx - cPos - 1];\r
- cPos++;\r
- }\r
- isDir = 0;\r
- }\r
- else\r
- {\r
- isDir = 0;\r
- }\r
- }\r
- else\r
- {\r
- if (cPos != 0)\r
- {\r
- cmdStr[cmdStrIdx - cPos] = ch;\r
- uint8_t x;\r
- for (x = 1; x <= cPos; x++)\r
- {\r
- cmdStr[cmdStrIdx - cPos + x] = tempStr[cPos - x];\r
- }\r
- cmdStr[++cmdStrIdx] = '\0';\r
- }\r
- else\r
- {\r
- cmdStr[cmdStrIdx++] = ch;\r
- cmdStr[cmdStrIdx] = '\0';\r
- }\r
-\r
- }\r
- consoleClearLn()\r
- ;\r
- consolePrint("\r%s", cmdStr);\r
- break;\r
- }\r
-\r
- uint8_t x;\r
- for (x = 1; x <= cPos; x++)\r
- {\r
- consolePrint("\b");\r
- }\r
- consoleFlush();\r
- lastChar = ch;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-/*********************************************************************\r
- * END OF COMMANDS PROCESSING\r
- *********************************************************************/\r
-\r
-void appProcess(void *argument)\r
-{\r
- int32_t status;\r
- InitCmds();\r
-\r
- //Flush all messages from the que\r
- do\r
- {\r
- status = rpcWaitMqClientMsg(50);\r
- } while (status != -1);\r
-\r
- //init variable\r
- devState = DEV_HOLD;\r
- gSrcEndPoint = 1;\r
- gDstEndPoint = 1;\r
-\r
- status = startNetwork();\r
- if (status != -1)\r
- {\r
- consolePrint("Network up\n\n");\r
- }\r
- else\r
- {\r
- consolePrint("Network Error\n\n");\r
- }\r
-\r
- sysGetExtAddr();\r
-\r
- OsalNvWriteFormat_t nvWrite;\r
- nvWrite.Id = ZCD_NV_ZDO_DIRECT_CB;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = 1;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- while (1)\r
- {\r
- status = clGetCmd();\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(1000);\r
- consolePrint("\n");\r
- }\r
- }\r
-}\r
-\r
diff --git a/examples/dataSendRcv/dataSendRcv.c~ b/examples/dataSendRcv/dataSendRcv.c~
+++ /dev/null
@@ -1,838 +0,0 @@
-/**************************************************************************************************\r
- * Filename: dataSendRcv.c\r
- * Description: This file contains dataSendRcv application.\r
- *\r
- *\r
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/\r
- *\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * Redistributions of source code must retain the above copyright\r
- * notice, this list of conditions and the following disclaimer.\r
- *\r
- * Redistributions in binary form must reproduce the above copyright\r
- * notice, this list of conditions and the following disclaimer in the\r
- * documentation and/or other materials provided with the\r
- * distribution.\r
- *\r
- * Neither the name of Texas Instruments Incorporated nor the names of\r
- * its contributors may be used to endorse or promote products derived\r
- * from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- */\r
-\r
-/*********************************************************************\r
- * INCLUDES\r
- */\r
-#include <string.h>\r
-#include <stdio.h>\r
-#include <unistd.h>\r
-#include <stdlib.h>\r
-\r
-#include "rpc.h"\r
-#include "mtSys.h"\r
-#include "mtZdo.h"\r
-#include "mtAf.h"\r
-#include "mtParser.h"\r
-#include "rpcTransport.h"\r
-#include "dbgPrint.h"\r
-#include "hostConsole.h"\r
-\r
-/*********************************************************************\r
- * MACROS\r
- */\r
-\r
-/*********************************************************************\r
- * TYPES\r
- */\r
-\r
-/*********************************************************************\r
- * LOCAL VARIABLE\r
- */\r
-\r
-//init ZDO device state\r
-devStates_t devState = DEV_HOLD;\r
-uint8_t gSrcEndPoint = 1;\r
-uint8_t gDstEndPoint = 1;\r
-\r
-/***********************************************************************/\r
-\r
-/*********************************************************************\r
- * LOCAL FUNCTIONS\r
- */\r
-//ZDO Callbacks\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState);\r
-static uint8_t mtZdoSimpleDescRspCb(SimpleDescRspFormat_t *msg);\r
-static uint8_t mtZdoActiveEpRspCb(ActiveEpRspFormat_t *msg);\r
-static uint8_t mtZdoEndDeviceAnnceIndCb(EndDeviceAnnceIndFormat_t *msg);\r
-\r
-static uint8_t mtZdoMgmtLqiRspCb(MgmtLqiRspFormat_t *msg);\r
-\r
-//SYS Callbacks\r
-\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg);\r
-\r
-//AF callbacks\r
-static uint8_t mtAfDataConfirmCb(DataConfirmFormat_t *msg);\r
-static uint8_t mtAfIncomingMsgCb(IncomingMsgFormat_t *msg);\r
-\r
-//helper functions\r
-static uint8_t setNVStartup(uint8_t startupOption);\r
-static uint8_t setNVChanList(uint32_t chanList);\r
-static uint8_t setNVPanID(uint32_t panId);\r
-static uint8_t setNVDevType(uint8_t devType);\r
-static int32_t startNetwork(void);\r
-static int32_t registerAf(void);\r
-\r
-/*********************************************************************\r
- * CALLBACK FUNCTIONS\r
- */\r
-\r
-// SYS callbacks\r
-static mtSysCb_t mtSysCb =\r
- { NULL, NULL, NULL, mtSysResetIndCb, NULL, NULL, NULL, NULL, NULL, NULL,\r
- NULL, NULL, NULL, NULL };\r
-\r
-static mtZdoCb_t mtZdoCb =\r
- { NULL, // MT_ZDO_NWK_ADDR_RSP\r
- NULL, // MT_ZDO_IEEE_ADDR_RSP\r
- NULL, // MT_ZDO_NODE_DESC_RSP\r
- NULL, // MT_ZDO_POWER_DESC_RSP\r
- mtZdoSimpleDescRspCb, // MT_ZDO_SIMPLE_DESC_RSP\r
- mtZdoActiveEpRspCb, // MT_ZDO_ACTIVE_EP_RSP\r
- NULL, // MT_ZDO_MATCH_DESC_RSP\r
- NULL, // MT_ZDO_COMPLEX_DESC_RSP\r
- NULL, // MT_ZDO_USER_DESC_RSP\r
- NULL, // MT_ZDO_USER_DESC_CONF\r
- NULL, // MT_ZDO_SERVER_DISC_RSP\r
- NULL, // MT_ZDO_END_DEVICE_BIND_RSP\r
- NULL, // MT_ZDO_BIND_RSP\r
- NULL, // MT_ZDO_UNBIND_RSP\r
- NULL, // MT_ZDO_MGMT_NWK_DISC_RSP\r
- mtZdoMgmtLqiRspCb, // MT_ZDO_MGMT_LQI_RSP\r
- NULL, // MT_ZDO_MGMT_RTG_RSP\r
- NULL, // MT_ZDO_MGMT_BIND_RSP\r
- NULL, // MT_ZDO_MGMT_LEAVE_RSP\r
- NULL, // MT_ZDO_MGMT_DIRECT_JOIN_RSP\r
- NULL, // MT_ZDO_MGMT_PERMIT_JOIN_RSP\r
- mtZdoStateChangeIndCb, // MT_ZDO_STATE_CHANGE_IND\r
- mtZdoEndDeviceAnnceIndCb, // MT_ZDO_END_DEVICE_ANNCE_IND\r
- NULL, // MT_ZDO_SRC_RTG_IND\r
- NULL, //MT_ZDO_BEACON_NOTIFY_IND\r
- NULL, //MT_ZDO_JOIN_CNF\r
- NULL, //MT_ZDO_NWK_DISCOVERY_CNF\r
- NULL, // MT_ZDO_CONCENTRATOR_IND_CB\r
- NULL, // MT_ZDO_LEAVE_IND\r
- NULL, //MT_ZDO_STATUS_ERROR_RSP\r
- NULL, //MT_ZDO_MATCH_DESC_RSP_SENT\r
- NULL, NULL };\r
-\r
-static mtAfCb_t mtAfCb =\r
- { mtAfDataConfirmCb, //MT_AF_DATA_CONFIRM\r
- mtAfIncomingMsgCb, //MT_AF_INCOMING_MSG\r
- NULL, //MT_AF_INCOMING_MSG_EXT\r
- NULL, //MT_AF_DATA_RETRIEVE\r
- NULL, //MT_AF_REFLECT_ERROR\r
- };\r
-typedef struct\r
-{\r
- uint16_t ChildAddr;\r
- uint8_t Type;\r
-\r
-} ChildNode_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t NodeAddr;\r
- uint8_t Type;\r
- uint8_t ChildCount;\r
- ChildNode_t childs[256];\r
-} Node_t;\r
-\r
-Node_t nodeList[64];\r
-uint8_t nodeCount = 0;\r
-\r
-/********************************************************************\r
- * START OF SYS CALL BACK FUNCTIONS\r
- */\r
-\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg)\r
-{\r
-\r
- consolePrint("ZNP Version: %d.%d.%d\n", msg->MajorRel, msg->MinorRel,\r
- msg->HwRev);\r
- return 0;\r
-}\r
-\r
-/********************************************************************\r
- * START OF ZDO CALL BACK FUNCTIONS\r
- */\r
-\r
-/********************************************************************\r
- * @fn Callback function for ZDO State Change Indication\r
-\r
- * @brief receives the AREQ status and specifies the change ZDO state\r
- *\r
- * @param uint8 zdoState\r
- *\r
- * @return SUCCESS or FAILURE\r
- */\r
-\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState)\r
-{\r
-\r
- switch (newDevState)\r
- {\r
- case DEV_HOLD:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not started automatically\n");\r
- break;\r
- case DEV_INIT:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not connected to anything\n");\r
- break;\r
- case DEV_NWK_DISC:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Discovering PAN's to join\n");\r
- consolePrint("Network Discovering\n");\r
- break;\r
- case DEV_NWK_JOINING:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: Joining a PAN\n");\r
- consolePrint("Network Joining\n");\r
- break;\r
- case DEV_NWK_REJOIN:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: ReJoining a PAN, only for end devices\n");\r
- consolePrint("Network Rejoining\n");\r
- break;\r
- case DEV_END_DEVICE_UNAUTH:\r
- consolePrint("Network Authenticating\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Joined but not yet authenticated by trust center\n");\r
- break;\r
- case DEV_END_DEVICE:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as device after authentication\n");\r
- break;\r
- case DEV_ROUTER:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device joined, authenticated and is a router\n");\r
- break;\r
- case DEV_COORD_STARTING:\r
- consolePrint("Network Starting\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_ZB_COORD:\r
- consolePrint("Network Started\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_NWK_ORPHAN:\r
- consolePrint("Network Orphaned\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device has lost information about its parent\n");\r
- break;\r
- default:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: unknown state");\r
- break;\r
- }\r
-\r
- devState = (devStates_t) newDevState;\r
-\r
- return SUCCESS;\r
-}\r
-static uint8_t mtZdoSimpleDescRspCb(SimpleDescRspFormat_t *msg)\r
-{\r
-\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("\tEndpoint: 0x%02X\n", msg->Endpoint);\r
- consolePrint("\tProfileID: 0x%04X\n", msg->ProfileID);\r
- consolePrint("\tDeviceID: 0x%04X\n", msg->DeviceID);\r
- consolePrint("\tDeviceVersion: 0x%02X\n", msg->DeviceVersion);\r
- consolePrint("\tNumInClusters: %d\n", msg->NumInClusters);\r
- uint32_t i;\r
- for (i = 0; i < msg->NumInClusters; i++)\r
- {\r
- consolePrint("\t\tInClusterList[%d]: 0x%04X\n", i,\r
- msg->InClusterList[i]);\r
- }\r
- consolePrint("\tNumOutClusters: %d\n", msg->NumOutClusters);\r
- for (i = 0; i < msg->NumOutClusters; i++)\r
- {\r
- consolePrint("\t\tOutClusterList[%d]: 0x%04X\n", i,\r
- msg->OutClusterList[i]);\r
- }\r
- consolePrint("\n");\r
- }\r
- else\r
- {\r
- consolePrint("SimpleDescRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
-\r
- return msg->Status;\r
-}\r
-\r
-static uint8_t mtZdoMgmtLqiRspCb(MgmtLqiRspFormat_t *msg)\r
-{\r
- uint8_t devType = 0;\r
- uint8_t devRelation = 0;\r
- MgmtLqiReqFormat_t req;\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- nodeList[nodeCount].NodeAddr = msg->SrcAddr;\r
- nodeList[nodeCount].Type = (msg->SrcAddr == 0 ?\r
- DEVICETYPE_COORDINATOR :\r
- DEVICETYPE_ROUTER);\r
- nodeList[nodeCount].ChildCount = 0;\r
- uint32_t i;\r
- for (i = 0; i < msg->NeighborLqiListCount; i++)\r
- {\r
- devType = msg->NeighborLqiList[i].DevTyp_RxOnWhenIdle_Relat & 3;\r
- devRelation = ((msg->NeighborLqiList[i].DevTyp_RxOnWhenIdle_Relat\r
- >> 4) & 7);\r
- if (devRelation == 1 || devRelation == 3)\r
- {\r
- uint8_t cCount = nodeList[nodeCount].ChildCount;\r
- nodeList[nodeCount].childs[cCount].ChildAddr =\r
- msg->NeighborLqiList[i].NetworkAddress;\r
- nodeList[nodeCount].childs[cCount].Type = devType;\r
- nodeList[nodeCount].ChildCount++;\r
- if (devType == DEVICETYPE_ROUTER)\r
- {\r
- req.DstAddr = msg->NeighborLqiList[i].NetworkAddress;\r
- req.StartIndex = 0;\r
- zdoMgmtLqiReq(&req);\r
- }\r
- }\r
- }\r
- nodeCount++;\r
-\r
- }\r
- else\r
- {\r
- consolePrint("MgmtLqiRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
-\r
- return msg->Status;\r
-}\r
-\r
-static uint8_t mtZdoActiveEpRspCb(ActiveEpRspFormat_t *msg)\r
-{\r
-\r
- //SimpleDescReqFormat_t simReq;\r
- consolePrint("NwkAddr: 0x%04X\n", msg->NwkAddr);\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Number of Endpoints: %d\nActive Endpoints: ",\r
- msg->ActiveEPCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->ActiveEPCount; i++)\r
- {\r
- consolePrint("0x%02X\t", msg->ActiveEPList[i]);\r
-\r
- }\r
- consolePrint("\n");\r
- }\r
- else\r
- {\r
- consolePrint("ActiveEpRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
-\r
- return msg->Status;\r
-}\r
-\r
-static uint8_t mtZdoEndDeviceAnnceIndCb(EndDeviceAnnceIndFormat_t *msg)\r
-{\r
-\r
- ActiveEpReqFormat_t actReq;\r
- actReq.DstAddr = msg->NwkAddr;\r
- actReq.NwkAddrOfInterest = msg->NwkAddr;\r
-\r
- consolePrint("\nNew device joined network.\n");\r
- zdoActiveEpReq(&actReq);\r
- return 0;\r
-}\r
-\r
-/********************************************************************\r
- * AF CALL BACK FUNCTIONS\r
- */\r
-\r
-static uint8_t mtAfDataConfirmCb(DataConfirmFormat_t *msg)\r
-{\r
-\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("Message transmited Succesfully!\n");\r
- }\r
- else\r
- {\r
- consolePrint("Message failed to transmit\n");\r
- }\r
- return msg->Status;\r
-}\r
-static uint8_t mtAfIncomingMsgCb(IncomingMsgFormat_t *msg)\r
-{\r
-\r
- consolePrint(\r
- "\nIncoming Message from Endpoint 0x%02X and Address 0x%04X:\n",\r
- msg->SrcEndpoint, msg->SrcAddr);\r
- msg->Data[msg->Len] = '\0';\r
- consolePrint("%s\n", (char*) msg->Data);\r
- consolePrint(\r
- "\nEnter message to send or type CHANGE to change the destination \nor QUIT to exit:\n");\r
-\r
- return 0;\r
-}\r
-\r
-/********************************************************************\r
- * HELPER FUNCTIONS\r
- */\r
-// helper functions for building and sending the NV messages\r
-static uint8_t setNVStartup(uint8_t startupOption)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- // sending startup option\r
- nvWrite.Id = ZCD_NV_STARTUP_OPTION;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = startupOption;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Startup Option cmd sent[%d]...\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVDevType(uint8_t devType)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- // setting dev type\r
- nvWrite.Id = ZCD_NV_LOGICAL_TYPE;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = devType;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Device Type cmd sent... [%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVPanID(uint32_t panId)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write PAN ID cmd sending...\n");\r
-\r
- nvWrite.Id = ZCD_NV_PANID;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 2;\r
- nvWrite.Value[0] = LO_UINT16(panId);\r
- nvWrite.Value[1] = HI_UINT16(panId);\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write PAN ID cmd sent...[%d]\n", status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVChanList(uint32_t chanList)\r
-{\r
- OsalNvWriteFormat_t nvWrite;\r
- uint8_t status;\r
- // setting chanList\r
- nvWrite.Id = ZCD_NV_CHANLIST;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 4;\r
- nvWrite.Value[0] = BREAK_UINT32(chanList, 0);\r
- nvWrite.Value[1] = BREAK_UINT32(chanList, 1);\r
- nvWrite.Value[2] = BREAK_UINT32(chanList, 2);\r
- nvWrite.Value[3] = BREAK_UINT32(chanList, 3);\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Channel List cmd sent...[%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-uint8_t dType;\r
-static int32_t startNetwork(void)\r
-{\r
- char cDevType;\r
- uint8_t devType;\r
- int32_t status;\r
- uint8_t newNwk = 0;\r
- char sCh[128];\r
-\r
- do\r
- {\r
- consolePrint("Do you wish to start/join a new network? (y/n)\n");\r
- consoleGetLine(sCh, 128);\r
- if (sCh[0] == 'n' || sCh[0] == 'N')\r
- {\r
- status = setNVStartup(0);\r
- }\r
- else if (sCh[0] == 'y' || sCh[0] == 'Y')\r
- {\r
- status = setNVStartup(\r
- ZCD_STARTOPT_CLEAR_STATE | ZCD_STARTOPT_CLEAR_CONFIG);\r
- newNwk = 1;\r
-\r
- }\r
- else\r
- {\r
- consolePrint("Incorrect input please type y or n\n");\r
- }\r
- } while (sCh[0] != 'y' && sCh[0] != 'Y' && sCh[0] != 'n' && sCh[0] != 'N');\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "network start failed\n");\r
- return -1;\r
- }\r
- consolePrint("Resetting ZNP\n");\r
- ResetReqFormat_t resReq;\r
- resReq.Type = 1;\r
- sysResetReq(&resReq);\r
- //flush the rsp\r
- rpcWaitMqClientMsg(5000);\r
-\r
- if (newNwk)\r
- {\r
- #ifndef CC26xx\r
- consolePrint(\r
- "Enter device type c: Coordinator, r: Router, e: End Device:\n");\r
- consoleGetLine(sCh, 128);\r
- cDevType = sCh[0];\r
-\r
- switch (cDevType)\r
- {\r
- case 'c':\r
- case 'C':\r
- devType = DEVICETYPE_COORDINATOR;\r
- break;\r
- case 'r':\r
- case 'R':\r
- devType = DEVICETYPE_ROUTER;\r
- break;\r
- case 'e':\r
- case 'E':\r
- default:\r
- devType = DEVICETYPE_ENDDEVICE;\r
- break;\r
- }\r
- status = setNVDevType(devType);\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVDevType failed\n");\r
- return 0;\r
- }\r
-#endif //CC26xx\r
- //Select random PAN ID for Coord and join any PAN for RTR/ED\r
- status = setNVPanID(0xFFFF);\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVPanID failed\n");\r
- return -1;\r
- }\r
- consolePrint("Enter channel 11-26:\n");\r
- consoleGetLine(sCh, 128);\r
-\r
- status = setNVChanList(1 << atoi(sCh));\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "setNVPanID failed\n");\r
- return -1;\r
- }\r
-\r
- }\r
-\r
- registerAf();\r
- consolePrint("EndPoint: 1\n");\r
-\r
- status = zdoInit();\r
- if (status == NEW_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit NEW_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else if (status == RESTORED_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit RESTORED_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit failed\n");\r
- status = -1;\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "process zdoStatechange callbacks\n");\r
-\r
- //flush AREQ ZDO State Change messages\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(5000);\r
-\r
- if (((devType == DEVICETYPE_COORDINATOR) && (devState == DEV_ZB_COORD))\r
- || ((devType == DEVICETYPE_ROUTER) && (devState == DEV_ROUTER))\r
- || ((devType == DEVICETYPE_ENDDEVICE)\r
- && (devState == DEV_END_DEVICE)))\r
- {\r
- break;\r
- }\r
- }\r
- //set startup option back to keep configuration in case of reset\r
- status = setNVStartup(0);\r
- if (devState < DEV_END_DEVICE)\r
- {\r
- //start network failed\r
- return -1;\r
- }\r
-\r
- return 0;\r
-}\r
-static int32_t registerAf(void)\r
-{\r
- int32_t status = 0;\r
- RegisterFormat_t reg;\r
-\r
- reg.EndPoint = 1;\r
- reg.AppProfId = 0x0104;\r
- reg.AppDeviceId = 0x0100;\r
- reg.AppDevVer = 1;\r
- reg.LatencyReq = 0;\r
- reg.AppNumInClusters = 1;\r
- reg.AppInClusterList[0] = 0x0006;\r
- reg.AppNumOutClusters = 0;\r
-\r
- status = afRegister(®);\r
- return status;\r
-}\r
-\r
-static void displayDevices(void)\r
-{\r
- ActiveEpReqFormat_t actReq;\r
- int32_t status;\r
-\r
- MgmtLqiReqFormat_t req;\r
-\r
- req.DstAddr = 0;\r
- req.StartIndex = 0;\r
- nodeCount = 0;\r
- zdoMgmtLqiReq(&req);\r
- do\r
- {\r
- status = rpcWaitMqClientMsg(1000);\r
- } while (status != -1);\r
-\r
- consolePrint("\nAvailable devices:\n");\r
- uint8_t i;\r
- for (i = 0; i < nodeCount; i++)\r
- {\r
- char *devtype =\r
- (nodeList[i].Type == DEVICETYPE_ROUTER ?\r
- "ROUTER" : "COORDINATOR");\r
-\r
- consolePrint("Type: %s\n", devtype);\r
- actReq.DstAddr = nodeList[i].NodeAddr;\r
- actReq.NwkAddrOfInterest = nodeList[i].NodeAddr;\r
- zdoActiveEpReq(&actReq);\r
- rpcGetMqClientMsg();\r
- do\r
- {\r
- status = rpcWaitMqClientMsg(1000);\r
- } while (status != -1);\r
- uint8_t cI;\r
- for (cI = 0; cI < nodeList[i].ChildCount; cI++)\r
- {\r
- uint8_t type = nodeList[i].childs[cI].Type;\r
- if (type == DEVICETYPE_ENDDEVICE)\r
- {\r
- consolePrint("Type: END DEVICE\n");\r
- actReq.DstAddr = nodeList[i].childs[cI].ChildAddr;\r
- actReq.NwkAddrOfInterest = nodeList[i].childs[cI].ChildAddr;\r
- zdoActiveEpReq(&actReq);\r
- status = 0;\r
- rpcGetMqClientMsg();\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(1000);\r
- }\r
- }\r
-\r
- }\r
- consolePrint("\n");\r
-\r
- }\r
-}\r
-/*********************************************************************\r
- * INTERFACE FUNCTIONS\r
- */\r
-uint32_t appInit(void)\r
-{\r
- int32_t status = 0;\r
- uint32_t msgCnt = 0;\r
-\r
- //Flush all messages from the que\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(10);\r
- if (status != -1)\r
- {\r
- msgCnt++;\r
- }\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "flushed %d message from msg queue\n", msgCnt);\r
-\r
- //Register Callbacks MT system callbacks\r
- sysRegisterCallbacks(mtSysCb);\r
- zdoRegisterCallbacks(mtZdoCb);\r
- afRegisterCallbacks(mtAfCb);\r
-\r
- return 0;\r
-}\r
-uint8_t initDone = 0;\r
-void* appMsgProcess(void *argument)\r
-{\r
-\r
- if (initDone)\r
- {\r
- rpcWaitMqClientMsg(10000);\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-void* appProcess(void *argument)\r
-{\r
- int32_t status;\r
- uint32_t quit = 0;\r
-\r
- //Flush all messages from the que\r
- do\r
- {\r
- status = rpcWaitMqClientMsg(50);\r
- } while (status != -1);\r
-\r
- devState = DEV_HOLD;\r
-\r
- status = startNetwork();\r
- if (status != -1)\r
- {\r
- consolePrint("Network up\n\n");\r
- }\r
- else\r
- {\r
- consolePrint("Network Error\n\n");\r
- }\r
-\r
- sysGetExtAddr();\r
-\r
- OsalNvWriteFormat_t nvWrite;\r
- nvWrite.Id = ZCD_NV_ZDO_DIRECT_CB;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = 1;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- char cmd[128];\r
- int attget;\r
-\r
- while (quit == 0)\r
- {\r
- nodeCount = 0;\r
- initDone = 0;\r
- displayDevices();\r
- DataRequestFormat_t DataRequest;\r
- consolePrint("Enter DstAddr:\n");\r
- consoleGetLine(cmd, 128);\r
- sscanf(cmd, "%x", &attget);\r
- DataRequest.DstAddr = (uint16_t) attget;\r
-\r
- consolePrint("Enter DstEndpoint:\n");\r
- consoleGetLine(cmd, 128);\r
- sscanf(cmd, "%x", &attget);\r
- DataRequest.DstEndpoint = (uint8_t) attget;\r
-\r
- DataRequest.SrcEndpoint = 1;\r
-\r
- DataRequest.ClusterID = 6;\r
-\r
- DataRequest.TransID = 5;\r
-\r
- DataRequest.Options = 0;\r
-\r
- DataRequest.Radius = 0xEE;\r
-\r
- initDone = 1;\r
-\r
- while (1)\r
- {\r
- uint8_t *data;\r
- //initDone = 0;\r
-\r
- consolePrint(\r
- "Enter message to send or type CHANGE to change the destination\n");\r
- consolePrint("or QUIT to exit\n");\r
-\r
- consoleGetLine(cmd, 128);\r
- //initDone = 1;\r
- if (strcmp(cmd, "CHANGE") == 0)\r
- {\r
- break;\r
- }\r
- else if (strcmp(cmd, "QUIT") == 0)\r
- {\r
- quit = 1;\r
- break;\r
- }\r
- data = (uint8_t*) cmd;\r
- memcpy(DataRequest.Data, data, strlen(cmd));\r
- DataRequest.Len = strlen(cmd);\r
- initDone = 0;\r
- afDataRequest(&DataRequest);\r
- rpcWaitMqClientMsg(500);\r
- initDone = 1;\r
- }\r
-\r
- }\r
-\r
- return 0;\r
-}\r
-\r
diff --git a/examples/nwkTopology/nwkTopology.c~ b/examples/nwkTopology/nwkTopology.c~
+++ /dev/null
@@ -1,626 +0,0 @@
-/**************************************************************************************************\r
- * Filename: nwkTopology.c\r
- * Description: This file contains nwkTopology application.\r
- *\r
- *\r
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/\r
- *\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * Redistributions of source code must retain the above copyright\r
- * notice, this list of conditions and the following disclaimer.\r
- *\r
- * Redistributions in binary form must reproduce the above copyright\r
- * notice, this list of conditions and the following disclaimer in the\r
- * documentation and/or other materials provided with the\r
- * distribution.\r
- *\r
- * Neither the name of Texas Instruments Incorporated nor the names of\r
- * its contributors may be used to endorse or promote products derived\r
- * from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- */\r
-\r
-/*********************************************************************\r
- * INCLUDES\r
- */\r
-#include <string.h>\r
-#include <stdio.h>\r
-#include <unistd.h>\r
-#include <stdlib.h>\r
-\r
-#include "rpc.h"\r
-#include "mtSys.h"\r
-#include "mtZdo.h"\r
-#include "mtAf.h"\r
-#include "mtParser.h"\r
-#include "mtSapi.h"\r
-#include "rpcTransport.h"\r
-#include "dbgPrint.h"\r
-#include "hostConsole.h"\r
-\r
-/*********************************************************************\r
- * MACROS\r
- */\r
-\r
-#define MAX_CHILDREN 20\r
-#define MAX_NODE_LIST 64\r
-\r
-/*********************************************************************\r
- * TYPES\r
- */\r
-\r
-/*********************************************************************\r
- * LOCAL VARIABLE\r
- */\r
-\r
-//init ZDO device state\r
-devStates_t devState = DEV_HOLD;\r
-uint8_t gSrcEndPoint = 1;\r
-uint8_t gDstEndPoint = 1;\r
-\r
-/***********************************************************************/\r
-\r
-void usage(char* exeName)\r
-{\r
- consolePrint("Usage: ./%s <port>\n", exeName);\r
- consolePrint("Eample: ./%s /dev/ttyACM0\n", exeName);\r
-}\r
-\r
-/*********************************************************************\r
- * LOCAL FUNCTIONS\r
- */\r
-//ZDO Callbacks\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState);\r
-static uint8_t mtZdoMgmtLqiRspCb(MgmtLqiRspFormat_t *msg);\r
-\r
-//SYS Callbacks\r
-\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg);\r
-\r
-//helper functions\r
-static uint8_t setNVStartup(uint8_t startupOption);\r
-static uint8_t setNVChanList(uint32_t chanList);\r
-static uint8_t setNVPanID(uint32_t panId);\r
-static uint8_t setNVDevType(uint8_t devType);\r
-static int32_t startNetwork(void);\r
-static int32_t registerAf(void);\r
-\r
-/*********************************************************************\r
- * CALLBACK FUNCTIONS\r
- */\r
-\r
-// SYS callbacks\r
-static mtSysCb_t mtSysCb =\r
- {\r
- //mtSysResetInd //MT_SYS_RESET_IND\r
- NULL, NULL, NULL, mtSysResetIndCb, NULL, NULL, NULL, NULL, NULL,\r
- NULL, NULL, NULL, NULL, NULL };\r
-\r
-static mtZdoCb_t mtZdoCb =\r
- { NULL, // MT_ZDO_NWK_ADDR_RSP\r
- NULL, // MT_ZDO_IEEE_ADDR_RSP\r
- NULL, // MT_ZDO_NODE_DESC_RSP\r
- NULL, // MT_ZDO_POWER_DESC_RSP\r
- NULL, // MT_ZDO_SIMPLE_DESC_RSP\r
- NULL, // MT_ZDO_ACTIVE_EP_RSP\r
- NULL, // MT_ZDO_MATCH_DESC_RSP\r
- NULL, // MT_ZDO_COMPLEX_DESC_RSP\r
- NULL, // MT_ZDO_USER_DESC_RSP\r
- NULL, // MT_ZDO_USER_DESC_CONF\r
- NULL, // MT_ZDO_SERVER_DISC_RSP\r
- NULL, // MT_ZDO_END_DEVICE_BIND_RSP\r
- NULL, // MT_ZDO_BIND_RSP\r
- NULL, // MT_ZDO_UNBIND_RSP\r
- NULL, // MT_ZDO_MGMT_NWK_DISC_RSP\r
- mtZdoMgmtLqiRspCb, // MT_ZDO_MGMT_LQI_RSP\r
- NULL, // MT_ZDO_MGMT_RTG_RSP\r
- NULL, // MT_ZDO_MGMT_BIND_RSP\r
- NULL, // MT_ZDO_MGMT_LEAVE_RSP\r
- NULL, // MT_ZDO_MGMT_DIRECT_JOIN_RSP\r
- NULL, // MT_ZDO_MGMT_PERMIT_JOIN_RSP\r
- mtZdoStateChangeIndCb, // MT_ZDO_STATE_CHANGE_IND\r
- NULL, // MT_ZDO_END_DEVICE_ANNCE_IND\r
- NULL, // MT_ZDO_SRC_RTG_IND\r
- NULL, //MT_ZDO_BEACON_NOTIFY_IND\r
- NULL, //MT_ZDO_JOIN_CNF\r
- NULL, //MT_ZDO_NWK_DISCOVERY_CNF\r
- NULL, // MT_ZDO_CONCENTRATOR_IND_CB\r
- NULL, // MT_ZDO_LEAVE_IND\r
- NULL, //MT_ZDO_STATUS_ERROR_RSP\r
- NULL, //MT_ZDO_MATCH_DESC_RSP_SENT\r
- NULL, NULL };\r
-\r
-typedef struct\r
-{\r
- uint16_t ChildAddr;\r
- uint8_t Type;\r
-\r
-} ChildNode_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t NodeAddr;\r
- uint8_t Type;\r
- uint8_t ChildCount;\r
- ChildNode_t childs[MAX_CHILDREN];\r
-} Node_t;\r
-\r
-Node_t nodeList[MAX_NODE_LIST];\r
-uint8_t nodeCount = 0;\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg)\r
-{\r
-\r
- consolePrint("ZNP Version: %d.%d.%d\n", msg->MajorRel, msg->MinorRel,\r
- msg->HwRev);\r
- return 0;\r
-}\r
-\r
-/********************************************************************\r
- * START OF ZDO CALL BACK FUNCTIONS\r
- */\r
-\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState)\r
-{\r
-\r
- switch (newDevState)\r
- {\r
- case DEV_HOLD:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not started automatically\n");\r
- break;\r
- case DEV_INIT:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not connected to anything\n");\r
- break;\r
- case DEV_NWK_DISC:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Discovering PAN's to join\n");\r
- consolePrint("Network Discovering\n");\r
- break;\r
- case DEV_NWK_JOINING:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: Joining a PAN\n");\r
- consolePrint("Network Joining\n");\r
- break;\r
- case DEV_NWK_REJOIN:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: ReJoining a PAN, only for end devices\n");\r
- consolePrint("Network Rejoining\n");\r
- break;\r
- case DEV_END_DEVICE_UNAUTH:\r
- consolePrint("Network Authenticating\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Joined but not yet authenticated by trust center\n");\r
- break;\r
- case DEV_END_DEVICE:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as device after authentication\n");\r
- break;\r
- case DEV_ROUTER:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device joined, authenticated and is a router\n");\r
- break;\r
- case DEV_COORD_STARTING:\r
- consolePrint("Network Starting\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_ZB_COORD:\r
- consolePrint("Network Started\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_NWK_ORPHAN:\r
- consolePrint("Network Orphaned\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device has lost information about its parent\n");\r
- break;\r
- default:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: unknown state");\r
- break;\r
- }\r
-\r
- devState = (devStates_t) newDevState;\r
-\r
- return SUCCESS;\r
-}\r
-\r
-static uint8_t mtZdoMgmtLqiRspCb(MgmtLqiRspFormat_t *msg)\r
-{\r
- uint8_t devType = 0;\r
- uint8_t devRelation = 0;\r
- uint8_t localNodeCount = nodeCount;\r
- MgmtLqiReqFormat_t req;\r
-\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- nodeCount++;\r
- nodeList[localNodeCount].NodeAddr = msg->SrcAddr;\r
- nodeList[localNodeCount].Type = (msg->SrcAddr == 0 ?\r
- DEVICETYPE_COORDINATOR :\r
- DEVICETYPE_ROUTER);\r
- nodeList[localNodeCount].ChildCount = 0;\r
- uint32_t i;\r
- for (i = 0; i < msg->NeighborLqiListCount; i++)\r
- {\r
- devType = msg->NeighborLqiList[i].DevTyp_RxOnWhenIdle_Relat & 3;\r
- devRelation = ((msg->NeighborLqiList[i].DevTyp_RxOnWhenIdle_Relat\r
- >> 4) & 7);\r
- if (devRelation == 1)\r
- {\r
- uint8_t cCount = nodeList[localNodeCount].ChildCount;\r
- nodeList[localNodeCount].childs[cCount].ChildAddr =\r
- msg->NeighborLqiList[i].NetworkAddress;\r
- nodeList[localNodeCount].childs[cCount].Type = devType;\r
- nodeList[localNodeCount].ChildCount++;\r
- if (devType == DEVICETYPE_ROUTER)\r
- {\r
- req.DstAddr = msg->NeighborLqiList[i].NetworkAddress;\r
- req.StartIndex = 0;\r
- zdoMgmtLqiReq(&req);\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("MgmtLqiRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
-\r
- return msg->Status;\r
-}\r
-\r
-// helper functions for building and sending the NV messages\r
-static uint8_t setNVStartup(uint8_t startupOption)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
- // sending startup option\r
-\r
- nvWrite.Id = ZCD_NV_STARTUP_OPTION;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = startupOption;\r
- status = sysOsalNvWrite(&nvWrite);\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Startup Option cmd sent[%d]...\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVDevType(uint8_t devType)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
- // setting dev type\r
- nvWrite.Id = ZCD_NV_LOGICAL_TYPE;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = devType;\r
- status = sysOsalNvWrite(&nvWrite);\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Device Type cmd sent... [%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVPanID(uint32_t panId)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write PAN ID cmd sending...\n");\r
-\r
- nvWrite.Id = ZCD_NV_PANID;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 2;\r
- nvWrite.Value[0] = LO_UINT16(panId);\r
- nvWrite.Value[1] = HI_UINT16(panId);\r
- status = sysOsalNvWrite(&nvWrite);\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write PAN ID cmd sent...[%d]\n", status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVChanList(uint32_t chanList)\r
-{\r
- OsalNvWriteFormat_t nvWrite;\r
- uint8_t status;\r
- // setting chanList\r
- nvWrite.Id = ZCD_NV_CHANLIST;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 4;\r
- nvWrite.Value[0] = BREAK_UINT32(chanList, 0);\r
- nvWrite.Value[1] = BREAK_UINT32(chanList, 1);\r
- nvWrite.Value[2] = BREAK_UINT32(chanList, 2);\r
- nvWrite.Value[3] = BREAK_UINT32(chanList, 3);\r
- status = sysOsalNvWrite(&nvWrite);\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Channel List cmd sent...[%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static int32_t startNetwork(void)\r
-{\r
- char cDevType;\r
- uint8_t devType;\r
- int32_t status;\r
- uint8_t newNwk = 0;\r
- char sCh[128];\r
-\r
- do\r
- {\r
- consolePrint("Do you wish to start/join a new network? (y/n)\n");\r
- consoleGetLine(sCh, 128);\r
- if (sCh[0] == 'n' || sCh[0] == 'N')\r
- {\r
- status = setNVStartup(0);\r
- }\r
- else if (sCh[0] == 'y' || sCh[0] == 'Y')\r
- {\r
- status = setNVStartup(\r
- ZCD_STARTOPT_CLEAR_STATE | ZCD_STARTOPT_CLEAR_CONFIG);\r
- newNwk = 1;\r
-\r
- }\r
- else\r
- {\r
- consolePrint("Incorrect input please type y or n\n");\r
- }\r
- } while (sCh[0] != 'y' && sCh[0] != 'Y' && sCh[0] != 'n' && sCh[0] != 'N');\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "network start failed\n");\r
- return -1;\r
- }\r
- consolePrint("Resetting ZNP\n");\r
- ResetReqFormat_t resReq;\r
- resReq.Type = 1;\r
- sysResetReq(&resReq);\r
- //flush the rsp\r
- rpcWaitMqClientMsg(5000);\r
-\r
- if (newNwk)\r
- {\r
- #ifndef CC26xx\r
- consolePrint(\r
- "Enter device type c: Coordinator, r: Router, e: End Device:\n");\r
- consoleGetLine(sCh, 128);\r
- cDevType = sCh[0];\r
-\r
- switch (cDevType)\r
- {\r
- case 'c':\r
- case 'C':\r
- devType = DEVICETYPE_COORDINATOR;\r
- break;\r
- case 'r':\r
- case 'R':\r
- devType = DEVICETYPE_ROUTER;\r
- break;\r
- case 'e':\r
- case 'E':\r
- default:\r
- devType = DEVICETYPE_ENDDEVICE;\r
- break;\r
- }\r
- status = setNVDevType(devType);\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVDevType failed\n");\r
- return 0;\r
- }\r
-#endif //CC26xx\r
- //Select random PAN ID for Coord and join any PAN for RTR/ED\r
- status = setNVPanID(0xFFFF);\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVPanID failed\n");\r
- return -1;\r
- }\r
- consolePrint("Enter channel 11-26:\n");\r
- consoleGetLine(sCh, 128);\r
-\r
- status = setNVChanList(1 << atoi(sCh));\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "setNVPanID failed\n");\r
- return -1;\r
- }\r
-\r
- }\r
-\r
- registerAf();\r
- consolePrint("EndPoint: 1\n");\r
-\r
- status = zdoInit();\r
- if (status == NEW_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit NEW_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else if (status == RESTORED_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit RESTORED_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit failed\n");\r
- status = -1;\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "process zdoStatechange callbacks\n");\r
-\r
- //flush AREQ ZDO State Change messages\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(5000);\r
-\r
- if (((devType == DEVICETYPE_COORDINATOR) && (devState == DEV_ZB_COORD))\r
- || ((devType == DEVICETYPE_ROUTER) && (devState == DEV_ROUTER))\r
- || ((devType == DEVICETYPE_ENDDEVICE)\r
- && (devState == DEV_END_DEVICE)))\r
- {\r
- break;\r
- }\r
- }\r
- //set startup option back to keep configuration in case of reset\r
- status = setNVStartup(0);\r
- if (devState < DEV_END_DEVICE)\r
- {\r
- //start network failed\r
- return -1;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-static int32_t registerAf(void)\r
-{\r
- int32_t status = 0;\r
- RegisterFormat_t reg;\r
-\r
- reg.EndPoint = 1;\r
- reg.AppProfId = 0x0104;\r
- reg.AppDeviceId = 0x0100;\r
- reg.AppDevVer = 1;\r
- reg.LatencyReq = 0;\r
- reg.AppNumInClusters = 1;\r
- reg.AppInClusterList[0] = 0x0006;\r
- reg.AppNumOutClusters = 0;\r
-\r
- status = afRegister(®);\r
- return status;\r
-}\r
-\r
-/*********************************************************************\r
- * INTERFACE FUNCTIONS\r
- */\r
-uint32_t appInit(void)\r
-{\r
- int32_t status = 0;\r
- uint32_t msgCnt = 0;\r
-\r
- //Flush all messages from the que\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(10);\r
- if (status != -1)\r
- {\r
- msgCnt++;\r
- }\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "flushed %d message from msg queue\n", msgCnt);\r
-\r
- //Register Callbacks MT system callbacks\r
- sysRegisterCallbacks(mtSysCb);\r
- zdoRegisterCallbacks(mtZdoCb);\r
-\r
- return 0;\r
-}\r
-\r
-void* appProcess(void *argument)\r
-{\r
- int32_t status = 0;\r
- //Flush all messages from the que\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(50);\r
- }\r
- //init variable\r
- devState = DEV_HOLD;\r
- gSrcEndPoint = 1;\r
- gDstEndPoint = 1;\r
-\r
- status = startNetwork();\r
- if (status != -1)\r
- {\r
- consolePrint("Network up\n\n");\r
- }\r
- else\r
- {\r
- consolePrint("Network Error\n\n");\r
- }\r
-\r
- sysGetExtAddr();\r
-\r
- OsalNvWriteFormat_t nvWrite;\r
- nvWrite.Id = ZCD_NV_ZDO_DIRECT_CB;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = 1;\r
- status = sysOsalNvWrite(&nvWrite);\r
- status = 0;\r
- char cmd[128];\r
- MgmtLqiReqFormat_t req;\r
- req.DstAddr = 0;\r
- req.StartIndex = 0;\r
- while (1)\r
- {\r
- consolePrint("Press Enter to discover Network Topology:\n");\r
-\r
- consoleGetLine(cmd, 128);\r
- nodeCount = 0;\r
-\r
- zdoMgmtLqiReq(&req);\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(1000);\r
- }\r
- status = 0;\r
- uint8_t i;\r
- for (i = 0; i < nodeCount; i++)\r
- {\r
- char *devtype = (\r
- nodeList[i].Type == DEVICETYPE_ROUTER ?\r
- "ROUTER" : "END DEVICE");\r
- if (nodeList[i].Type == DEVICETYPE_COORDINATOR)\r
- {\r
- devtype = "COORDINATOR";\r
- }\r
- consolePrint("Node Address: 0x%04X Type: %s\n",\r
- nodeList[i].NodeAddr, devtype);\r
-\r
- consolePrint("Children: %d\n", nodeList[i].ChildCount);\r
- uint8_t cI;\r
- for (cI = 0; cI < nodeList[i].ChildCount; cI++)\r
- {\r
- uint8_t type = nodeList[i].childs[cI].Type;\r
- consolePrint("\tAddress: 0x%04X Type: %s\n",\r
- nodeList[i].childs[cI].ChildAddr,\r
- (type == DEVICETYPE_ROUTER ? "ROUTER" : "END DEVICE"));\r
- }\r
- consolePrint("\n");\r
- }\r
- }\r
- return 0;\r
-}\r
-\r
diff --git a/examples/servDisc/servDisc.c~ b/examples/servDisc/servDisc.c~
+++ /dev/null
@@ -1,586 +0,0 @@
-/**************************************************************************************************\r
- * Filename: servDisc.c\r
- * Description: This file contains servDisc application.\r
- *\r
- *\r
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/\r
- *\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * Redistributions of source code must retain the above copyright\r
- * notice, this list of conditions and the following disclaimer.\r
- *\r
- * Redistributions in binary form must reproduce the above copyright\r
- * notice, this list of conditions and the following disclaimer in the\r
- * documentation and/or other materials provided with the\r
- * distribution.\r
- *\r
- * Neither the name of Texas Instruments Incorporated nor the names of\r
- * its contributors may be used to endorse or promote products derived\r
- * from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- */\r
-\r
-/*********************************************************************\r
- * INCLUDES\r
- */\r
-#include <string.h>\r
-#include <stdio.h>\r
-#include <unistd.h>\r
-#include <stdlib.h>\r
-\r
-#include "rpc.h"\r
-#include "mtSys.h"\r
-#include "mtZdo.h"\r
-#include "mtAf.h"\r
-#include "mtParser.h"\r
-#include "mtSapi.h"\r
-#include "rpcTransport.h"\r
-#include "dbgPrint.h"\r
-#include "hostConsole.h"\r
-\r
-/*********************************************************************\r
- * MACROS\r
- */\r
-\r
-/*********************************************************************\r
- * TYPES\r
- */\r
-\r
-/*********************************************************************\r
- * LOCAL VARIABLE\r
- */\r
-\r
-//init ZDO device state\r
-devStates_t devState = DEV_HOLD;\r
-uint8_t gSrcEndPoint = 1;\r
-uint8_t gDstEndPoint = 1;\r
-\r
-/*********************************************************************\r
- * LOCAL FUNCTIONS\r
- */\r
-//ZDO Callbacks\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState);\r
-static uint8_t mtZdoSimpleDescRspCb(SimpleDescRspFormat_t *msg);\r
-static uint8_t mtZdoActiveEpRspCb(ActiveEpRspFormat_t *msg);\r
-static uint8_t mtZdoEndDeviceAnnceIndCb(EndDeviceAnnceIndFormat_t *msg);\r
-\r
-//SYS Callbacks\r
-\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg);\r
-\r
-//helper functions\r
-static uint8_t setNVStartup(uint8_t startupOption);\r
-static uint8_t setNVChanList(uint32_t chanList);\r
-static uint8_t setNVPanID(uint32_t panId);\r
-static uint8_t setNVDevType(uint8_t devType);\r
-static int32_t startNetwork(void);\r
-static int32_t registerAf(void);\r
-\r
-/*********************************************************************\r
- * CALLBACK FUNCTIONS\r
- */\r
-\r
-// SYS callbacks\r
-static mtSysCb_t mtSysCb =\r
- { NULL, NULL, NULL, mtSysResetIndCb, NULL, NULL, NULL, NULL, NULL, NULL,\r
- NULL, NULL, NULL, NULL };\r
-\r
-static mtZdoCb_t mtZdoCb =\r
- { NULL, // MT_ZDO_NWK_ADDR_RSP\r
- NULL, // MT_ZDO_IEEE_ADDR_RSP\r
- NULL, // MT_ZDO_NODE_DESC_RSP\r
- NULL, // MT_ZDO_POWER_DESC_RSP\r
- mtZdoSimpleDescRspCb, // MT_ZDO_SIMPLE_DESC_RSP\r
- mtZdoActiveEpRspCb, // MT_ZDO_ACTIVE_EP_RSP\r
- NULL, // MT_ZDO_MATCH_DESC_RSP\r
- NULL, // MT_ZDO_COMPLEX_DESC_RSP\r
- NULL, // MT_ZDO_USER_DESC_RSP\r
- NULL, // MT_ZDO_USER_DESC_CONF\r
- NULL, // MT_ZDO_SERVER_DISC_RSP\r
- NULL, // MT_ZDO_END_DEVICE_BIND_RSP\r
- NULL, // MT_ZDO_BIND_RSP\r
- NULL, // MT_ZDO_UNBIND_RSP\r
- NULL, // MT_ZDO_MGMT_NWK_DISC_RSP\r
- NULL, // MT_ZDO_MGMT_LQI_RSP\r
- NULL, // MT_ZDO_MGMT_RTG_RSP\r
- NULL, // MT_ZDO_MGMT_BIND_RSP\r
- NULL, // MT_ZDO_MGMT_LEAVE_RSP\r
- NULL, // MT_ZDO_MGMT_DIRECT_JOIN_RSP\r
- NULL, // MT_ZDO_MGMT_PERMIT_JOIN_RSP\r
- mtZdoStateChangeIndCb, // MT_ZDO_STATE_CHANGE_IND\r
- mtZdoEndDeviceAnnceIndCb, // MT_ZDO_END_DEVICE_ANNCE_IND\r
- NULL, // MT_ZDO_SRC_RTG_IND\r
- NULL, //MT_ZDO_BEACON_NOTIFY_IND\r
- NULL, //MT_ZDO_JOIN_CNF\r
- NULL, //MT_ZDO_NWK_DISCOVERY_CNF\r
- NULL, // MT_ZDO_CONCENTRATOR_IND_CB\r
- NULL, // MT_ZDO_LEAVE_IND\r
- NULL, //MT_ZDO_STATUS_ERROR_RSP\r
- NULL, //MT_ZDO_MATCH_DESC_RSP_SENT\r
- NULL, NULL };\r
-\r
-static uint8_t mtSysResetIndCb(ResetIndFormat_t *msg)\r
-{\r
-\r
- consolePrint("ZNP Version: %d.%d.%d\n", msg->MajorRel, msg->MinorRel,\r
- msg->HwRev);\r
- return 0;\r
-}\r
-\r
-/********************************************************************\r
- * START OF ZDO CALL BACK FUNCTIONS\r
- */\r
-\r
-static uint8_t mtZdoStateChangeIndCb(uint8_t newDevState)\r
-{\r
-\r
- switch (newDevState)\r
- {\r
- case DEV_HOLD:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not started automatically\n");\r
- break;\r
- case DEV_INIT:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Initialized - not connected to anything\n");\r
- break;\r
- case DEV_NWK_DISC:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Discovering PAN's to join\n");\r
- consolePrint("Network Discovering\n");\r
- break;\r
- case DEV_NWK_JOINING:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: Joining a PAN\n");\r
- consolePrint("Network Joining\n");\r
- break;\r
- case DEV_NWK_REJOIN:\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: ReJoining a PAN, only for end devices\n");\r
- consolePrint("Network Rejoining\n");\r
- break;\r
- case DEV_END_DEVICE_UNAUTH:\r
- consolePrint("Network Authenticating\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Joined but not yet authenticated by trust center\n");\r
- break;\r
- case DEV_END_DEVICE:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as device after authentication\n");\r
- break;\r
- case DEV_ROUTER:\r
- consolePrint("Network Joined\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device joined, authenticated and is a router\n");\r
- break;\r
- case DEV_COORD_STARTING:\r
- consolePrint("Network Starting\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_ZB_COORD:\r
- consolePrint("Network Started\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Started as Zigbee Coordinator\n");\r
- break;\r
- case DEV_NWK_ORPHAN:\r
- consolePrint("Network Orphaned\n");\r
- dbg_print(PRINT_LEVEL_INFO,\r
- "mtZdoStateChangeIndCb: Device has lost information about its parent\n");\r
- break;\r
- default:\r
- dbg_print(PRINT_LEVEL_INFO, "mtZdoStateChangeIndCb: unknown state");\r
- break;\r
- }\r
-\r
- devState = (devStates_t) newDevState;\r
-\r
- return SUCCESS;\r
-}\r
-static uint8_t mtZdoSimpleDescRspCb(SimpleDescRspFormat_t *msg)\r
-{\r
-\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- consolePrint("\tEndpoint: 0x%02X\n", msg->Endpoint);\r
- consolePrint("\tProfileID: 0x%04X\n", msg->ProfileID);\r
- consolePrint("\tDeviceID: 0x%04X\n", msg->DeviceID);\r
- consolePrint("\tDeviceVersion: 0x%02X\n", msg->DeviceVersion);\r
- consolePrint("\tNumInClusters: %d\n", msg->NumInClusters);\r
- uint32_t i;\r
- for (i = 0; i < msg->NumInClusters; i++)\r
- {\r
- consolePrint("\t\tInClusterList[%d]: 0x%04X\n", i,\r
- msg->InClusterList[i]);\r
- }\r
- consolePrint("\tNumOutClusters: %d\n", msg->NumOutClusters);\r
- for (i = 0; i < msg->NumOutClusters; i++)\r
- {\r
- consolePrint("\t\tOutClusterList[%d]: 0x%04X\n", i,\r
- msg->OutClusterList[i]);\r
- }\r
- consolePrint("\n");\r
- }\r
- else\r
- {\r
- consolePrint("SimpleDescRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
-\r
- return msg->Status;\r
-}\r
-static uint8_t mtZdoActiveEpRspCb(ActiveEpRspFormat_t *msg)\r
-{\r
-\r
- SimpleDescReqFormat_t simReq;\r
- if (msg->Status == MT_RPC_SUCCESS)\r
- {\r
- simReq.DstAddr = msg->NwkAddr;\r
- simReq.NwkAddrOfInterest = msg->NwkAddr;\r
- consolePrint("Number of Endpoints: %d\n", msg->ActiveEPCount);\r
- uint32_t i;\r
- for (i = 0; i < msg->ActiveEPCount; i++)\r
- {\r
- simReq.Endpoint = msg->ActiveEPList[i];\r
- zdoSimpleDescReq(&simReq);\r
- }\r
- }\r
- else\r
- {\r
- consolePrint("ActiveEpRsp Status: FAIL 0x%02X\n", msg->Status);\r
- }\r
-\r
- return msg->Status;\r
-}\r
-\r
-static uint8_t mtZdoEndDeviceAnnceIndCb(EndDeviceAnnceIndFormat_t *msg)\r
-{\r
-\r
- ActiveEpReqFormat_t actReq;\r
- actReq.DstAddr = msg->NwkAddr;\r
- actReq.NwkAddrOfInterest = msg->NwkAddr;\r
- consolePrint("\nNew device joined network.\nNwkAddr: 0x%04X\n",\r
- msg->NwkAddr);\r
- zdoActiveEpReq(&actReq);\r
- return 0;\r
-}\r
-\r
-// helper functions for building and sending the NV messages\r
-static uint8_t setNVStartup(uint8_t startupOption)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- // sending startup option\r
- nvWrite.Id = ZCD_NV_STARTUP_OPTION;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = startupOption;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\nNV Write Startup Option cmd sent[%d]...\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVDevType(uint8_t devType)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- // setting dev type\r
- nvWrite.Id = ZCD_NV_LOGICAL_TYPE;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = devType;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Device Type cmd sent... [%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVPanID(uint32_t panId)\r
-{\r
- uint8_t status;\r
- OsalNvWriteFormat_t nvWrite;\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\nNV Write PAN ID cmd sending...\n");\r
-\r
- nvWrite.Id = ZCD_NV_PANID;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 2;\r
- nvWrite.Value[0] = LO_UINT16(panId);\r
- nvWrite.Value[1] = HI_UINT16(panId);\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\nNV Write PAN ID cmd sent...[%d]\n", status);\r
-\r
- return status;\r
-}\r
-\r
-static uint8_t setNVChanList(uint32_t chanList)\r
-{\r
- OsalNvWriteFormat_t nvWrite;\r
- uint8_t status;\r
-\r
- // setting chanList\r
- nvWrite.Id = ZCD_NV_CHANLIST;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 4;\r
- nvWrite.Value[0] = BREAK_UINT32(chanList, 0);\r
- nvWrite.Value[1] = BREAK_UINT32(chanList, 1);\r
- nvWrite.Value[2] = BREAK_UINT32(chanList, 2);\r
- nvWrite.Value[3] = BREAK_UINT32(chanList, 3);\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "\n");\r
- dbg_print(PRINT_LEVEL_INFO, "NV Write Channel List cmd sent...[%d]\n",\r
- status);\r
-\r
- return status;\r
-}\r
-\r
-static int32_t startNetwork(void)\r
-{\r
- char cDevType;\r
- uint8_t devType;\r
- int32_t status;\r
- uint8_t newNwk = 0;\r
- char sCh[128];\r
-\r
- do\r
- {\r
- consolePrint("Do you wish to start/join a new network? (y/n)\n");\r
- consoleGetLine(sCh, 128);\r
- if (sCh[0] == 'n' || sCh[0] == 'N')\r
- {\r
- status = setNVStartup(0);\r
- }\r
- else if (sCh[0] == 'y' || sCh[0] == 'Y')\r
- {\r
- status = setNVStartup(\r
- ZCD_STARTOPT_CLEAR_STATE | ZCD_STARTOPT_CLEAR_CONFIG);\r
- newNwk = 1;\r
-\r
- }\r
- else\r
- {\r
- consolePrint("Incorrect input please type y or n\n");\r
- }\r
- } while (sCh[0] != 'y' && sCh[0] != 'Y' && sCh[0] != 'n' && sCh[0] != 'N');\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "network start failed\n");\r
- return -1;\r
- }\r
- consolePrint("Resetting ZNP\n");\r
- ResetReqFormat_t resReq;\r
- resReq.Type = 1;\r
- sysResetReq(&resReq);\r
- //flush the rsp\r
- rpcWaitMqClientMsg(5000);\r
-\r
- if (newNwk)\r
- {\r
- #ifndef CC26xx\r
- consolePrint(\r
- "Enter device type c: Coordinator, r: Router, e: End Device:\n");\r
- consoleGetLine(sCh, 128);\r
- cDevType = sCh[0];\r
-\r
- switch (cDevType)\r
- {\r
- case 'c':\r
- case 'C':\r
- devType = DEVICETYPE_COORDINATOR;\r
- break;\r
- case 'r':\r
- case 'R':\r
- devType = DEVICETYPE_ROUTER;\r
- break;\r
- case 'e':\r
- case 'E':\r
- default:\r
- devType = DEVICETYPE_ENDDEVICE;\r
- break;\r
- }\r
- status = setNVDevType(devType);\r
-\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVDevType failed\n");\r
- return 0;\r
- }\r
- #endif //CC26xx\r
-\r
- //Select random PAN ID for Coord and join any PAN for RTR/ED\r
- status = setNVPanID(0xFFFF);\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_WARNING, "setNVPanID failed\n");\r
- return -1;\r
- }\r
- consolePrint("Enter channel 11-26:\n");\r
- consoleGetLine(sCh, 128);\r
-\r
- status = setNVChanList(1 << atoi(sCh));\r
- if (status != MT_RPC_SUCCESS)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "setNVPanID failed\n");\r
- return -1;\r
- }\r
-\r
- }\r
-\r
- registerAf();\r
- consolePrint("EndPoint: 1\n");\r
-\r
- status = zdoInit();\r
- if (status == NEW_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit NEW_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else if (status == RESTORED_NETWORK)\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit RESTORED_NETWORK\n");\r
- status = MT_RPC_SUCCESS;\r
- }\r
- else\r
- {\r
- dbg_print(PRINT_LEVEL_INFO, "zdoInit failed\n");\r
- status = -1;\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "process zdoStatechange callbacks\n");\r
-\r
- //flush AREQ ZDO State Change messages\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(5000);\r
-\r
- if (((devType == DEVICETYPE_COORDINATOR) && (devState == DEV_ZB_COORD))\r
- || ((devType == DEVICETYPE_ROUTER) && (devState == DEV_ROUTER))\r
- || ((devType == DEVICETYPE_ENDDEVICE)\r
- && (devState == DEV_END_DEVICE)))\r
- {\r
- break;\r
- }\r
- }\r
- //set startup option back to keep configuration in case of reset\r
- status = setNVStartup(0);\r
- if (devState < DEV_END_DEVICE)\r
- {\r
- //start network failed\r
- return -1;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-static int32_t registerAf(void)\r
-{\r
- int32_t status = 0;\r
- RegisterFormat_t reg;\r
-\r
- reg.EndPoint = 1;\r
- reg.AppProfId = 0x0104;\r
- reg.AppDeviceId = 0x0100;\r
- reg.AppDevVer = 1;\r
- reg.LatencyReq = 0;\r
- reg.AppNumInClusters = 1;\r
- reg.AppInClusterList[0] = 0x0006;\r
- reg.AppNumOutClusters = 0;\r
-\r
- status = afRegister(®);\r
- return status;\r
-}\r
-\r
-/*********************************************************************\r
- * INTERFACE FUNCTIONS\r
- */\r
-uint32_t appInit(void)\r
-{\r
- int32_t status = 0;\r
- uint32_t msgCnt = 0;\r
-\r
- //Flush all messages from the que\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(10);\r
- if (status != -1)\r
- {\r
- msgCnt++;\r
- }\r
- }\r
-\r
- dbg_print(PRINT_LEVEL_INFO, "flushed %d message from msg queue\n", msgCnt);\r
-\r
- //Register Callbacks MT system callbacks\r
- sysRegisterCallbacks(mtSysCb);\r
- zdoRegisterCallbacks(mtZdoCb);\r
-\r
- return 0;\r
-}\r
-\r
-void* appProcess(void *argument)\r
-{\r
- int32_t status = 0;\r
- //Flush all messages from the que\r
- while (status != -1)\r
- {\r
- status = rpcWaitMqClientMsg(50);\r
- }\r
-\r
- //init variable\r
- devState = DEV_HOLD;\r
- gSrcEndPoint = 1;\r
- gDstEndPoint = 1;\r
-\r
- status = startNetwork();\r
- if (status != -1)\r
- {\r
- consolePrint("Network up\n\n");\r
- }\r
- else\r
- {\r
- consolePrint("Network Error\n\n");\r
- }\r
-\r
- sysGetExtAddr();\r
-\r
- OsalNvWriteFormat_t nvWrite;\r
- nvWrite.Id = ZCD_NV_ZDO_DIRECT_CB;\r
- nvWrite.Offset = 0;\r
- nvWrite.Len = 1;\r
- nvWrite.Value[0] = 1;\r
- status = sysOsalNvWrite(&nvWrite);\r
-\r
- while (1)\r
- {\r
- status = rpcWaitMqClientMsg(1000);\r
- }\r
-\r
- return 0;\r
-}\r
-\r
diff --git a/framework/mt/Zdo/mtZdo.c~ b/framework/mt/Zdo/mtZdo.c~
+++ /dev/null
@@ -1,3035 +0,0 @@
-/*
- * mtZdo.c
- *
- * This module contains the API for the MT ZDO Interface
- *
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/*********************************************************************
- * INCLUDES
- */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "mtZdo.h"
-#include "mtSys.h"
-#include "mtParser.h"
-#include "rpc.h"
-#include "hostConsole.h"
-#include "dbgPrint.h"
-
-/*********************************************************************
- * MACROS
- */
-#define STARTDELAY 0
-
-/*********************************************************************
- * LOCAL VARIABLES
- */
-static mtZdoCb_t mtZdoCbs;
-extern uint8_t srspRpcBuff[RPC_MAX_LEN];
-extern uint8_t srspRpcLen;
-
-/*********************************************************************
- * LOCAL FUNCTIONS
- */
-static void processSrsp(uint8_t *rpcBuff, uint8_t rpcLen);
-static void processStateChange(uint8_t *rpcBuff, uint8_t rpcLen);
-static void processNwkAddrRsp(uint8_t *rpcBuff, uint8_t rpcLen);
-
-/*********************************************************************
- * @fn processStateChange
- *
- * @brief receives and decodes the ZDO State Change Ind msg
- *
- * @param uint8_t *rpcBuff
- *
- * @return none
- */
-static void processStateChange(uint8_t *rpcBuff, uint8_t rpcLen)
-{
-
- uint8_t zdoState = rpcBuff[2];
- //passes the state to the callback function
- if (mtZdoCbs.pfnmtZdoStateChangeInd)
- {
- mtZdoCbs.pfnmtZdoStateChangeInd(zdoState);
- }
-}
-
-/*********************************************************************
- * @fn zdoNwkAddrReq
- *
- * @brief Send ZDO_NWK_ADDR_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoNwkAddrReq(NwkAddrReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 10;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- memcpy((cmd + cmInd), req->IEEEAddress, 8);
- cmInd += 8;
- cmd[cmInd++] = req->ReqType;
- cmd[cmInd++] = req->StartIndex;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_NWK_ADDR_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoIeeeAddrReq
- *
- * @brief Send ZDO_IEEE_ADDR_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoIeeeAddrReq(IeeeAddrReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 4;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->ShortAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ShortAddr >> 8) & 0xFF);
- cmd[cmInd++] = req->ReqType;
- cmd[cmInd++] = req->StartIndex;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_IEEE_ADDR_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoNodeDescReq
- *
- * @brief Send ZDO_NODE_DESC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoNodeDescReq(NodeDescReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 4;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_NODE_DESC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoPowerDescReq
- *
- * @brief Send ZDO_POWER_DESC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoPowerDescReq(PowerDescReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 4;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_POWER_DESC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoSimpleDescReq
- *
- * @brief Send ZDO_SIMPLE_DESC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoSimpleDescReq(SimpleDescReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 5;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
- cmd[cmInd++] = req->Endpoint;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_SIMPLE_DESC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoActiveEpReq
- *
- * @brief Send ZDO_ACTIVE_EP_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoActiveEpReq(ActiveEpReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 4;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_ACTIVE_EP_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMatchDescReq
- *
- * @brief Send ZDO_MATCH_DESC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMatchDescReq(MatchDescReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 8 + (req->NumInClusters * 2) + (req->NumOutClusters * 2);
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- int idx;
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->ProfileID & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ProfileID >> 8) & 0xFF);
- cmd[cmInd++] = req->NumInClusters;
- for (idx = 0; idx < req->NumInClusters; idx++)
- {
- cmd[cmInd++] = (uint8_t)(req->InClusterList[idx] & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->InClusterList[idx] >> 8) & 0xFF);
- }
- cmd[cmInd++] = req->NumOutClusters;
- for (idx = 0; idx < req->NumOutClusters; idx++)
- {
- cmd[cmInd++] = (uint8_t)(req->OutClusterList[idx] & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->OutClusterList[idx] >> 8) & 0xFF);
- }
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MATCH_DESC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoComplexDescReq
- *
- * @brief Send ZDO_COMPLEX_DESC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoComplexDescReq(ComplexDescReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 4;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_COMPLEX_DESC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoUserDescReq
- *
- * @brief Send ZDO_USER_DESC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoUserDescReq(UserDescReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 4;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_USER_DESC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoDeviceAnnce
- *
- * @brief Send ZDO_DEVICE_ANNCE_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoDeviceAnnce(DeviceAnnceFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 11;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->NWKAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NWKAddr >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->IEEEAddr, 8);
- cmInd += 8;
- cmd[cmInd++] = req->Capabilities;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_DEVICE_ANNCE, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoUserDescSet
- *
- * @brief Send ZDO_USER_DESC_SET to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoUserDescSet(UserDescSetFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 5 + req->Len;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- int idx;
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->NwkAddrOfInterest & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkAddrOfInterest >> 8) & 0xFF);
- cmd[cmInd++] = req->Len;
- for (idx = 0; idx < req->Len; idx++)
- {
- cmd[cmInd++] = req->UserDescriptor[idx];
- }
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_USER_DESC_SET, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoServerDiscReq
- *
- * @brief Send ZDO_SERVER_DISC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoServerDiscReq(ServerDiscReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 2;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->ServerMask & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ServerMask >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_SERVER_DISC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoEndDeviceBindReq
- *
- * @brief Send ZDO_END_DEVICE_BIND_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoEndDeviceBindReq(EndDeviceBindReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 17 + (req->NumInClusters * 2) + (req->NumOutClusters * 2);
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- int idx;
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = (uint8_t)(req->LocalCoordinator & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->LocalCoordinator >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->CoordinatorIEEE, 8);
- cmInd += 8;
- cmd[cmInd++] = req->EndPoint;
- cmd[cmInd++] = (uint8_t)(req->ProfileID & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ProfileID >> 8) & 0xFF);
- cmd[cmInd++] = req->NumInClusters;
- for (idx = 0; idx < req->NumInClusters; idx++)
- {
- cmd[cmInd++] = (uint8_t)(req->InClusterList[idx] & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->InClusterList[idx] >> 8) & 0xFF);
- }
- cmd[cmInd++] = req->NumOutClusters;
- for (idx = 0; idx < req->NumOutClusters; idx++)
- {
- cmd[cmInd++] = (uint8_t)(req->OutClusterList[idx] & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->OutClusterList[idx] >> 8) & 0xFF);
- }
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_END_DEVICE_BIND_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoBindReq
- *
- * @brief Send ZDO__BIND_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoBindReq(BindReqFormat_t *req)
-{
- uint8_t status;
- uint8_t addrmd = (req->DstAddrMode == 3 ? 8 : 2);
- uint8_t cmInd = 0;
- uint8_t endP = (req->DstAddrMode == 3 ? 1 : 0);
- uint32_t cmdLen = 14 + addrmd + endP;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->SrcAddress, 8);
- cmInd += 8;
- cmd[cmInd++] = req->SrcEndpoint;
- cmd[cmInd++] = (uint8_t)(req->ClusterID & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ClusterID >> 8) & 0xFF);
- cmd[cmInd++] = req->DstAddrMode;
- memcpy((cmd + cmInd), req->DstAddress, addrmd);
- cmInd += addrmd;
- if (endP)
- cmd[cmInd++] = req->DstEndpoint;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_BIND_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoUnbindReq
- *
- * @brief Send ZDO_UNBIND_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoUnbindReq(UnbindReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint8_t addrmd = (req->DstAddrMode == 3 ? 8 : 2);
- uint8_t endP = (req->DstAddrMode == 3 ? 1 : 0);
- uint32_t cmdLen = 16;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->SrcAddress, 8);
- cmInd += 8;
- cmd[cmInd++] = req->SrcEndpoint;
- cmd[cmInd++] = (uint8_t)(req->ClusterID & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ClusterID >> 8) & 0xFF);
- cmd[cmInd++] = req->DstAddrMode;
- memcpy((cmd + cmInd), req->DstAddress, addrmd);
- cmInd += addrmd;
- if (endP)
- cmd[cmInd++] = req->DstEndpoint;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_UNBIND_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtNwkDiscReq
- *
- * @brief Send ZDO_MGMT_NWK_DISC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtNwkDiscReq(MgmtNwkDiscReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 8;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->ScanChannels, 4);
- cmInd += 4;
- cmd[cmInd++] = req->ScanDuration;
- cmd[cmInd++] = req->StartIndex;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_NWK_DISC_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtLqiReq
- *
- * @brief Send ZDO_MGMT_LQI_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtLqiReq(MgmtLqiReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 3;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = req->StartIndex;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_LQI_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtRtgReq
- *
- * @brief Send ZDO_MGMT_RTG_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtRtgReq(MgmtRtgReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 3;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = req->StartIndex;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_RTG_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtBindReq
- *
- * @brief Send ZDO_MGMT_BIND_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtBindReq(MgmtBindReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 3;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = req->StartIndex;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_BIND_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtLeaveReq
- *
- * @brief Send ZDO_MGMT_LEAVE_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtLeaveReq(MgmtLeaveReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 11;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->DeviceAddr, 8);
- cmInd += 8;
- cmd[cmInd++] = req->RemoveChildre_Rejoin;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_LEAVE_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtDirectJoinReq
- *
- * @brief Send ZDO_MGMT_DIRECT_JOIN_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtDirectJoinReq(MgmtDirectJoinReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 11;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->DeviceAddr, 8);
- cmInd += 8;
- cmd[cmInd++] = req->CapInfo;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_DIRECT_JOIN_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtPermitJoinReq
- *
- * @brief Send ZDO_MGMT_PERMIT_JOIN_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtPermitJoinReq(MgmtPermitJoinReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 5;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = req->AddrMode;
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = req->Duration;
- cmd[cmInd++] = req->TCSignificance;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_PERMIT_JOIN_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMgmtNwkUpdateReq
- *
- * @brief Send ZDO_MGMT_NWK_UPDATE_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMgmtNwkUpdateReq(MgmtNwkUpdateReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 11;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->DstAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->DstAddr >> 8) & 0xFF);
- cmd[cmInd++] = req->DstAddrMode;
- memcpy((cmd + cmInd), req->ChannelMask, 4);
- cmInd += 4;
- cmd[cmInd++] = req->ScanDuration;
- cmd[cmInd++] = req->ScanCount;
- cmd[cmInd++] = (uint8_t)(req->NwkManagerAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->NwkManagerAddr >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MGMT_NWK_UPDATE_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoStartupFromApp
- *
- * @brief Send ZDO_STARTUP_FROM_APP_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoStartupFromApp(StartupFromAppFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 2;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = LO_UINT16(req->StartDelay);
- cmd[cmInd++] = HI_UINT16(req->StartDelay);
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_STARTUP_FROM_APP, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoAutoFindDestination
- *
- * @brief Send ZDO_AUTO_FIND_DESTINATION_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoAutoFindDestination(AutoFindDestinationFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 1;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = req->Endpoint;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_AUTO_FIND_DESTINATION, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoSetLinkKey
- *
- * @brief Send ZDO_SET_LINK_KEY to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoSetLinkKey(SetLinkKeyFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 26;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->ShortAddr & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ShortAddr >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->IEEEaddr, 8);
- cmInd += 8;
- memcpy((cmd + cmInd), req->LinkKeyData, 16);
- cmInd += 16;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_SET_LINK_KEY, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoRemoveLinkKey
- *
- * @brief Send ZDO_REMOVE_LINK_KEY to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoRemoveLinkKey(RemoveLinkKeyFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 8;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- memcpy((cmd + cmInd), req->IEEEaddr, 8);
- cmInd += 8;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_REMOVE_LINK_KEY, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoGetLinkKey
- *
- * @brief Send ZDO_GET_LINK_KEY to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoGetLinkKey(GetLinkKeyFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 8;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- memcpy((cmd + cmInd), req->IEEEaddr, 8);
- cmInd += 8;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_GET_LINK_KEY, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoNwkDiscoveryReq
- *
- * @brief Send ZDO_NWK_DISC_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoNwkDiscoveryReq(NwkDiscoveryReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 5;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- memcpy((cmd + cmInd), req->ScanChannels, 4);
- cmInd += 4;
- cmd[cmInd++] = req->ScanDuration;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_NWK_DISCOVERY_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoJoinReq
- *
- * @brief Send ZDO_JOIN_REQ to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoJoinReq(JoinReqFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 15;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = req->LogicalChannel;
- cmd[cmInd++] = (uint8_t)(req->PanID & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->PanID >> 8) & 0xFF);
- memcpy((cmd + cmInd), req->ExtendedPanID, 8);
- cmInd += 8;
- cmd[cmInd++] = (uint8_t)(req->ChosenParent & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ChosenParent >> 8) & 0xFF);
- cmd[cmInd++] = req->ParentDepth;
- cmd[cmInd++] = req->StackProfile;
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_JOIN_REQ, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMsgCbRegister
- *
- * @brief Send ZDO_MSG_CB_REGISTER to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMsgCbRegister(MsgCbRegisterFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 2;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->ClusterID & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ClusterID >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MSG_CB_REGISTER, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn zdoMsgCbRemove
- *
- * @brief Send ZDO_MSG_CB_REMOVE to ZNP
- *
- * @param req - Pointer to outgoing command structure
- *
- * @return status
- */
-uint8_t zdoMsgCbRemove(MsgCbRemoveFormat_t *req)
-{
- uint8_t status;
- uint8_t cmInd = 0;
- uint32_t cmdLen = 2;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[cmInd++] = (uint8_t)(req->ClusterID & 0xFF);
- cmd[cmInd++] = (uint8_t)((req->ClusterID >> 8) & 0xFF);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_MSG_CB_REMOVE, cmd, cmdLen);
-
- if (status == MT_RPC_SUCCESS)
- {
- rpcWaitMqClientMsg(50);
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*********************************************************************
- * @fn processGetLinkKey
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processGetLinkKey(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoGetLinkKey)
- {
- uint8_t msgIdx = 2;
- GetLinkKeySrspFormat_t rsp;
- if (rpcLen < 25)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.Status = rpcBuff[msgIdx++];
- rsp.IEEEAddr = 0;
- uint8_t i;
- for (i = 0; i < 8; i++)
- rsp.IEEEAddr |= ((uint64_t) rpcBuff[msgIdx++]) << (i * 8);
- memcpy(rsp.LinkKeyData, &rpcBuff[msgIdx], 16);
- msgIdx += 16;
-
- mtZdoCbs.pfnZdoGetLinkKey(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processNwkAddrRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processNwkAddrRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoNwkAddrRsp)
- {
- uint8_t msgIdx = 2;
- NwkAddrRspFormat_t rsp;
- if (rpcLen < 13)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.Status = rpcBuff[msgIdx++];
- rsp.IEEEAddr = 0;
- uint8_t i;
- for (i = 0; i < 8; i++)
- rsp.IEEEAddr |= ((uint64_t) rpcBuff[msgIdx++]) << (i * 8);
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.StartIndex = rpcBuff[msgIdx++];
- rsp.NumAssocDev = rpcBuff[msgIdx++];
- if (rpcLen > 13)
- {
- uint32_t i;
- for (i = 0; i < rsp.NumAssocDev; i++)
- {
- rsp.AssocDevList[i] = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
- }
- mtZdoCbs.pfnZdoNwkAddrRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processIeeeAddrRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processIeeeAddrRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoIeeeAddrRsp)
- {
- uint8_t msgIdx = 2;
- IeeeAddrRspFormat_t rsp;
- if (rpcLen < 13)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.Status = rpcBuff[msgIdx++];
- rsp.IEEEAddr = 0;
- uint8_t i;
- for (i = 0; i < 8; i++)
- rsp.IEEEAddr |= ((uint64_t) rpcBuff[msgIdx++]) << (i * 8);
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.StartIndex = rpcBuff[msgIdx++];
- rsp.NumAssocDev = rpcBuff[msgIdx++];
- rsp.StartIndex = (rsp.NumAssocDev == 0 ? 0 : rsp.StartIndex);
- if (rpcLen > 13)
- {
- uint32_t i;
- for (i = 0; i < rsp.NumAssocDev; i++)
- {
- rsp.AssocDevList[i] = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
- }
- mtZdoCbs.pfnZdoIeeeAddrRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processNodeDescRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processNodeDescRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoNodeDescRsp)
- {
- uint8_t msgIdx = 2;
- NodeDescRspFormat_t rsp;
- if (rpcLen < 18)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.LoTy_ComDescAv_UsrDesAv = rpcBuff[msgIdx++];
- rsp.APSFlg_FrqBnd = rpcBuff[msgIdx++];
- rsp.MACCapFlg = rpcBuff[msgIdx++];
- rsp.ManufacturerCode = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.MaxBufferSize = rpcBuff[msgIdx++];
- rsp.MaxTransferSize = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.ServerMask = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.MaxOutTransferSize = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.DescriptorCapabilities = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoNodeDescRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processPowerDescRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processPowerDescRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoPowerDescRsp)
- {
- uint8_t msgIdx = 2;
- PowerDescRspFormat_t rsp;
- if (rpcLen < 7)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.CurrntPwrMode_AvalPwrSrcs = rpcBuff[msgIdx++];
- rsp.CurrntPwrSrc_CurrntPwrSrcLvl = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoPowerDescRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processSimpleDescRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processSimpleDescRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoSimpleDescRsp)
- {
- uint8_t msgIdx = 2;
- SimpleDescRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Len = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- rsp.Endpoint = rpcBuff[msgIdx++];
- rsp.ProfileID = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.DeviceID = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.DeviceVersion = rpcBuff[msgIdx++];
- rsp.NumInClusters = rpcBuff[msgIdx++];
- uint32_t i;
- for (i = 0; i < rsp.NumInClusters; i++)
- {
- rsp.InClusterList[i] = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
- rsp.NumOutClusters = rpcBuff[msgIdx++];
- for (i = 0; i < rsp.NumOutClusters; i++)
- {
- rsp.OutClusterList[i] = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
- }
- mtZdoCbs.pfnZdoSimpleDescRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processActiveEpRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processActiveEpRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoActiveEpRsp)
- {
- uint8_t msgIdx = 2;
- ActiveEpRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.ActiveEPCount = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.ActiveEPCount; i++)
- {
- rsp.ActiveEPList[i] = rpcBuff[msgIdx++];
- }
- }
- mtZdoCbs.pfnZdoActiveEpRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMatchDescRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMatchDescRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMatchDescRsp)
- {
- uint8_t msgIdx = 2;
- MatchDescRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.MatchLength = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.MatchLength; i++)
- {
- rsp.MatchList[i] = rpcBuff[msgIdx++];
- }
- }
- mtZdoCbs.pfnZdoMatchDescRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processComplexDescRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processComplexDescRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoComplexDescRsp)
- {
- uint8_t msgIdx = 2;
- ComplexDescRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.ComplexLength = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.ComplexLength; i++)
- {
- rsp.ComplexList[i] = rpcBuff[msgIdx++];
- }
- }
- mtZdoCbs.pfnZdoComplexDescRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processUserDescRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processUserDescRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoUserDescRsp)
- {
- uint8_t msgIdx = 2;
- UserDescRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Len = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.Len; i++)
- {
- rsp.CUserDescriptor[i] = rpcBuff[msgIdx++];
- }
- }
- mtZdoCbs.pfnZdoUserDescRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processUserDescConf
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processUserDescConf(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoUserDescConf)
- {
- uint8_t msgIdx = 2;
- UserDescConfFormat_t rsp;
- if (rpcLen < 5)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
-
- mtZdoCbs.pfnZdoUserDescConf(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processServerDiscRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processServerDiscRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoServerDiscRsp)
- {
- uint8_t msgIdx = 2;
- ServerDiscRspFormat_t rsp;
- if (rpcLen < 5)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.ServerMask = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
-
- mtZdoCbs.pfnZdoServerDiscRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processEndDeviceBindRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processEndDeviceBindRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoEndDeviceBindRsp)
- {
- uint8_t msgIdx = 2;
- EndDeviceBindRspFormat_t rsp;
- if (rpcLen < 3)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoEndDeviceBindRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processBindRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processBindRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoBindRsp)
- {
- uint8_t msgIdx = 2;
- BindRspFormat_t rsp;
- if (rpcLen < 3)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoBindRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processUnbindRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processUnbindRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoUnbindRsp)
- {
- uint8_t msgIdx = 2;
- UnbindRspFormat_t rsp;
- if (rpcLen < 3)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoUnbindRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMgmtNwkDiscRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMgmtNwkDiscRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMgmtNwkDiscRsp)
- {
- uint8_t msgIdx = 2;
- MgmtNwkDiscRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NetworkCount = rpcBuff[msgIdx++];
- rsp.StartIndex = rpcBuff[msgIdx++];
- rsp.NetworkListCount = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.NetworkListCount; i++)
- {
- rsp.NetworkList[i].PanID = 0;
- uint8_t ind;
- for (ind = 0; ind < 8; ind++)
- rsp.NetworkList[i].PanID |= ((uint64_t) rpcBuff[msgIdx++])
- << (ind * 8);
- rsp.NetworkList[i].LogicalChannel = rpcBuff[msgIdx++];
- rsp.NetworkList[i].StackProf_ZigVer = rpcBuff[msgIdx++];
- rsp.NetworkList[i].BeacOrd_SupFramOrd = rpcBuff[msgIdx++];
- rsp.NetworkList[i].PermitJoin = rpcBuff[msgIdx++];
- }
- }
- mtZdoCbs.pfnZdoMgmtNwkDiscRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMgmtLqiRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMgmtLqiRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMgmtLqiRsp)
- {
- uint8_t msgIdx = 2;
- MgmtLqiRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.NeighborTableEntries = rpcBuff[msgIdx++];
- rsp.StartIndex = rpcBuff[msgIdx++];
- rsp.NeighborLqiListCount = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.NeighborLqiListCount; i++)
- {
-
- rsp.NeighborLqiList[i].ExtendedPanID = 0;
- uint8_t ind;
- for (ind = 0; ind < 8; ind++)
- rsp.NeighborLqiList[i].ExtendedPanID |=
- ((uint64_t) rpcBuff[msgIdx++]) << (ind * 8);
- rsp.NeighborLqiList[i].ExtendedAddress = 0;
- for (ind = 0; ind < 8; ind++)
- rsp.NeighborLqiList[i].ExtendedAddress |=
- ((uint64_t) rpcBuff[msgIdx++]) << (ind * 8);
- rsp.NeighborLqiList[i].NetworkAddress = BUILD_UINT16(
- rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.NeighborLqiList[i].DevTyp_RxOnWhenIdle_Relat =
- rpcBuff[msgIdx++];
- rsp.NeighborLqiList[i].PermitJoining = rpcBuff[msgIdx++];
- rsp.NeighborLqiList[i].Depth = rpcBuff[msgIdx++];
- rsp.NeighborLqiList[i].LQI = rpcBuff[msgIdx++];
-
- }
- }
- MgmtLqiRspFormat_t *copyy = &rsp;
- mtZdoCbs.pfnZdoMgmtLqiRsp(copyy);
- }
-}
-
-/*********************************************************************
- * @fn processMgmtRtgRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMgmtRtgRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMgmtRtgRsp)
- {
- uint8_t msgIdx = 2;
- MgmtRtgRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.RoutingTableEntries = rpcBuff[msgIdx++];
- rsp.StartIndex = rpcBuff[msgIdx++];
- rsp.RoutingTableListCount = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.RoutingTableListCount; i++)
- {
- rsp.RoutingTableList[i].DstAddr = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.RoutingTableList[i].Status = rpcBuff[msgIdx++];
- rsp.RoutingTableList[i].NextHop = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
- }
- mtZdoCbs.pfnZdoMgmtRtgRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMgmtBindRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMgmtBindRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMgmtBindRsp)
- {
- uint8_t msgIdx = 2;
- MgmtBindRspFormat_t rsp;
- if (rpcLen < 6)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
- rsp.BindingTableEntries = rpcBuff[msgIdx++];
- rsp.StartIndex = rpcBuff[msgIdx++];
- rsp.BindingTableListCount = rpcBuff[msgIdx++];
- if (rpcLen > 6)
- {
- uint32_t i;
- for (i = 0; i < rsp.BindingTableListCount; i++)
- {
- rsp.BindingTableList[i].SrcIEEEAddr = 0;
- uint8_t i;
- for (i = 0; i < 8; i++)
- rsp.BindingTableList[i].SrcIEEEAddr |=
- ((uint64_t) rpcBuff[msgIdx++]) << (i * 8);
- rsp.BindingTableList[i].SrcEndpoint = rpcBuff[msgIdx++];
- rsp.BindingTableList[i].ClusterID = rpcBuff[msgIdx++];
- rsp.BindingTableList[i].DstAddrMode = rpcBuff[msgIdx++];
- rsp.BindingTableList[i].DstIEEEAddr = 0;
- for (i = 0; i < 8; i++)
- rsp.BindingTableList[i].DstIEEEAddr |=
- ((uint64_t) rpcBuff[msgIdx++]) << (i * 8);
- rsp.BindingTableList[i].DstEndpoint = rpcBuff[msgIdx++];
- }
- }
- mtZdoCbs.pfnZdoMgmtBindRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMgmtLeaveRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMgmtLeaveRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMgmtLeaveRsp)
- {
- uint8_t msgIdx = 2;
- MgmtLeaveRspFormat_t rsp;
- if (rpcLen < 3)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoMgmtLeaveRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMgmtDirectJoinRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMgmtDirectJoinRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMgmtDirectJoinRsp)
- {
- uint8_t msgIdx = 2;
- MgmtDirectJoinRspFormat_t rsp;
- if (rpcLen < 3)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoMgmtDirectJoinRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMgmtPermitJoinRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMgmtPermitJoinRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMgmtPermitJoinRsp)
- {
- uint8_t msgIdx = 2;
- MgmtPermitJoinRspFormat_t rsp;
- if (rpcLen < 3)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoMgmtPermitJoinRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processEndDeviceAnnceInd
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processEndDeviceAnnceInd(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoEndDeviceAnnceInd)
- {
- uint8_t msgIdx = 2;
- EndDeviceAnnceIndFormat_t rsp;
- if (rpcLen < 13)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.IEEEAddr = 0;
- uint8_t i;
- for (i = 0; i < 8; i++)
- rsp.IEEEAddr |= ((uint64_t) rpcBuff[msgIdx++]) << (i * 8);
- rsp.Capabilities = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoEndDeviceAnnceInd(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMatchDescRspSent
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMatchDescRspSent(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMatchDescRspSent)
- {
- uint8_t msgIdx = 2;
- MatchDescRspSentFormat_t rsp;
- if (rpcLen < 4)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.NwkAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.NumInClusters = rpcBuff[msgIdx++];
- uint32_t i;
- for (i = 0; i < rsp.NumInClusters; i++)
- {
- rsp.InClusterList[i] = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
- rsp.NumOutClusters = rpcBuff[msgIdx++];
- for (i = 0; i < rsp.NumOutClusters; i++)
- {
- rsp.OutClusterList[i] = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
-
- mtZdoCbs.pfnZdoMatchDescRspSent(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processStatusErrorRsp
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processStatusErrorRsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoStatusErrorRsp)
- {
- uint8_t msgIdx = 2;
- StatusErrorRspFormat_t rsp;
- if (rpcLen < 3)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoStatusErrorRsp(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processSrcRtgInd
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processSrcRtgInd(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoSrcRtgInd)
- {
- uint8_t msgIdx = 2;
- SrcRtgIndFormat_t rsp;
- if (rpcLen < 4)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.DstAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.RelayCount = rpcBuff[msgIdx++];
- uint32_t i;
- for (i = 0; i < rsp.RelayCount; i++)
- {
- rsp.RelayList[i] = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- }
-
- mtZdoCbs.pfnZdoSrcRtgInd(&rsp);
- }
-}
-/*********************************************************************
- * @fn processBeaconNotifyInd
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processBeaconNotifyInd(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoBeaconNotifyInd)
- {
- uint8_t msgIdx = 2;
- BeaconNotifyIndFormat_t rsp;
- if (rpcLen < 1)
- {
- printf("MT_RPC_ERR_LENGTH\n");
- }
- printf("rpcLen = %d\n", rpcLen);
-
- rsp.BeaconCount = rpcBuff[msgIdx++];
- if (rpcLen > 1)
- {
- uint32_t i;
- for (i = 0; i < rsp.BeaconCount; i++)
- {
- rsp.BeaconList[i].SrcAddr = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.BeaconList[i].PanId = BUILD_UINT16(rpcBuff[msgIdx],
- rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.BeaconList[i].LogicalChannel = rpcBuff[msgIdx++];
- rsp.BeaconList[i].PermitJoining = rpcBuff[msgIdx++];
- rsp.BeaconList[i].RouterCap = rpcBuff[msgIdx++];
- rsp.BeaconList[i].DevCap = rpcBuff[msgIdx++];
- rsp.BeaconList[i].ProtocolVer = rpcBuff[msgIdx++];
- rsp.BeaconList[i].StackProf = rpcBuff[msgIdx++];
- rsp.BeaconList[i].Lqi = rpcBuff[msgIdx++];
- rsp.BeaconList[i].Depth = rpcBuff[msgIdx++];
- rsp.BeaconList[i].UpdateId = rpcBuff[msgIdx++];
-
- rsp.BeaconList[i].ExtendedPanId = 0;
- uint8_t ind;
- for (ind = 0; ind < 8; ind++)
- rsp.BeaconList[i].ExtendedPanId |=
- ((uint64_t) rpcBuff[msgIdx++]) << (ind * 8);
-
- }
- }
- mtZdoCbs.pfnZdoBeaconNotifyInd(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processJoinCnf
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processJoinCnf(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoJoinCnf)
- {
- uint8_t msgIdx = 2;
- JoinCnfFormat_t rsp;
- if (rpcLen < 5)
- {
- printf("MT_RPC_ERR_LENGTH\n");
- }
- printf("rpcLen = %d\n", rpcLen);
-
- rsp.Status = rpcBuff[msgIdx++];
- rsp.DevAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.ParentAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
-
- mtZdoCbs.pfnZdoJoinCnf(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processNwkDiscoveryCnf
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processNwkDiscoveryCnf(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoNwkDiscoveryCnf)
- {
- uint8_t msgIdx = 2;
- NwkDiscoveryCnfFormat_t rsp;
- if (rpcLen < 1)
- {
- printf("MT_RPC_ERR_LENGTH\n");
- }
- printf("rpcLen = %d\n", rpcLen);
-
- rsp.Status = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoNwkDiscoveryCnf(&rsp);
- }
-}
-/*********************************************************************
- * @fn processLeaveInd
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processLeaveInd(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoLeaveInd)
- {
- uint8_t msgIdx = 2;
- LeaveIndFormat_t rsp;
- if (rpcLen < 13)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.ExtAddr = 0;
- uint8_t i;
- for (i = 0; i < 8; i++)
- rsp.ExtAddr |= ((uint64_t) rpcBuff[msgIdx++]) << (i * 8);
- rsp.Request = rpcBuff[msgIdx++];
- rsp.Remove = rpcBuff[msgIdx++];
- rsp.Rejoin = rpcBuff[msgIdx++];
-
- mtZdoCbs.pfnZdoLeaveInd(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn processMsgCbIncoming
- *
- * @brief processes incoming command from ZNP
- *
- * @param rpcBuff - Buffer from rpc layer, contains command data
- * @param rpcLen - Length of rpcBuff
- *
- * @return
- */
-static void processMsgCbIncoming(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- if (mtZdoCbs.pfnZdoMsgCbIncoming)
- {
- uint8_t msgIdx = 2;
- MsgCbIncomingFormat_t rsp;
- if (rpcLen < 9)
- {
- printf("MT_RPC_ERR_LENGTH\n");
-
- }
- //printf("rpcLen = %d\n", rpcLen);
-
- rsp.SrcAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.WasBroadcast = rpcBuff[msgIdx++];
- rsp.ClusterID = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- rsp.SecurityUse = rpcBuff[msgIdx++];
- rsp.SeqNum = rpcBuff[msgIdx++];
- rsp.MacDstAddr = BUILD_UINT16(rpcBuff[msgIdx], rpcBuff[msgIdx + 1]);
- msgIdx += 2;
- if (rpcLen > 9)
- {
- uint32_t i;
- for (i = 0; i < rsp.MacDstAddr; i++)
- {
- rsp.Data[i] = rpcBuff[msgIdx++];
- }
- }
- mtZdoCbs.pfnZdoMsgCbIncoming(&rsp);
- }
-}
-
-/*********************************************************************
- * @fn zdoInit
- *
- * @brief Sends the ZD0_startup_from_App command to start the network
- *
- * @param none
- *
- * @return none
- */
-uint8_t zdoInit(void)
-{
- uint8_t status;
- // build the buffer
- uint32_t cmdLen = 2;
- uint8_t *cmd = malloc(cmdLen);
-
- if (cmd)
- {
-
- cmd[0] = LO_UINT16(STARTDELAY);
- cmd[1] = HI_UINT16(STARTDELAY);
-
- status = rpcSendFrame((MT_RPC_CMD_SREQ | MT_RPC_SYS_ZDO),
- MT_ZDO_STARTUP_FROM_APP, cmd, cmdLen);
-
- //read the SREQ from the queue
- if (status == MT_RPC_SUCCESS)
- {
- //rpcSendFrame will block on the SRSP's, which will be
- //pushed to the front of the queue
- rpcWaitMqClientMsg(50);
-
- //set status to status of srsp
- status = srspRpcBuff[2];
- }
-
- free(cmd);
- return status;
- }
- else
- {
- dbg_print(PRINT_LEVEL_WARNING, "Memory for cmd was not allocated\n");
- return 1;
- }
-}
-
-/*************************************************************************************************
- * @fn zdoProcess()
- *
- * @brief read and process the RPC ZDO message from the ZB SoC
- *
- * @param none
- *
- * @return length of current Rx Buffer
- ***********************************************************************************************/
-void zdoProcess(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: processing CMD0:%x, CMD1:%x\n",
- rpcBuff[0], rpcBuff[1]);
-
- //process the synchronous SRSP from SREQ
- if ((rpcBuff[0] & MT_RPC_CMD_TYPE_MASK) == MT_RPC_CMD_SRSP)
- {
- processSrsp(rpcBuff, rpcLen);
- }
- else
- {
- //Read CMD1 and processes the specific SREQ
- switch (rpcBuff[1])
- {
- case MT_ZDO_STATE_CHANGE_IND:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_STATE_CHANGE_IND\n");
- processStateChange(rpcBuff, rpcLen);
- break;
- case MT_ZDO_NWK_ADDR_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_NWK_ADDR_RSP\n");
- processNwkAddrRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_IEEE_ADDR_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_IEEE_ADDR_RSP\n");
- processIeeeAddrRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_NODE_DESC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_NODE_DESC_RSP\n");
- processNodeDescRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_POWER_DESC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_POWER_DESC_RSP\n");
- processPowerDescRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_SIMPLE_DESC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_SIMPLE_DESC_RSP\n");
- processSimpleDescRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_ACTIVE_EP_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_ACTIVE_EP_RSP\n");
- processActiveEpRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MATCH_DESC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MATCH_DESC_RSP\n");
- processMatchDescRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_COMPLEX_DESC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_COMPLEX_DESC_RSP\n");
- processComplexDescRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_USER_DESC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_USER_DESC_RSP\n");
- processUserDescRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_USER_DESC_CONF:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_USER_DESC_CONF\n");
- processUserDescConf(rpcBuff, rpcLen);
- break;
- case MT_ZDO_SERVER_DISC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_SERVER_DISC_RSP\n");
- processServerDiscRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_END_DEVICE_BIND_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_END_DEVICE_BIND_RSP\n");
- processEndDeviceBindRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_BIND_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_BIND_RSP\n");
- processBindRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_UNBIND_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_UNBIND_RSP\n");
- processUnbindRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MGMT_NWK_DISC_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MGMT_NWK_DISC_RSP\n");
- processMgmtNwkDiscRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MGMT_LQI_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_MGMT_LQI_RSP\n");
- processMgmtLqiRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MGMT_RTG_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_MGMT_RTG_RSP\n");
- processMgmtRtgRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MGMT_BIND_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MGMT_BIND_RSP\n");
- processMgmtBindRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MGMT_LEAVE_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MGMT_LEAVE_RSP\n");
- processMgmtLeaveRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MGMT_DIRECT_JOIN_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MGMT_DIRECT_JOIN_RSP\n");
- processMgmtDirectJoinRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MGMT_PERMIT_JOIN_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MGMT_PERMIT_JOIN_RSP\n");
- processMgmtPermitJoinRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_END_DEVICE_ANNCE_IND:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_END_DEVICE_ANNCE_IND\n");
- processEndDeviceAnnceInd(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MATCH_DESC_RSP_SENT:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MATCH_DESC_RSP_SENT\n");
- processMatchDescRspSent(rpcBuff, rpcLen);
- break;
- case MT_ZDO_STATUS_ERROR_RSP:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_STATUS_ERROR_RSP\n");
- processStatusErrorRsp(rpcBuff, rpcLen);
- break;
- case MT_ZDO_SRC_RTG_IND:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_SRC_RTG_IND\n");
- processSrcRtgInd(rpcBuff, rpcLen);
- break;
- case MT_ZDO_BEACON_NOTIFY_IND:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_BEACON_NOTIFY_IND\n");
- processBeaconNotifyInd(rpcBuff, rpcLen);
- break;
- case MT_ZDO_JOIN_CNF:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_JOIN_CNF\n");
- processJoinCnf(rpcBuff, rpcLen);
- break;
- case MT_ZDO_NWK_DISCOVERY_CNF:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_NWK_DISCOVERY_CNF\n");
- processNwkDiscoveryCnf(rpcBuff, rpcLen);
- break;
- case MT_ZDO_LEAVE_IND:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_LEAVE_IND\n");
- processLeaveInd(rpcBuff, rpcLen);
- break;
- case MT_ZDO_MSG_CB_INCOMING:
- dbg_print(PRINT_LEVEL_VERBOSE,
- "zdoProcess: MT_ZDO_MSG_CB_INCOMING\n");
- processMsgCbIncoming(rpcBuff, rpcLen);
- break;
-
- default:
- dbg_print(PRINT_LEVEL_WARNING,
- "zdoProcess: CMD0:%x, CMD1:%x, not handled\n", rpcBuff[0],
- rpcBuff[1]);
- break;
- }
- }
-}
-/*********************************************************************
- * @fn processSrsp
- *
- * @brief Generic function for processing the SRSP and copying it to
- * local buffer for SREQ function to deal with
- *
- * @param
- *
- * @return
- */
-static void processSrsp(uint8_t *rpcBuff, uint8_t rpcLen)
-{
- //copies sresp to local buffer
- memcpy(srspRpcBuff, rpcBuff, rpcLen);
- //srspRpcLen = rpcLen;
- switch (rpcBuff[1])
- {
- case MT_ZDO_GET_LINK_KEY:
- dbg_print(PRINT_LEVEL_VERBOSE, "zdoProcess: MT_ZDO_GET_LINK_KEY\n");
- processGetLinkKey(rpcBuff, rpcLen);
- break;
- default:
- dbg_print(PRINT_LEVEL_INFO, "processSrsp: unsupported message\n");
- break;
- }
-}
-
-/*********************************************************************
- * @fn zbRegisterZdoCallbacks
- *
- * @brief
- *
- * @param
- *
- * @return
- */
-void zdoRegisterCallbacks(mtZdoCb_t cbs)
-{
- memcpy(&mtZdoCbs, &cbs, sizeof(mtZdoCb_t));
-}
-
diff --git a/framework/mt/Zdo/mtZdo.h~ b/framework/mt/Zdo/mtZdo.h~
+++ /dev/null
@@ -1,826 +0,0 @@
-/*\r
- * mtZdo.h\r
- *\r
- * This module contains the API for the MT ZDO Interface.\r
- *\r
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/\r
- *\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * Redistributions of source code must retain the above copyright\r
- * notice, this list of conditions and the following disclaimer.\r
- *\r
- * Redistributions in binary form must reproduce the above copyright\r
- * notice, this list of conditions and the following disclaimer in the\r
- * documentation and/or other materials provided with the\r
- * distribution.\r
- *\r
- * Neither the name of Texas Instruments Incorporated nor the names of\r
- * its contributors may be used to endorse or promote products derived\r
- * from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- */\r
-#ifndef ZBMTZDO_H\r
-#define ZBMTZDO_H\r
-\r
-#ifdef __cplusplus\r
-extern "C"\r
-{\r
-#endif\r
-\r
-#include <stdint.h>\r
-\r
-/***************************************************************************************************\r
- * ZDO COMMANDS\r
- ***************************************************************************************************/\r
-\r
-/* SREQ/SRSP */\r
-#define MT_ZDO_NWK_ADDR_REQ 0x00\r
-#define MT_ZDO_IEEE_ADDR_REQ 0x01\r
-#define MT_ZDO_NODE_DESC_REQ 0x02\r
-#define MT_ZDO_POWER_DESC_REQ 0x03\r
-#define MT_ZDO_SIMPLE_DESC_REQ 0x04\r
-#define MT_ZDO_ACTIVE_EP_REQ 0x05\r
-#define MT_ZDO_MATCH_DESC_REQ 0x06\r
-#define MT_ZDO_COMPLEX_DESC_REQ 0x07\r
-#define MT_ZDO_USER_DESC_REQ 0x08\r
-#define MT_ZDO_DEVICE_ANNCE 0x0A\r
-#define MT_ZDO_USER_DESC_SET 0x0B\r
-#define MT_ZDO_SERVER_DISC_REQ 0x0C\r
-#define MT_ZDO_END_DEVICE_BIND_REQ 0x20\r
-#define MT_ZDO_BIND_REQ 0x21\r
-#define MT_ZDO_UNBIND_REQ 0x22\r
-\r
-#define MT_ZDO_SET_LINK_KEY 0x23\r
-#define MT_ZDO_REMOVE_LINK_KEY 0x24\r
-#define MT_ZDO_GET_LINK_KEY 0x25\r
-#define MT_ZDO_NWK_DISCOVERY_REQ 0x26\r
-#define MT_ZDO_JOIN_REQ 0x27\r
-\r
-#define MT_ZDO_MGMT_NWK_DISC_REQ 0x30\r
-#define MT_ZDO_MGMT_LQI_REQ 0x31\r
-#define MT_ZDO_MGMT_RTG_REQ 0x32\r
-#define MT_ZDO_MGMT_BIND_REQ 0x33\r
-#define MT_ZDO_MGMT_LEAVE_REQ 0x34\r
-#define MT_ZDO_MGMT_DIRECT_JOIN_REQ 0x35\r
-#define MT_ZDO_MGMT_PERMIT_JOIN_REQ 0x36\r
-#define MT_ZDO_MGMT_NWK_UPDATE_REQ 0x37\r
-\r
-/* AREQ optional, but no AREQ response. */\r
-#define MT_ZDO_MSG_CB_REGISTER 0x3E\r
-#define MT_ZDO_MSG_CB_REMOVE 0x3F\r
-#define MT_ZDO_STARTUP_FROM_APP 0x40\r
-\r
-/* AREQ from host */\r
-#define MT_ZDO_AUTO_FIND_DESTINATION 0x41\r
-\r
-/* AREQ to host */\r
-#define MT_ZDO_AREQ_TO_HOST 0x80 /* Mark the start of the ZDO CId AREQs to host. */\r
-#define MT_ZDO_NWK_ADDR_RSP 0x80\r
-#define MT_ZDO_IEEE_ADDR_RSP 0x81\r
-#define MT_ZDO_NODE_DESC_RSP 0x82\r
-#define MT_ZDO_POWER_DESC_RSP 0x83\r
-#define MT_ZDO_SIMPLE_DESC_RSP 0x84\r
-#define MT_ZDO_ACTIVE_EP_RSP 0x85\r
-#define MT_ZDO_MATCH_DESC_RSP 0x86\r
-\r
-#define MT_ZDO_COMPLEX_DESC_RSP 0x87\r
-#define MT_ZDO_USER_DESC_RSP 0x88\r
-// 0x92 */ ((uint8)Discovery_Cache_req | 0x80)\r
-#define MT_ZDO_USER_DESC_CONF 0x89\r
-#define MT_ZDO_SERVER_DISC_RSP 0x8A\r
-\r
-#define MT_ZDO_END_DEVICE_BIND_RSP 0xA0\r
-#define MT_ZDO_BIND_RSP 0xA1\r
-#define MT_ZDO_UNBIND_RSP 0xA2\r
-\r
-#define MT_ZDO_MGMT_NWK_DISC_RSP 0xB0\r
-#define MT_ZDO_MGMT_LQI_RSP 0xB1\r
-#define MT_ZDO_MGMT_RTG_RSP 0xB2\r
-#define MT_ZDO_MGMT_BIND_RSP 0xB3\r
-#define MT_ZDO_MGMT_LEAVE_RSP 0xB4\r
-#define MT_ZDO_MGMT_DIRECT_JOIN_RSP 0xB5\r
-#define MT_ZDO_MGMT_PERMIT_JOIN_RSP 0xB6\r
-\r
-// /* 0xB8 */ ((uint8)Mgmt_NWK_Update_req | 0x80)\r
-\r
-#define MT_ZDO_STATE_CHANGE_IND 0xC0\r
-#define MT_ZDO_END_DEVICE_ANNCE_IND 0xC1\r
-#define MT_ZDO_MATCH_DESC_RSP_SENT 0xC2\r
-#define MT_ZDO_STATUS_ERROR_RSP 0xC3\r
-#define MT_ZDO_SRC_RTG_IND 0xC4\r
-#define MT_ZDO_BEACON_NOTIFY_IND 0xC5\r
-#define MT_ZDO_JOIN_CNF 0xC6\r
-#define MT_ZDO_NWK_DISCOVERY_CNF 0xC7\r
-#define MT_ZDO_CONCENTRATOR_IND_CB 0xC8\r
-#define MT_ZDO_LEAVE_IND 0xC9\r
-\r
-#define MT_ZDO_MSG_CB_INCOMING 0xFF\r
-\r
-// Some arbitrarily chosen value for a default error status msg.\r
-//#define MtZdoDef_rsp 0x0040\r
-\r
-/*ZDO Status Responses Definitions for ZDO Startup from App*/\r
-#define RESTORED_NETWORK 0x00\r
-#define NEW_NETWORK 0x01\r
-#define LEAVEANDNOTSTARTED 0x02\r
-\r
-/*MACROS*/\r
-#define SUCCESS 0x00\r
-#define FAILURE 0x01\r
-#define HI_UINT16(a) (((a) >> 8) & 0xFF)\r
-#define LO_UINT16(a) ((a) & 0xFF)\r
-#define BREAK_UINT32(var, ByteNum) \\r
- (uint8_t)((uint32_t)(((var)>>((ByteNum) * 8)) & 0x00FF))\r
-\r
-/*typedefs*/\r
-\r
-typedef struct\r
-{\r
- uint64_t PanID;\r
- uint8_t LogicalChannel;\r
- uint8_t StackProf_ZigVer;\r
- uint8_t BeacOrd_SupFramOrd;\r
- uint8_t PermitJoin;\r
-} NetworkListItemFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint64_t ExtendedPanID;\r
- uint64_t ExtendedAddress;\r
- uint16_t NetworkAddress;\r
- uint8_t DevTyp_RxOnWhenIdle_Relat;\r
- uint8_t PermitJoining;\r
- uint8_t Depth;\r
- uint8_t LQI;\r
-} NeighborLqiListItemFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t Status;\r
- uint16_t NextHop;\r
-} RoutingTableListItemFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint64_t SrcIEEEAddr;\r
- uint8_t SrcEndpoint;\r
- uint8_t ClusterID;\r
- uint8_t DstAddrMode;\r
- uint64_t DstIEEEAddr;\r
- uint8_t DstEndpoint;\r
-} BindingTableListItemFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint16_t PanId;\r
- uint8_t LogicalChannel;\r
- uint8_t PermitJoining;\r
- uint8_t RouterCap;\r
- uint8_t DevCap;\r
- uint8_t ProtocolVer;\r
- uint8_t StackProf;\r
- uint8_t Lqi;\r
- uint8_t Depth;\r
- uint8_t UpdateId;\r
- uint64_t ExtendedPanId;\r
-} BeaconListItemFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t IEEEAddress[8];\r
- uint8_t ReqType;\r
- uint8_t StartIndex;\r
-} NwkAddrReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t ShortAddr;\r
- uint8_t ReqType;\r
- uint8_t StartIndex;\r
-} IeeeAddrReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
-} NodeDescReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
-} PowerDescReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
- uint8_t Endpoint;\r
-} SimpleDescReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
-} ActiveEpReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
- uint16_t ProfileID;\r
- uint8_t NumInClusters;\r
- uint16_t InClusterList[16];\r
- uint8_t NumOutClusters;\r
- uint16_t OutClusterList[16];\r
-} MatchDescReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
-} ComplexDescReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
-} UserDescReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t NWKAddr;\r
- uint8_t IEEEAddr[8];\r
- uint8_t Capabilities;\r
-} DeviceAnnceFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t NwkAddrOfInterest;\r
- uint8_t Len;\r
- uint8_t UserDescriptor[16];\r
-} UserDescSetFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t ServerMask;\r
-} ServerDiscReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint16_t LocalCoordinator;\r
- uint8_t CoordinatorIEEE[8];\r
- uint8_t EndPoint;\r
- uint16_t ProfileID;\r
- uint8_t NumInClusters;\r
- uint16_t InClusterList[16];\r
- uint8_t NumOutClusters;\r
- uint16_t OutClusterList[16];\r
-} EndDeviceBindReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t SrcAddress[8];\r
- uint8_t SrcEndpoint;\r
- uint16_t ClusterID;\r
- uint8_t DstAddrMode;\r
- uint8_t DstAddress[8];\r
- uint8_t DstEndpoint;\r
-} BindReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t SrcAddress[8];\r
- uint8_t SrcEndpoint;\r
- uint16_t ClusterID;\r
- uint8_t DstAddrMode;\r
- uint8_t DstAddress[8];\r
- uint8_t DstEndpoint;\r
-} UnbindReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t ScanChannels[4];\r
- uint8_t ScanDuration;\r
- uint8_t StartIndex;\r
-} MgmtNwkDiscReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t StartIndex;\r
-} MgmtLqiReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t StartIndex;\r
-} MgmtRtgReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t StartIndex;\r
-} MgmtBindReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t DeviceAddr[8];\r
- uint8_t RemoveChildre_Rejoin;\r
-} MgmtLeaveReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t DeviceAddr[8];\r
- uint8_t CapInfo;\r
-} MgmtDirectJoinReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t AddrMode;\r
- uint16_t DstAddr;\r
- uint8_t Duration;\r
- uint8_t TCSignificance;\r
-} MgmtPermitJoinReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t DstAddrMode;\r
- uint8_t ChannelMask[4];\r
- uint8_t ScanDuration;\r
- uint8_t ScanCount;\r
- uint16_t NwkManagerAddr;\r
-} MgmtNwkUpdateReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t StartDelay;\r
-} StartupFromAppFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t Endpoint;\r
-} AutoFindDestinationFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t ShortAddr;\r
- uint8_t IEEEaddr[8];\r
- uint8_t LinkKeyData[16];\r
-} SetLinkKeyFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t IEEEaddr[8];\r
-} RemoveLinkKeyFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t IEEEaddr[8];\r
-} GetLinkKeyFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t Status;\r
- uint64_t IEEEAddr;\r
- uint8_t LinkKeyData[16];\r
-} GetLinkKeySrspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t ScanChannels[4];\r
- uint8_t ScanDuration;\r
-} NwkDiscoveryReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t LogicalChannel;\r
- uint16_t PanID;\r
- uint8_t ExtendedPanID[8];\r
- uint16_t ChosenParent;\r
- uint8_t ParentDepth;\r
- uint8_t StackProfile;\r
-} JoinReqFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t ClusterID;\r
-} MsgCbRegisterFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t ClusterID;\r
-} MsgCbRemoveFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t Status;\r
- uint64_t IEEEAddr;\r
- uint16_t NwkAddr;\r
- uint8_t StartIndex;\r
- uint8_t NumAssocDev;\r
- uint16_t AssocDevList[70];\r
-} NwkAddrRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t Status;\r
- uint64_t IEEEAddr;\r
- uint16_t NwkAddr;\r
- uint8_t StartIndex;\r
- uint8_t NumAssocDev;\r
- uint16_t AssocDevList[70];\r
-} IeeeAddrRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
- uint8_t LoTy_ComDescAv_UsrDesAv;\r
- uint8_t APSFlg_FrqBnd;\r
- uint8_t MACCapFlg;\r
- uint16_t ManufacturerCode;\r
- uint8_t MaxBufferSize;\r
- uint16_t MaxTransferSize;\r
- uint16_t ServerMask;\r
- uint16_t MaxOutTransferSize;\r
- uint8_t DescriptorCapabilities;\r
-} NodeDescRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
- uint8_t CurrntPwrMode_AvalPwrSrcs;\r
- uint8_t CurrntPwrSrc_CurrntPwrSrcLvl;\r
-} PowerDescRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
- uint8_t Len;\r
- uint8_t Endpoint;\r
- uint16_t ProfileID;\r
- uint16_t DeviceID;\r
- uint8_t DeviceVersion;\r
- uint8_t NumInClusters;\r
- uint16_t InClusterList[16];\r
- uint8_t NumOutClusters;\r
- uint16_t OutClusterList[16];\r
-} SimpleDescRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
- uint8_t ActiveEPCount;\r
- uint8_t ActiveEPList[77];\r
-} ActiveEpRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
- uint8_t MatchLength;\r
- uint8_t MatchList[77];\r
-} MatchDescRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
- uint8_t ComplexLength;\r
- uint8_t ComplexList[77];\r
-} ComplexDescRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
- uint8_t Len;\r
- uint8_t CUserDescriptor[77];\r
-} UserDescRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t NwkAddr;\r
-} UserDescConfFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint16_t ServerMask;\r
-} ServerDiscRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
-} EndDeviceBindRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
-} BindRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
-} UnbindRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint8_t NetworkCount;\r
- uint8_t StartIndex;\r
- uint8_t NetworkListCount;\r
- NetworkListItemFormat_t NetworkList[72];\r
-} MgmtNwkDiscRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint8_t NeighborTableEntries;\r
- uint8_t StartIndex;\r
- uint8_t NeighborLqiListCount;\r
- NeighborLqiListItemFormat_t NeighborLqiList[66];\r
-} MgmtLqiRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint8_t RoutingTableEntries;\r
- uint8_t StartIndex;\r
- uint8_t RoutingTableListCount;\r
- RoutingTableListItemFormat_t RoutingTableList[75];\r
-} MgmtRtgRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
- uint8_t BindingTableEntries;\r
- uint8_t StartIndex;\r
- uint8_t BindingTableListCount;\r
- BindingTableListItemFormat_t BindingTableList[75];\r
-} MgmtBindRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
-} MgmtLeaveRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
-} MgmtDirectJoinRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
-} MgmtPermitJoinRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint16_t NwkAddr;\r
- uint64_t IEEEAddr;\r
- uint8_t Capabilities;\r
-} EndDeviceAnnceIndFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t NwkAddr;\r
- uint8_t NumInClusters;\r
- uint16_t InClusterList[16];\r
- uint8_t NumOutClusters;\r
- uint16_t OutClusterList[16];\r
-} MatchDescRspSentFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t Status;\r
-} StatusErrorRspFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t DstAddr;\r
- uint8_t RelayCount;\r
- uint16_t RelayList[255];\r
-} SrcRtgIndFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t BeaconCount;\r
- BeaconListItemFormat_t BeaconList[21];\r
-} BeaconNotifyIndFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t Status;\r
- uint16_t DevAddr;\r
- uint16_t ParentAddr;\r
-} JoinCnfFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint8_t Status;\r
-} NwkDiscoveryCnfFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint64_t ExtAddr;\r
- uint8_t Request;\r
- uint8_t Remove;\r
- uint8_t Rejoin;\r
-} LeaveIndFormat_t;\r
-\r
-typedef struct\r
-{\r
- uint16_t SrcAddr;\r
- uint8_t WasBroadcast;\r
- uint16_t ClusterID;\r
- uint8_t SecurityUse;\r
- uint8_t SeqNum;\r
- uint16_t MacDstAddr;\r
- uint8_t Data[99];\r
-} MsgCbIncomingFormat_t;\r
-\r
-//sets the types of response of State Change Ind\r
-typedef enum\r
-{\r
- DEV_HOLD, // Initialized - not started automatically\r
- DEV_INIT, // Initialized - not connected to anything\r
- DEV_NWK_DISC, // Discovering PAN's to join\r
- DEV_NWK_JOINING, // Joining a PAN\r
- DEV_NWK_REJOIN, // ReJoining a PAN, only for end devices\r
- DEV_END_DEVICE_UNAUTH, // Joined but not yet authenticated by trust center\r
- DEV_END_DEVICE, // Started as device after authentication\r
- DEV_ROUTER, // Device joined, authenticated and is a router\r
- DEV_COORD_STARTING, // Started as Zigbee Coordinator\r
- DEV_ZB_COORD, // Started as Zigbee Coordinator\r
- DEV_NWK_ORPHAN // Device has lost information about its parent..\r
-} devStates_t;\r
-\r
-typedef uint8_t (*mtZdoStateChangeIndCb_t)(uint8_t zdoState);\r
-typedef uint8_t (*mtZdoGetLinkKeyCb_t)(GetLinkKeySrspFormat_t *msg);\r
-typedef uint8_t (*mtZdoNwkAddrRspCb_t)(NwkAddrRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoIeeeAddrRspCb_t)(IeeeAddrRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoNodeDescRspCb_t)(NodeDescRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoPowerDescRspCb_t)(PowerDescRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoSimpleDescRspCb_t)(SimpleDescRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoActiveEpRspCb_t)(ActiveEpRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMatchDescRspCb_t)(MatchDescRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoComplexDescRspCb_t)(ComplexDescRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoUserDescRspCb_t)(UserDescRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoUserDescConfCb_t)(UserDescConfFormat_t *msg);\r
-typedef uint8_t (*mtZdoServerDiscRspCb_t)(ServerDiscRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoEndDeviceBindRspCb_t)(EndDeviceBindRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoBindRspCb_t)(BindRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoUnbindRspCb_t)(UnbindRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMgmtNwkDiscRspCb_t)(MgmtNwkDiscRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMgmtLqiRspCb_t)(MgmtLqiRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMgmtRtgRspCb_t)(MgmtRtgRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMgmtBindRspCb_t)(MgmtBindRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMgmtLeaveRspCb_t)(MgmtLeaveRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMgmtDirectJoinRspCb_t)(MgmtDirectJoinRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoMgmtPermitJoinRspCb_t)(MgmtPermitJoinRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoEndDeviceAnnceIndCb_t)(EndDeviceAnnceIndFormat_t *msg);\r
-typedef uint8_t (*mtZdoMatchDescRspSentCb_t)(MatchDescRspSentFormat_t *msg);\r
-typedef uint8_t (*mtZdoStatusErrorRspCb_t)(StatusErrorRspFormat_t *msg);\r
-typedef uint8_t (*mtZdoSrcRtgIndCb_t)(SrcRtgIndFormat_t *msg);\r
-typedef uint8_t (*mtZdoBeaconNotifyIndCb_t)(BeaconNotifyIndFormat_t *msg);\r
-typedef uint8_t (*mtZdoJoinCnfCb_t)(JoinCnfFormat_t *msg);\r
-typedef uint8_t (*mtZdoNwkDiscoveryCnfCb_t)(NwkDiscoveryCnfFormat_t *msg);\r
-typedef uint8_t (*mtZdoLeaveIndCb_t)(LeaveIndFormat_t *msg);\r
-typedef uint8_t (*mtZdoMsgCbIncomingCb_t)(MsgCbIncomingFormat_t *msg);\r
-\r
-typedef uint8_t (*mtZdoStub_t)(void);\r
-\r
-typedef struct\r
-{\r
- mtZdoNwkAddrRspCb_t pfnZdoNwkAddrRsp; // MT_ZDO_NWK_ADDR_RSP 0x80\r
- mtZdoIeeeAddrRspCb_t pfnZdoIeeeAddrRsp; // MT_ZDO_IEEE_ADDR_RSP 0x81\r
- mtZdoNodeDescRspCb_t pfnZdoNodeDescRsp; // MT_ZDO_NODE_DESC_RSP 0x82\r
- mtZdoPowerDescRspCb_t pfnZdoPowerDescRsp; // MT_ZDO_POWER_DESC_RSP 0x83\r
- mtZdoSimpleDescRspCb_t pfnZdoSimpleDescRsp; // MT_ZDO_SIMPLE_DESC_RSP 0x84\r
- mtZdoActiveEpRspCb_t pfnZdoActiveEpRsp; // MT_ZDO_ACTIVE_EP_RSP 0x85\r
- mtZdoMatchDescRspCb_t pfnZdoMatchDescRsp; // MT_ZDO_MATCH_DESC_RSP 0x86\r
- mtZdoComplexDescRspCb_t pfnZdoComplexDescRsp; // MT_ZDO_COMPLEX_DESC_RSP 0x87\r
- mtZdoUserDescRspCb_t pfnZdoUserDescRsp; // MT_ZDO_USER_DESC_RSP 0x88\r
- mtZdoUserDescConfCb_t pfnZdoUserDescConf; // MT_ZDO_USER_DESC_CONF 0x89\r
- mtZdoServerDiscRspCb_t pfnZdoServerDiscRsp; // MT_ZDO_SERVER_DISC_RSP 0x8A\r
- mtZdoEndDeviceBindRspCb_t pfnZdoEndDeviceBindRsp; // MT_ZDO_END_DEVICE_BIND_RSP 0xA0\r
- mtZdoBindRspCb_t pfnZdoBindRsp; // MT_ZDO_BIND_RSP 0xA1\r
- mtZdoUnbindRspCb_t pfnZdoUnbindRsp; // MT_ZDO_UNBIND_RSP 0xA2\r
- mtZdoMgmtNwkDiscRspCb_t pfnZdoMgmtNwkDiscRsp; // MT_ZDO_MGMT_NWK_DISC_RSP 0xB0\r
- mtZdoMgmtLqiRspCb_t pfnZdoMgmtLqiRsp; // MT_ZDO_MGMT_LQI_RSP 0xB1\r
- mtZdoMgmtRtgRspCb_t pfnZdoMgmtRtgRsp; // MT_ZDO_MGMT_RTG_RSP 0xB2\r
- mtZdoMgmtBindRspCb_t pfnZdoMgmtBindRsp; // MT_ZDO_MGMT_BIND_RSP 0xB3\r
- mtZdoMgmtLeaveRspCb_t pfnZdoMgmtLeaveRsp; // MT_ZDO_MGMT_LEAVE_RSP 0xB4\r
- mtZdoMgmtDirectJoinRspCb_t pfnZdoMgmtDirectJoinRsp; // MT_ZDO_MGMT_DIRECT_JOIN_RSP 0xB5\r
- mtZdoMgmtPermitJoinRspCb_t pfnZdoMgmtPermitJoinRsp; // MT_ZDO_MGMT_PERMIT_JOIN_RSP 0xB6\r
- mtZdoStateChangeIndCb_t pfnmtZdoStateChangeInd; //MT_ZDO_STATE_CHANGE_IND\r
- mtZdoEndDeviceAnnceIndCb_t pfnZdoEndDeviceAnnceInd; //MT_ZDO_END_DEVICE_ANNCE_IND\r
- mtZdoSrcRtgIndCb_t pfnZdoSrcRtgInd; //MT_ZDO_SRC_RTG_IND\r
- mtZdoBeaconNotifyIndCb_t pfnZdoBeaconNotifyInd; //MT_ZDO_BEACON_NOTIFY_IND\r
- mtZdoJoinCnfCb_t pfnZdoJoinCnf; //MT_ZDO_JOIN_CNF\r
- mtZdoNwkDiscoveryCnfCb_t pfnZdoNwkDiscoveryCnf; //MT_ZDO_NWK_DISCOVERY_CNF\r
- mtZdoStub_t pfnZdoConcentratorInd; //MT_ZDO_CONCENTRATOR_IND_CB\r
- mtZdoLeaveIndCb_t pfnZdoLeaveInd; //MT_ZDO_LEAVE_IND\r
- mtZdoStatusErrorRspCb_t pfnZdoStatusErrorRsp; //MT_ZDO_STATUS_ERROR_RSP 0xC3\r
- mtZdoMatchDescRspSentCb_t pfnZdoMatchDescRspSent; //MT_ZDO_MATCH_DESC_RSP_SENT 0xC2\r
- mtZdoMsgCbIncomingCb_t pfnZdoMsgCbIncoming;\r
- mtZdoGetLinkKeyCb_t pfnZdoGetLinkKey;\r
-} mtZdoCb_t;\r
-\r
-void zdoRegisterCallbacks(mtZdoCb_t cbs);\r
-uint8_t zdoInit(void);\r
-uint8_t zdoNwkAddrReq(NwkAddrReqFormat_t *req);\r
-uint8_t zdoIeeeAddrReq(IeeeAddrReqFormat_t *req);\r
-uint8_t zdoNodeDescReq(NodeDescReqFormat_t *req);\r
-uint8_t zdoPowerDescReq(PowerDescReqFormat_t *req);\r
-uint8_t zdoSimpleDescReq(SimpleDescReqFormat_t *req);\r
-uint8_t zdoActiveEpReq(ActiveEpReqFormat_t *req);\r
-uint8_t zdoMatchDescReq(MatchDescReqFormat_t *req);\r
-uint8_t zdoComplexDescReq(ComplexDescReqFormat_t *req);\r
-uint8_t zdoUserDescReq(UserDescReqFormat_t *req);\r
-uint8_t zdoDeviceAnnce(DeviceAnnceFormat_t *req);\r
-uint8_t zdoUserDescSet(UserDescSetFormat_t *req);\r
-uint8_t zdoServerDiscReq(ServerDiscReqFormat_t *req);\r
-uint8_t zdoEndDeviceBindReq(EndDeviceBindReqFormat_t *req);\r
-uint8_t zdoBindReq(BindReqFormat_t *req);\r
-uint8_t zdoUnbindReq(UnbindReqFormat_t *req);\r
-uint8_t zdoMgmtNwkDiscReq(MgmtNwkDiscReqFormat_t *req);\r
-uint8_t zdoMgmtLqiReq(MgmtLqiReqFormat_t *req);\r
-uint8_t zdoMgmtRtgReq(MgmtRtgReqFormat_t *req);\r
-uint8_t zdoMgmtBindReq(MgmtBindReqFormat_t *req);\r
-uint8_t zdoMgmtLeaveReq(MgmtLeaveReqFormat_t *req);\r
-uint8_t zdoMgmtDirectJoinReq(MgmtDirectJoinReqFormat_t *req);\r
-uint8_t zdoMgmtPermitJoinReq(MgmtPermitJoinReqFormat_t *req);\r
-uint8_t zdoMgmtNwkUpdateReq(MgmtNwkUpdateReqFormat_t *req);\r
-uint8_t zdoStartupFromApp(StartupFromAppFormat_t *req);\r
-uint8_t zdoAutoFindDestination(AutoFindDestinationFormat_t *req);\r
-uint8_t zdoSetLinkKey(SetLinkKeyFormat_t *req);\r
-uint8_t zdoRemoveLinkKey(RemoveLinkKeyFormat_t *req);\r
-uint8_t zdoGetLinkKey(GetLinkKeyFormat_t *req);\r
-uint8_t zdoNwkDiscoveryReq(NwkDiscoveryReqFormat_t *req);\r
-uint8_t zdoJoinReq(JoinReqFormat_t *req);\r
-uint8_t zdoMsgCbRegister(MsgCbRegisterFormat_t *req);\r
-uint8_t zdoMsgCbRemove(MsgCbRemoveFormat_t *req);\r
-\r
-void zdoProcess(uint8_t *rpcBuff, uint8_t rpcLen);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* ZBMTZDO_H */\r
-\r
diff --git a/framework/platform/gnu/rpcTransportUart.c~ b/framework/platform/gnu/rpcTransportUart.c~
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * rpcTransportUart.c
- *
- * This module contains the API for the zll SoC Host Interface.
- *
- * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/*********************************************************************
- * INCLUDES
- */
-#include <termios.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <stdint.h>
-#include <errno.h>
-#include <string.h>
-
-//#include "rpc.h"
-
-#include "dbgPrint.h"
-
-/*********************************************************************
- * MACROS
- */
-
-/*********************************************************************
- * CONSTANTS
- */
-/*******************************/
-/*** Bootloader Commands ***/
-/*******************************/
-#define SB_FORCE_BOOT 0xF8
-#define SB_FORCE_RUN (SB_FORCE_BOOT ^ 0xFF)
-
-/************************************************************
- * TYPEDEFS
- */
-
-/*********************************************************************
- * GLOBAL VARIABLES
- */
-uint8_t uartDebugPrintsEnabled = 0;
-
-/*********************************************************************
- * LOCAL VARIABLES
- */
-int serialPortFd;
-
-/*********************************************************************
- * API FUNCTIONS
- */
-
-/*********************************************************************
- * @fn rpcTransportOpen
- *
- * @brief opens the serial port to the CC253x.
- *
- * @param devicePath - path to the UART device
- *
- * @return status
- */
-int32_t rpcTransportOpen(char *_devicePath, uint32_t port)
-{
- struct termios tio;
- static char lastUsedDevicePath[255];
- char * devicePath;
-
- (void) port;
-
- if (_devicePath != NULL)
- {
- if (strlen(_devicePath) > (sizeof(lastUsedDevicePath) - 1))
- {
- dbg_print(PRINT_LEVEL_ERROR,
- "rpcTransportOpen: %s - device path too long\n",
- _devicePath);
- return (-1);
- }
- devicePath = _devicePath;
- strcpy(lastUsedDevicePath, _devicePath);
- }
- else
- {
- devicePath = lastUsedDevicePath;
- }
-
- /* open the device */
- serialPortFd = open(devicePath, O_RDWR | O_NOCTTY);
- if (serialPortFd < 0)
- {
- perror(devicePath);
- dbg_print(PRINT_LEVEL_ERROR, "rpcTransportOpen: %s open failed\n",
- devicePath);
- return (-1);
- }
-
- /* c-iflags
- B115200 : set board rate to 115200
- CRTSCTS : HW flow control
- CS8 : 8n1 (8bit,no parity,1 stopbit)
- CLOCAL : local connection, no modem contol
- CREAD : enable receiving characters*/
- tio.c_cflag = B115200 | CS8 | CLOCAL | CREAD;
- #ifndef CC26xx
- tio.c_cflag |= CRTSCTS;
- #endif //CC26xx
- /* c-iflags
- ICRNL : maps 0xD (CR) to 0x10 (LR), we do not want this.
- IGNPAR : ignore bits with parity errors, I guess it is
- better to ignore an erroneous bit than interpret it incorrectly. */
- tio.c_iflag = IGNPAR & ~ICRNL;
- tio.c_oflag = 0;
- tio.c_lflag = 0;
- //Make it block
- tio.c_cc[VMIN] = 1;
-
- tcflush(serialPortFd, TCIFLUSH);
- tcsetattr(serialPortFd, TCSANOW, &tio);
-
- return serialPortFd;
-}
-
-/*********************************************************************
- * @fn rpcTransportClose
- *
- * @brief closes the serial port to the CC253x.
- *
- * @param fd - file descriptor of the UART device
- *
- * @return status
- */
-void rpcTransportClose(void)
-{
- tcflush(serialPortFd, TCOFLUSH);
- close(serialPortFd);
-
- return;
-}
-
-/*********************************************************************
- * @fn rpcTransportWrite
- *
- * @brief Write to the the serial port to the CC253x.
- *
- * @param fd - file descriptor of the UART device
- *
- * @return status
- */
-void rpcTransportWrite(uint8_t* buf, uint8_t len)
-{
- int remain = len;
- int offset = 0;
-#if 1
- dbg_print(PRINT_LEVEL_VERBOSE, "rpcTransportWrite : len = %d\n", len);
-
- while (remain > 0)
- {
- int sub = (remain >= 8 ? 8 : remain);
- dbg_print(PRINT_LEVEL_VERBOSE,
- "writing %d bytes (offset = %d, remain = %d)\n", sub, offset,
- remain);
- write(serialPortFd, buf + offset, sub);
-
- tcflush(serialPortFd, TCOFLUSH);
- usleep(1000);
- remain -= 8;
- offset += 8;
- }
-#else
- write (serialPortFd, buf, len);
- tcflush(serialPortFd, TCOFLUSH);
-
-#endif
- return;
-}
-
-/*********************************************************************
- * @fn rpcTransportRead
- *
- * @brief Reads from the the serial port to the CC253x.
- *
- * @param fd - file descriptor of the UART device
- *
- * @return status
- */
-uint8_t rpcTransportRead(uint8_t* buf, uint8_t len)
-{
- uint8_t ret = read(serialPortFd, buf, len);
- if (ret > 0)
- {
- dbg_print(PRINT_LEVEL_VERBOSE, "rpcTransportRead: read %d bytes\n",
- ret);
- }
- return (ret);
-
-}
diff --git a/framework/platform/tirtos/Board/EK_TM4C1294XL.c~ b/framework/platform/tirtos/Board/EK_TM4C1294XL.c~
+++ /dev/null
@@ -1,842 +0,0 @@
-/*
- * Copyright (c) 2014, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * ======== EK_TM4C1294XL.c ========
- * This file is responsible for setting up the board specific items for the
- * EK_TM4C1294XL board.
- *
- * The following defines are used to determine which TI-RTOS peripheral drivers
- * to include:
- * TI_DRIVERS_EMAC_INCLUDED
- * TI_DRIVERS_GPIO_INCLUDED
- * TI_DRIVERS_I2C_INCLUDED
- * TI_DRIVERS_SDSPI_INCLUDED
- * TI_DRIVERS_SPI_INCLUDED
- * TI_DRIVERS_UART_INCLUDED
- * TI_DRIVERS_USBMSCHFATFS_INCLUDED
- * TI_DRIVERS_WATCHDOG_INCLUDED
- * TI_DRIVERS_WIFI_INCLUDED
- * These defines are created when a useModule is done on the driver in the
- * application's .cfg file. The actual #define is in the application
- * generated header file that is brought in via the xdc/cfg/global.h.
- * For example the following in the .cfg file
- * var GPIO = xdc.useModule('ti.drivers.GPIO');
- * Generates the following
- * #define TI_DRIVERS_GPIO_INCLUDED 1
- * If there is no useModule of ti.drivers.GPIO, the constant is set to 0.
- *
- * Note: a useModule is generated in the .cfg file via the graphical
- * configuration tool when the "Add xxx to my configuration" is checked
- * or "Use xxx" is selected.
- */
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <inc/hw_memmap.h>
-#include <inc/hw_types.h>
-#include <inc/hw_ints.h>
-#include <inc/hw_gpio.h>
-
-#include <driverlib/gpio.h>
-#include <driverlib/flash.h>
-#include <driverlib/sysctl.h>
-#include <driverlib/i2c.h>
-#include <driverlib/ssi.h>
-#include <driverlib/udma.h>
-#include <driverlib/pin_map.h>
-
-#include <xdc/std.h>
-#include <xdc/cfg/global.h>
-#include <xdc/runtime/Error.h>
-#include <xdc/runtime/System.h>
-#include <ti/sysbios/family/arm/m3/Hwi.h>
-
-#include "EK_TM4C1294XL.h"
-
-#if defined(ccs)
-#pragma DATA_ALIGN(EK_TM4C1294XL_DMAControlTable, 1024)
-#elif defined(ewarm)
-#pragma data_alignment=1024
-#elif defined(gcc)
-__attribute__ ((aligned (1024)))
-#endif
-static tDMAControlTable EK_TM4C1294XL_DMAControlTable[32];
-static Bool DMA_initialized = false;
-
-/* Hwi_Struct used in the initDMA Hwi_construct call */
-static Hwi_Struct dmaHwiStruct;
-
-/* Hwi_Struct used in the usbBusFault Hwi_construct call */
-static Hwi_Struct usbBusFaultHwiStruct;
-
-/*
- * ======== EK_TM4C1294XL_errorDMAHwi ========
- */
-static Void EK_TM4C1294XL_errorDMAHwi(UArg arg)
-{
- System_printf("DMA error code: %d\n", uDMAErrorStatusGet());
- uDMAErrorStatusClear();
- System_abort("DMA error!!");
-}
-
-/*
- * ======== EK_TM4C1294XL_usbBusFaultHwi ========
- */
-static Void EK_TM4C1294XL_usbBusFaultHwi(UArg arg)
-{
- /*
- * This function should be modified to appropriately manage handle
- * a USB bus fault.
- */
- System_printf("USB bus fault detected.");
- Hwi_clearInterrupt(INT_GPIOQ4);
- System_abort("USB error!!");
-}
-
-/*
- * ======== EK_TM4C1294XL_initDMA ========
- */
-void EK_TM4C1294XL_initDMA(void)
-{
- Error_Block eb;
- Hwi_Params hwiParams;
-
- if (!DMA_initialized)
- {
-
- Error_init(&eb);
-
- Hwi_Params_init(&hwiParams);
- Hwi_construct(&(dmaHwiStruct), INT_UDMAERR, EK_TM4C1294XL_errorDMAHwi,
- &hwiParams, &eb);
- if (Error_check(&eb))
- {
- System_abort("Couldn't construct DMA error hwi");
- }
-
- SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
- uDMAEnable();
- uDMAControlBaseSet(EK_TM4C1294XL_DMAControlTable);
-
- DMA_initialized = true;
- }
-}
-
-/*
- * ======== EK_TM4C1294XL_initGeneral ========
- */
-void EK_TM4C1294XL_initGeneral(void)
-{
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOP);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOQ);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOR);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOS);
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOT);
-}
-
-#if TI_DRIVERS_EMAC_INCLUDED
-#include <ti/drivers/EMAC.h>
-#include <ti/drivers/emac/EMACSnow.h>
-
-/*
- * Required by the Networking Stack (NDK). This array must be NULL terminated.
- * This can be removed if NDK is not used.
- * Double curly braces are needed to avoid GCC bug #944572
- * https://bugs.launchpad.net/gcc-linaro/+bug/944572
- */
-NIMU_DEVICE_TABLE_ENTRY NIMUDeviceTable[2] =
-{
- { EMACSnow_NIMUInit},
- { NULL}};
-
-/* EMAC objects */
-EMACSnow_Object emacObjects[EK_TM4C1294XL_EMACCOUNT];
-
-/*
- * EMAC configuration structure
- * Set user/company specific MAC octates. The following sets the address
- * to ff-ff-ff-ff-ff-ff. Users need to change this to make the label on
- * their boards.
- */
-unsigned char macAddress[6] =
-{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
-const EMACSnow_HWAttrs emacHWAttrs[EK_TM4C1294XL_EMACCOUNT] =
-{
- { EMAC0_BASE, INT_EMAC0, macAddress}
-};
-
-const EMAC_Config EMAC_config[] =
-{
- {
- &EMACSnow_fxnTable,
- &emacObjects[0],
- &emacHWAttrs[0]
- },
- { NULL, NULL, NULL}
-};
-
-/*
- * ======== EK_TM4C1294XL_initEMAC ========
- */
-void EK_TM4C1294XL_initEMAC(void)
-{
- uint32_t ulUser0, ulUser1;
-
- /* Get the MAC address */
- FlashUserGet(&ulUser0, &ulUser1);
- if ((ulUser0 != 0xffffffff) && (ulUser1 != 0xffffffff))
- {
- System_printf("Using MAC address in flash\n");
- /*
- * Convert the 24/24 split MAC address from NV ram into a 32/16 split MAC
- * address needed to program the hardware registers, then program the MAC
- * address into the Ethernet Controller registers.
- */
- macAddress[0] = ((ulUser0 >> 0) & 0xff);
- macAddress[1] = ((ulUser0 >> 8) & 0xff);
- macAddress[2] = ((ulUser0 >> 16) & 0xff);
- macAddress[3] = ((ulUser1 >> 0) & 0xff);
- macAddress[4] = ((ulUser1 >> 8) & 0xff);
- macAddress[5] = ((ulUser1 >> 16) & 0xff);
- }
- else if (macAddress[0] == 0xff && macAddress[1] == 0xff &&
- macAddress[2] == 0xff && macAddress[3] == 0xff &&
- macAddress[4] == 0xff && macAddress[5] == 0xff)
- {
- System_abort("Change the macAddress variable to match your boards MAC sticker");
- }
-
- GPIOPinConfigure(GPIO_PF0_EN0LED0); /* EK_TM4C1294XL_USR_D3 */
- GPIOPinConfigure(GPIO_PF4_EN0LED1); /* EK_TM4C1294XL_USR_D4 */
- GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_4);
-
- /* Once EMAC_init is called, EMAC_config cannot be changed */
- EMAC_init();
-}
-#endif /* TI_DRIVERS_EMAC_INCLUDED */
-
-#if TI_DRIVERS_GPIO_INCLUDED
-#include <ti/drivers/GPIO.h>
-
-/* Callback functions for the GPIO interrupt example. */
-void gpioButtonFxn0(void);
-void gpioButtonFxn1(void);
-
-/* GPIO configuration structure */
-const GPIO_HWAttrs gpioHWAttrs[EK_TM4C1294XL_GPIOCOUNT] =
-{
- { GPIO_PORTN_BASE, GPIO_PIN_1, GPIO_OUTPUT}, /* EK_TM4C1294XL_USR_D1 */
- { GPIO_PORTN_BASE, GPIO_PIN_0, GPIO_OUTPUT}, /* EK_TM4C1294XL_USR_D2 */
- { GPIO_PORTJ_BASE, GPIO_PIN_0, GPIO_INPUT}, /* EK_TM4C1294XL_USR_SW1 */
- { GPIO_PORTJ_BASE, GPIO_PIN_1, GPIO_INPUT} /* EK_TM4C1294XL_USR_SW2 */
-};
-
-/* Memory for the GPIO module to construct a Hwi */
-Hwi_Struct callbackPortJHwi;
-
-const GPIO_Callbacks EK_TM4C1294XL_gpioPortJCallbacks =
-{
- GPIO_PORTJ_BASE, INT_GPIOJ, &callbackPortJHwi,
- { gpioButtonFxn0, gpioButtonFxn1, NULL, NULL, NULL, NULL, NULL, NULL}
-};
-
-const GPIO_Config GPIO_config[] =
-{
- { &gpioHWAttrs[0]},
- { &gpioHWAttrs[1]},
- { &gpioHWAttrs[2]},
- { &gpioHWAttrs[3]},
- { NULL},
-};
-
-/*
- * ======== EK_TM4C1294XL_initGPIO ========
- */
-void EK_TM4C1294XL_initGPIO(void)
-{
- /* Setup the LED GPIO pins used */
- GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0 | GPIO_PIN_1);
-
- /* Setup the button GPIO pins used */
- GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_0 | GPIO_PIN_1);
- GPIOPadConfigSet(GPIO_PORTJ_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_STRENGTH_2MA,
- GPIO_PIN_TYPE_STD_WPU);
-
- /* Once GPIO_init is called, GPIO_config cannot be changed */
- GPIO_init();
-}
-#endif /* TI_DRIVERS_GPIO_INCLUDED */
-
-#if TI_DRIVERS_I2C_INCLUDED
-#include <ti/drivers/I2C.h>
-#include <ti/drivers/i2c/I2CTiva.h>
-
-/* I2C objects */
-I2CTiva_Object i2cTivaObjects[EK_TM4C1294XL_I2CCOUNT];
-
-/* I2C configuration structure, describing which pins are to be used */
-const I2CTiva_HWAttrs i2cTivaHWAttrs[EK_TM4C1294XL_I2CCOUNT] =
-{
- { I2C0_BASE, INT_I2C0},
- { I2C2_BASE, INT_I2C2},
- { I2C7_BASE, INT_I2C7},
- { I2C8_BASE, INT_I2C8}
-};
-
-const I2C_Config I2C_config[] =
-{
- { &I2CTiva_fxnTable, &i2cTivaObjects[0], &i2cTivaHWAttrs[0]},
- { &I2CTiva_fxnTable, &i2cTivaObjects[1], &i2cTivaHWAttrs[1]},
- { &I2CTiva_fxnTable, &i2cTivaObjects[2], &i2cTivaHWAttrs[2]},
- { &I2CTiva_fxnTable, &i2cTivaObjects[2], &i2cTivaHWAttrs[3]},
- { NULL, NULL, NULL}
-};
-
-/*
- * ======== EK_TM4C1294XL_initI2C ========
- */
-void EK_TM4C1294XL_initI2C(void)
-{
- /* I2C0 Init */
- /* Enable the peripheral */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);
-
- /* Configure the appropriate pins to be I2C instead of GPIO. */
- GPIOPinConfigure(GPIO_PB2_I2C0SCL);
- GPIOPinConfigure(GPIO_PB3_I2C0SDA);
- GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2);
- GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
-
- /* I2C2 Init */
- /* Enable the peripheral */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C2);
-
- /* Configure the appropriate pins to be I2C instead of GPIO. */
- GPIOPinConfigure(GPIO_PN5_I2C2SCL);
- GPIOPinConfigure(GPIO_PN4_I2C2SDA);
- GPIOPinTypeI2CSCL(GPIO_PORTN_BASE, GPIO_PIN_5);
- GPIOPinTypeI2C(GPIO_PORTN_BASE, GPIO_PIN_4);
-
- /* I2C7 Init */
- /* Enable the peripheral */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C7);
-
- /* Configure the appropriate pins to be I2C instead of GPIO. */
- GPIOPinConfigure(GPIO_PD0_I2C7SCL);
- GPIOPinConfigure(GPIO_PD1_I2C7SDA);
- GPIOPinTypeI2CSCL(GPIO_PORTD_BASE, GPIO_PIN_0);
- GPIOPinTypeI2C(GPIO_PORTD_BASE, GPIO_PIN_1);
-
- /* I2C8 Init */
- /* Enable the peripheral */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C8);
-
- /* Configure the appropriate pins to be I2C instead of GPIO. */
- GPIOPinConfigure(GPIO_PA2_I2C8SCL);
- GPIOPinConfigure(GPIO_PA3_I2C8SDA);
- GPIOPinTypeI2CSCL(GPIO_PORTA_BASE, GPIO_PIN_2);
- GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_3);
-
- I2C_init();
-}
-#endif /* TI_DRIVERS_I2C_INCLUDED */
-
-#if TI_DRIVERS_SDSPI_INCLUDED
-#include <ti/drivers/SDSPI.h>
-#include <ti/drivers/sdspi/SDSPITiva.h>
-
-/* SDSPI objects */
-SDSPITiva_Object sdspiTivaobjects[EK_TM4C1294XL_SDSPICOUNT];
-
-/* SDSPI configuration structure, describing which pins are to be used */
-const SDSPITiva_HWAttrs sdspiTivaHWattrs[EK_TM4C1294XL_SDSPICOUNT] =
-{
- {
- SSI2_BASE, /* SPI base address */
-
- GPIO_PORTD_BASE, /* The GPIO port used for the SPI pins */
- GPIO_PIN_3, /* SCK */
- GPIO_PIN_0, /* MISO */
- GPIO_PIN_1, /* MOSI */
-
- GPIO_PORTC_BASE, /* Chip select port */
- GPIO_PIN_7, /* Chip select pin */
-
- GPIO_PORTB_BASE, /* GPIO TX port */
- GPIO_PIN_1, /* GPIO TX pin */
- },
- {
- SSI3_BASE, /* SPI base address */
-
- GPIO_PORTQ_BASE, /* The GPIO port used for the SPI pins */
- GPIO_PIN_0, /* SCK */
- GPIO_PIN_3, /* MISO */
- GPIO_PIN_2, /* MOSI */
-
- GPIO_PORTP_BASE, /* Chip select port */
- GPIO_PIN_4, /* Chip select pin */
-
- GPIO_PORTQ_BASE, /* GPIO TX port */
- GPIO_PIN_2, /* GPIO TX pin */
- }
-};
-
-const SDSPI_Config SDSPI_config[] =
-{
- { &SDSPITiva_fxnTable, &sdspiTivaobjects[0], &sdspiTivaHWattrs[0]},
- { &SDSPITiva_fxnTable, &sdspiTivaobjects[1], &sdspiTivaHWattrs[1]},
- { NULL, NULL, NULL}
-};
-
-/*
- * ======== EK_TM4C1294XL_initSDSPI ========
- */
-void EK_TM4C1294XL_initSDSPI(void)
-{
- /* SDSPI0 configuration */
- /* Enable the peripherals used by the SD Card */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
-
- /* Configure pad settings */
- GPIOPadConfigSet(GPIO_PORTD_BASE,
- GPIO_PIN_3 | GPIO_PIN_1,
- GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
-
- GPIOPadConfigSet(GPIO_PORTD_BASE,
- GPIO_PIN_0,
- GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD_WPU);
-
- GPIOPadConfigSet(GPIO_PORTC_BASE,
- GPIO_PIN_7,
- GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
-
- GPIOPinConfigure(GPIO_PD3_SSI2CLK);
- GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);
- GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
-
- /* SDSPI1 configuration */
- /* Enable the peripherals used by the SD Card */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);
-
- /* Configure pad settings */
- GPIOPadConfigSet(GPIO_PORTQ_BASE,
- GPIO_PIN_0 | GPIO_PIN_2,
- GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
-
- GPIOPadConfigSet(GPIO_PORTQ_BASE,
- GPIO_PIN_3,
- GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD_WPU);
-
- GPIOPadConfigSet(GPIO_PORTP_BASE,
- GPIO_PIN_4,
- GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
-
- GPIOPinConfigure(GPIO_PQ0_SSI3CLK);
- GPIOPinConfigure(GPIO_PQ3_SSI3XDAT1);
- GPIOPinConfigure(GPIO_PQ2_SSI3XDAT0);
-
- /*
- * These GPIOs are connected to PA2 and PA3 and need to be brought into a
- * GPIO input state so they don't interfere with SPI communications.
- */
- GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);
- GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_3);
-
- SDSPI_init();
-}
-#endif /* TI_DRIVERS_SDSPI_INCLUDED */
-
-#if TI_DRIVERS_SPI_INCLUDED
-#include <ti/drivers/SPI.h>
-#include <ti/drivers/spi/SPITivaDMA.h>
-
-/* SPI objects */
-SPITivaDMA_Object spiTivaDMAobjects[EK_TM4C1294XL_SPICOUNT];
-#if defined(ccs)
-#pragma DATA_ALIGN(spiTivaDMAscratchBuf, 32)
-#elif defined(ewarm)
-#pragma data_alignment=32
-#elif defined(gcc)
-__attribute__ ((aligned (32)))
-#endif
-uint32_t spiTivaDMAscratchBuf[EK_TM4C1294XL_SPICOUNT];
-
-/* SPI configuration structure, describing which pins are to be used */
-const SPITivaDMA_HWAttrs spiTivaDMAHWAttrs[EK_TM4C1294XL_SPICOUNT] =
-{
- {
- SSI2_BASE,
- INT_SSI2,
- &spiTivaDMAscratchBuf[0],
- 0,
- UDMA_SEC_CHANNEL_UART2RX_12,
- UDMA_SEC_CHANNEL_UART2TX_13,
- uDMAChannelAssign,
- UDMA_CH12_SSI2RX,
- UDMA_CH13_SSI2TX
- },
- {
- SSI3_BASE,
- INT_SSI3,
- &spiTivaDMAscratchBuf[1],
- 0,
- UDMA_SEC_CHANNEL_TMR2A_14,
- UDMA_SEC_CHANNEL_TMR2B_15,
- uDMAChannelAssign,
- UDMA_CH14_SSI3RX,
- UDMA_CH15_SSI3TX
- }
-};
-
-const SPI_Config SPI_config[] =
-{
- { &SPITivaDMA_fxnTable, &spiTivaDMAobjects[0], &spiTivaDMAHWAttrs[0]},
- { &SPITivaDMA_fxnTable, &spiTivaDMAobjects[1], &spiTivaDMAHWAttrs[1]},
- { NULL, NULL, NULL}
-};
-
-/*
- * ======== EK_TM4C1294XL_initSPI ========
- */
-void EK_TM4C1294XL_initSPI(void)
-{
- /* SSI2 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
-
- GPIOPinConfigure(GPIO_PD3_SSI2CLK);
- GPIOPinConfigure(GPIO_PD2_SSI2FSS);
- GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
- GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);
-
- GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 |
- GPIO_PIN_2 | GPIO_PIN_3);
-
- /* SSI3 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);
-
- GPIOPinConfigure(GPIO_PQ0_SSI3CLK);
- GPIOPinConfigure(GPIO_PQ1_SSI3FSS);
- GPIOPinConfigure(GPIO_PQ2_SSI3XDAT0);
- GPIOPinConfigure(GPIO_PQ3_SSI3XDAT1);
-
- GPIOPinTypeSSI(GPIO_PORTQ_BASE, GPIO_PIN_0 | GPIO_PIN_1 |
- GPIO_PIN_2 | GPIO_PIN_3);
-
- EK_TM4C1294XL_initDMA();
- SPI_init();
-}
-#endif /* TI_DRIVERS_SPI_INCLUDED */
-
-#if TI_DRIVERS_UART_INCLUDED
-#include <ti/drivers/UART.h>
-#include <ti/drivers/uart/UARTTiva.h>
-
-/* UART objects */
-UARTTiva_Object uartTivaObjects[EK_TM4C1294XL_UARTCOUNT];
-
-/* UART configuration structure */
-const UARTTiva_HWAttrs uartTivaHWAttrs[EK_TM4C1294XL_UARTCOUNT] =
-{
- { UART0_BASE, INT_UART0}, /* EK_TM4C1294XL_UART0 */
- { UART2_BASE, INT_UART2}, /* EK_TM4C1294XL_UART2 */
- { UART6_BASE, INT_UART6}, /* EK_TM4C1294XL_UART6 */
- { UART7_BASE, INT_UART7}, /* EK_TM4C1294XL_UART7 */
- { UART4_BASE, INT_UART4} /* EK_TM4C1294XL_UART4 */
-};
-
-const UART_Config UART_config[] =
-{
- { &UARTTiva_fxnTable, &uartTivaObjects[0], &uartTivaHWAttrs[0]},
- { &UARTTiva_fxnTable, &uartTivaObjects[1], &uartTivaHWAttrs[1]},
- { &UARTTiva_fxnTable, &uartTivaObjects[2], &uartTivaHWAttrs[2]},
- { &UARTTiva_fxnTable, &uartTivaObjects[3], &uartTivaHWAttrs[3]},
- { &UARTTiva_fxnTable, &uartTivaObjects[4], &uartTivaHWAttrs[4]},
- { NULL, NULL, NULL}
-};
-
-/*
- * ======== EK_TM4C1294XL_initUART ========
- */
-void EK_TM4C1294XL_initUART(void)
-{
- /* Enable and configure the peripherals used by the UART0 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
- GPIOPinConfigure(GPIO_PA0_U0RX);
- GPIOPinConfigure(GPIO_PA1_U0TX);
- GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
-
- /* Enable and configure the peripherals used by the UART2 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);
- GPIOPinConfigure(GPIO_PD4_U2RX);
- GPIOPinConfigure(GPIO_PD5_U2TX);
- GPIOPinTypeUART(GPIO_PORTD_BASE, GPIO_PIN_4 | GPIO_PIN_5);
-
- /* Enable and configure the peripherals used by the UART6 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_UART6);
- GPIOPinConfigure(GPIO_PP0_U6RX);
- GPIOPinConfigure(GPIO_PP1_U6TX);
- GPIOPinTypeUART(GPIO_PORTP_BASE, GPIO_PIN_0 | GPIO_PIN_1);
-
- /* Enable and configure the peripherals used by the UART7 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_UART7);
- GPIOPinConfigure(GPIO_PC4_U7RX);
- GPIOPinConfigure(GPIO_PC5_U7TX);
- GPIOPinTypeUART(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5);
-
- /* Enable and configure the peripherals used by the UART4 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_UART4);
- GPIOPinConfigure(GPIO_PK0_U4RX);
- GPIOPinConfigure(GPIO_PK1_U4TX);
- GPIOPinConfigure(GPIO_PK2_U4RTS);
- GPIOPinConfigure(GPIO_PK3_U4CTS);
- GPIOPinTypeUART(GPIO_PORTK_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
-
- /* Initialize the UART driver */
- UART_init();
-
- /* Set HW Flow Control o ZB Port*/
- UARTFlowControlSet(uartTivaHWAttrs[EK_TM4C1294XL_UART4].baseAddr, UART_FLOWCONTROL_TX | UART_FLOWCONTROL_RX);
-}
-#endif /* TI_DRIVERS_UART_INCLUDED */
-
-/*
- * ======== EK_TM4C1294XL_initUSB ========
- * This function just turns on the USB
- */
-void EK_TM4C1294XL_initUSB(EK_TM4C1294XL_USBMode usbMode)
-{
- Error_Block eb;
- Hwi_Params hwiParams;
-
- /* Enable the USB peripheral and PLL */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_USB0);
- SysCtlUSBPLLEnable();
-
- /* Setup pins for USB operation */
- GPIOPinTypeUSBAnalog(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
- GPIOPinTypeUSBAnalog(GPIO_PORTL_BASE, GPIO_PIN_6 | GPIO_PIN_7);
-
- /* Additional configurations for Host mode */
- if (usbMode == EK_TM4C1294XL_USBHOST)
- {
- /* Configure the pins needed */
- HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
- HWREG(GPIO_PORTD_BASE + GPIO_O_CR) = 0xff;
- GPIOPinConfigure(GPIO_PD6_USB0EPEN);
- GPIOPinTypeUSBDigital(GPIO_PORTD_BASE, GPIO_PIN_6 | GPIO_PIN_7);
-
- /*
- * USB bus fault is routed to pin PQ4. We create a Hwi to allow us
- * to detect power faults and recover gracefully or terminate the
- * program. PQ4 is active low; set the pin as input with a weak
- * pull-up.
- */
- GPIOPadConfigSet(GPIO_PORTQ_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA,
- GPIO_PIN_TYPE_STD_WPU);
- GPIOIntTypeSet(GPIO_PORTQ_BASE, GPIO_PIN_4, GPIO_FALLING_EDGE);
- GPIOIntClear(GPIO_PORTQ_BASE, GPIO_PIN_4);
-
- /* Create a Hwi for PQ4 pin. */
- Error_init(&eb);
- Hwi_Params_init(&hwiParams);
- Hwi_construct(&(usbBusFaultHwiStruct), INT_GPIOQ4,
- EK_TM4C1294XL_usbBusFaultHwi, &hwiParams, &eb);
- if (Error_check(&eb))
- {
- System_abort("Couldn't construct USB bus fault hwi");
- }
- }
-}
-
-#if TI_DRIVERS_USBMSCHFATFS_INCLUDED
-#include <ti/drivers/USBMSCHFatFs.h>
-#include <ti/drivers/usbmschfatfs/USBMSCHFatFsTiva.h>
-
-/* USBMSCHFatFs objects */
-USBMSCHFatFsTiva_Object usbmschfatfstivaObjects[EK_TM4C1294XL_USBMSCHFatFsCOUNT];
-
-/* USBMSCHFatFs configuration structure, describing which pins are to be used */
-const USBMSCHFatFsTiva_HWAttrs usbmschfatfstivaHWAttrs[EK_TM4C1294XL_USBMSCHFatFsCOUNT] =
-{
- { INT_USB0}
-};
-
-const USBMSCHFatFs_Config USBMSCHFatFs_config[] =
-{
- {
- &USBMSCHFatFsTiva_fxnTable,
- &usbmschfatfstivaObjects[0],
- &usbmschfatfstivaHWAttrs[0]
- },
- { NULL, NULL, NULL}
-};
-
-/*
- * ======== EK_TM4C1294XL_initUSBMSCHFatFs ========
- */
-void EK_TM4C1294XL_initUSBMSCHFatFs(void)
-{
- /* Initialize the DMA control table */
- EK_TM4C1294XL_initDMA();
-
- /* Call the USB initialization function for the USB Reference modules */
- EK_TM4C1294XL_initUSB(EK_TM4C1294XL_USBHOST);
- USBMSCHFatFs_init();
-}
-#endif /* TI_DRIVERS_USBMSCHFATFS_INCLUDED */
-
-#if TI_DRIVERS_WATCHDOG_INCLUDED
-#include <ti/drivers/Watchdog.h>
-#include <ti/drivers/watchdog/WatchdogTiva.h>
-
-/* Watchdog objects */
-WatchdogTiva_Object watchdogTivaObjects[EK_TM4C1294XL_WATCHDOGCOUNT];
-
-/* Watchdog configuration structure */
-const WatchdogTiva_HWAttrs watchdogTivaHWAttrs[EK_TM4C1294XL_WATCHDOGCOUNT] =
-{
- /* EK_LM4F120XL_WATCHDOG0 with 1 sec period at default CPU clock freq */
- { WATCHDOG0_BASE, INT_WATCHDOG, 80000000},
-};
-
-const Watchdog_Config Watchdog_config[] =
-{
- { &WatchdogTiva_fxnTable, &watchdogTivaObjects[0], &watchdogTivaHWAttrs[0]},
- { NULL, NULL, NULL},
-};
-
-/*
- * ======== EK_TM4C1294XL_initWatchdog ========
- *
- * NOTE: To use the other watchdog timer with base address WATCHDOG1_BASE,
- * an additional function call may need be made to enable PIOSC. Enabling
- * WDOG1 does not do this. Enabling another peripheral that uses PIOSC
- * such as ADC0 or SSI0, however, will do so. Example:
- *
- * SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
- * SysCtlPeripheralEnable(SYSCTL_PERIPH_WDOG1);
- *
- * See the following forum post for more information:
- * http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/471/p/176487/654390.aspx#654390
- */
-void EK_TM4C1294XL_initWatchdog(void)
-{
- /* Enable peripherals used by Watchdog */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_WDOG0);
-
- /* Initialize the Watchdog driver */
- Watchdog_init();
-}
-#endif /* TI_DRIVERS_WATCHDOG_INCLUDED */
-
-#if TI_DRIVERS_WIFI_INCLUDED
-#include <ti/drivers/WiFi.h>
-
-#if TI_DRIVERS_WIFI_CC3100
-#include <ti/drivers/wifi/WiFiCC3100.h>
-
-/* WiFi objects */
-WiFiCC3100_Object wiFiCC3100Objects[EK_TM4C1294XL_WIFICOUNT];
-
-/* WiFi configuration structure */
-const WiFiCC3100_HWAttrs wiFiCC3100HWAttrs[EK_TM4C1294XL_WIFICOUNT] =
-{
- {
- GPIO_PORTM_BASE, /* IRQ port */
- GPIO_PIN_3, /* IRQ pin */
- INT_GPIOM, /* IRQ port interrupt vector */
-
- GPIO_PORTH_BASE, /* CS port */
- GPIO_PIN_2, /* CS pin */
-
- GPIO_PORTC_BASE, /* WLAN EN port */
- GPIO_PIN_6 /* WLAN EN pin */
- }
-};
-
-const WiFi_Config WiFi_config[] =
-{
- {
- &WiFiCC3100_fxnTable,
- &wiFiCC3100Objects[0],
- &wiFiCC3100HWAttrs[0]
- },
- { NULL,NULL, NULL},
-};
-
-/*
- * ======== EK_TM4C1294XL_initWiFi ========
- */
-void EK_TM4C1294XL_initWiFi(void)
-{
- /* Configure EN & CS pins to disable CC3100 */
- GPIOPinTypeGPIOOutput(GPIO_PORTH_BASE, GPIO_PIN_2);
- GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_6);
- GPIOPinWrite(GPIO_PORTH_BASE, GPIO_PIN_2, GPIO_PIN_2);
- GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6, 0);
-
- /* Configure SSI2 for CC3100 */
- SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
- GPIOPinConfigure(GPIO_PD3_SSI2CLK);
- GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
- GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);
- GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3);
-
- /* Configure IRQ pin */
- GPIOPinTypeGPIOInput(GPIO_PORTM_BASE, GPIO_PIN_3);
- GPIOPadConfigSet(GPIO_PORTM_BASE, GPIO_PIN_3, GPIO_STRENGTH_2MA,
- GPIO_PIN_TYPE_STD_WPD);
- GPIOIntTypeSet(GPIO_PORTM_BASE, GPIO_PIN_3, GPIO_RISING_EDGE);
-
- SPI_init();
- EK_TM4C1294XL_initDMA();
-
- WiFi_init();
-}
-#endif /* TI_DRIVERS_WIFI_CC3100 */
-
-#endif /* TI_DRIVERS_WIFI_INCLUDED */