mt_zdo.lst

来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,299 行 · 第 1/5 页

LST
1,299
字号
     94            byte attr;
     95            byte attr1;
     96            uint16 cID;
     97            uint16 shortAddr;
     98            uint16 uAttr;
     99            byte *ptr;
    100            byte *ptr1;
    101            zAddrType_t devAddr;
    102            zAddrType_t dstAddr;
    103            byte respLen;
    104          #if defined ( ZDO_MGMT_NWKDISC_REQUEST )
    105            uint32 scanChans;
    106          #endif
    107          #if defined ( ZDO_USERDESCSET_REQUEST )
    108            UserDescriptorFormat_t userDesc;
    109          #endif
    110          
    111            ret = UNSUPPORTED_COMMAND;
    112            len = SPI_0DATA_MSG_LEN + SPI_RESP_LEN_ZDO_DEFAULT;
    113            respLen = SPI_RESP_LEN_ZDO_DEFAULT;
    114          
    115            switch (cmd_id)
    116            {
    117              case SPI_CMD_ZDO_AUTO_ENDDEVICEBIND_REQ:
    118                i = *pData;    // Get the endpoint/interface
    119                ZDApp_SendEndDeviceBindReq( i );
    120          
    121                //Since function type is void, report a succesful operation to the test tool
    122                ret = ZSUCCESS;
    123                break;
    124          
    125              case SPI_CMD_ZDO_AUTO_FIND_DESTINATION_REQ:
    126                i = *pData;    // Get the endpoint/interface
    127                ZDApp_AutoFindDestination( i );
    128                //Since function type is void, report a succesful operation to the test tool
    129                ret = ZSUCCESS;
    130                break;
    131          
    132          #if defined ( ZDO_NWKADDR_REQUEST )
    133              case SPI_CMD_ZDO_NWK_ADDR_REQ:
    134                // Copy and flip incoming 64-bit address
    135                pData = zdo_MT_MakeExtAddr( &devAddr, pData );
    136          
    137                ptr = (byte*)&devAddr.addr.extAddr;
    138          
    139                attr = *pData++;   // RequestType
    140                attr1 = *pData++;  // StartIndex
    141                x = *pData;
    142                ret = (byte)ZDP_NwkAddrReq( ptr, attr, attr1, x );
    143                break;
    144          #endif
    145          
    146          #if defined ( ZDO_IEEEADDR_REQUEST )
    147              case SPI_CMD_ZDO_IEEE_ADDR_REQ:
    148                shortAddr = BUILD_UINT16( pData[1], pData[0] );
    149                pData += sizeof( shortAddr );
    150                attr = *pData++;   // RequestType
    151                attr1 = *pData++;  // StartIndex
    152                x = *pData;        // SecuritySuite
    153                ret = (byte)ZDP_IEEEAddrReq( shortAddr, attr, attr1, x );
    154                break;
    155          #endif
    156          
    157          #if defined ( ZDO_NODEDESC_REQUEST )
    158              case SPI_CMD_ZDO_NODE_DESC_REQ:
    159                // destination address
    160                devAddr.addrMode = Addr16Bit;
    161                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    162                pData += 2;
    163          
    164                // Network address of interest
    165                shortAddr = BUILD_UINT16( pData[1], pData[0] );
    166                pData += 2;
    167          
    168                attr = *pData;
    169                ret = (byte)ZDP_NodeDescReq( &devAddr, shortAddr, attr );
    170                break;
    171          #endif
    172          
    173          #if defined ( ZDO_POWERDESC_REQUEST )
    174              case SPI_CMD_ZDO_POWER_DESC_REQ:
    175                // destination address
    176                devAddr.addrMode = Addr16Bit;
    177                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    178                pData += 2;
    179          
    180                // Network address of interest
    181                shortAddr = BUILD_UINT16( pData[1], pData[0] );
    182                pData += 2;
    183          
    184                attr = *pData;
    185                ret = (byte)ZDP_PowerDescReq( &devAddr, shortAddr, attr );
    186                break;
    187          #endif
    188          
    189          #if defined ( ZDO_SIMPLEDESC_REQUEST )
    190              case SPI_CMD_ZDO_SIMPLE_DESC_REQ:
    191                // destination address
    192                devAddr.addrMode = Addr16Bit;
    193                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    194                pData += 2;
    195          
    196                // Network address of interest
    197                shortAddr = BUILD_UINT16( pData[1], pData[0] );
    198                pData += 2;
    199          
    200                attr = *pData++;  // endpoint/interface
    201                attr1 = *pData;   // SecuritySuite
    202                ret = (byte)ZDP_SimpleDescReq( &devAddr, shortAddr, attr, attr1 );
    203                break;
    204          #endif
    205          
    206          #if defined ( ZDO_ACTIVEEP_REQUEST )
    207              case SPI_CMD_ZDO_ACTIVE_EPINT_REQ:
    208                // destination address
    209                devAddr.addrMode = Addr16Bit;
    210                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    211                pData += 2;
    212          
    213                // Network address of interest
    214                shortAddr = BUILD_UINT16( pData[1], pData[0] );
    215                pData += 2;
    216          
    217                attr = *pData;  // SecuritySuite
    218                ret = (byte)ZDP_ActiveEPReq( &devAddr, shortAddr, attr );
    219                break;
    220          #endif
    221          
    222          #if defined ( ZDO_MATCH_REQUEST )
    223              case SPI_CMD_ZDO_MATCH_DESC_REQ:
    224                {
    225                  uint16 inC[16], outC[16];
    226          
    227                  // destination address
    228                  devAddr.addrMode = Addr16Bit;
    229                  devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    230                  pData += 2;
    231          
    232                  // Network address of interest
    233                  shortAddr = BUILD_UINT16( pData[1], pData[0] );
    234                  pData += 2;
    235          
    236                  uAttr = BUILD_UINT16( pData[1], pData[0] );   // Profile ID
    237                  pData += 2;
    238          
    239                  attr = *pData++;   // NumInClusters
    240                  for (i=0; i<16; ++i)  {
    241                    inC[i] = BUILD_UINT16(pData[1], pData[0]);
    242                    pData += 2;
    243                  }
    244          
    245                  attr1 = *pData++;  // NumOutClusters
    246                  for (i=0; i<16; ++i)  {
    247                    outC[i] = BUILD_UINT16(pData[1], pData[0]);
    248                    pData += 2;
    249                  }
    250          
    251                  i = *pData;        // SecuritySuite
    252          
    253                  ret = (byte)ZDP_MatchDescReq( &devAddr, shortAddr, uAttr,
    254                                            attr, inC, attr1, outC, i );
    255                }
    256                break;
    257          #endif
    258          
    259          #if defined ( ZDO_COMPLEXDESC_REQUEST )
    260              case SPI_CMD_ZDO_COMPLEX_DESC_REQ:
    261                // destination address
    262                devAddr.addrMode = Addr16Bit;
    263                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    264                pData += 2;
    265          
    266                // Network address of interest
    267                shortAddr = BUILD_UINT16( pData[1], pData[0] );
    268                pData += 2;
    269          
    270                attr = *pData;  // SecuritySuite
    271                ret = (byte)ZDP_ComplexDescReq( &devAddr, shortAddr, attr );
    272                break;
    273          #endif
    274          
    275          #if defined ( ZDO_USERDESC_REQUEST )
    276              case SPI_CMD_ZDO_USER_DESC_REQ:
    277                // destination address
    278                devAddr.addrMode = Addr16Bit;
    279                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    280                pData += 2;
    281          
    282                // Network address of interest
    283                shortAddr = BUILD_UINT16( pData[1], pData[0] );
    284                pData += 2;
    285          
    286                attr = *pData;  // SecuritySuite
    287                ret = (byte)ZDP_UserDescReq( &devAddr, shortAddr, attr );
    288                break;
    289          #endif
    290          
    291          #if defined ( ZDO_ENDDEVICEBIND_REQUEST )
    292              case SPI_CMD_ZDO_END_DEV_BIND_REQ:
    293                //TODO: When ZTool supports 16 bits the code below will need to take it into account
    294                {
    295                  uint16 inC[16], outC[16];
    296          
    297                  // destination address
    298                  devAddr.addrMode = Addr16Bit;
    299                  devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    300                  pData += 2;
    301          
    302                  // Network address of interest
    303                  shortAddr = BUILD_UINT16( pData[1], pData[0] );
    304                  pData += 2;
    305          
    306                  x = *pData++;      // EPInt
    307          
    308                  uAttr = BUILD_UINT16( pData[1], pData[0] );   // Profile ID
    309                  pData += 2;
    310          
    311                  attr = *pData++;   // NumInClusters
    312                  for (i=0; i<16; ++i)  {
    313                    inC[i] = BUILD_UINT16(pData[1], pData[0]);
    314                    pData += 2;
    315                  }
    316          
    317                  attr1 = *pData++;  // NumOutClusters
    318                  for (i=0; i<16; ++i)  {
    319                    outC[i] = BUILD_UINT16(pData[1], pData[0]);
    320                    pData += 2;
    321                  }
    322          
    323                  i = *pData;        // SecuritySuite
    324          
    325                  ret = (byte)ZDP_EndDeviceBindReq( &devAddr, shortAddr, x, uAttr,
    326                                          attr, inC, attr1, outC, i );
    327                }
    328                break;
    329          #endif
    330          
    331          #if defined ( ZDO_BIND_UNBIND_REQUEST )
    332              case SPI_CMD_ZDO_BIND_REQ:
    333                // destination address
    334                devAddr.addrMode = Addr16Bit;
    335                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    336                pData += 2;
    337          
    338                MT_ReverseBytes( pData, Z_EXTADDR_LEN );
    339                ptr = pData;       // SrcAddress
    340                pData += Z_EXTADDR_LEN;
    341          
    342                attr = *pData++;   // SrcEPInt
    343          
    344                cID = BUILD_UINT16( pData[1], pData[0]);      // ClusterID
    345                pData += 2;
    346                
    347                dstAddr.addrMode = *pData++;
    348                if ( NLME_GetProtocolVersion() == ZB_PROT_V1_0 )
    349                  dstAddr.addrMode = Addr64Bit;
    350                
    351                MT_ReverseBytes( pData, Z_EXTADDR_LEN );
    352                if ( dstAddr.addrMode == Addr64Bit )
    353                {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?