⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mt_zdo.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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                {
    354                  ptr1 = pData;      // DstAddress
    355                  osal_cpyExtAddr( dstAddr.addr.extAddr, ptr1 );
    356                }
    357                else
    358                {
    359                  dstAddr.addr.shortAddr = BUILD_UINT16( pData[0], pData[1] ); 
    360                }
    361                
    362                // The short address occupies lsb two bytes
    363                pData += Z_EXTADDR_LEN;
    364          
    365                
    366                attr1 = *pData++;  // DstEPInt
    367          
    368                x = *pData;        // SecuritySuite
    369               
    370          #if defined ( REFLECTOR )
    371                if ( devAddr.addr.shortAddr == _NIB.nwkDevAddress )
    372                {
    373          	ZDApp_BindReqCB( 0, &devAddr, ptr, attr, cID, &dstAddr, attr1, x );
    374                  ret = ZSuccess;
    375                }
    376                else
    377          #endif
    378                ret = (byte)ZDP_BindReq( &devAddr, ptr, attr, cID, &dstAddr, attr1, x );
    379                break;
    380          #endif
    381          
    382          #if defined ( ZDO_BIND_UNBIND_REQUEST )
    383              case SPI_CMD_ZDO_UNBIND_REQ:
    384                // destination address
    385                devAddr.addrMode = Addr16Bit;
    386                devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
    387                pData += 2;
    388          
    389                MT_ReverseBytes( pData, Z_EXTADDR_LEN );
    390                ptr = pData;       // SrcAddress
    391                pData += Z_EXTADDR_LEN;
    392          
    393                attr = *pData++;   // SrcEPInt
    394          
    395                cID = BUILD_UINT16( pData[1], pData[0]);      // ClusterID
    396                pData += 2;
    397          
    398                dstAddr.addrMode = *pData++;
    399                if ( NLME_GetProtocolVersion() == ZB_PROT_V1_0 )
    400                  dstAddr.addrMode = Addr64Bit;
    401                MT_ReverseBytes( pData, Z_EXTADDR_LEN );
    402                if ( dstAddr.addrMode == Addr64Bit )
    403                {
    404                  ptr1 = pData;      // DstAddress
    405                  osal_cpyExtAddr( dstAddr.addr.extAddr, ptr1 );
    406                }
    407                else
    408                {
    409                  dstAddr.addr.shortAddr = BUILD_UINT16( pData[0], pData[1] ); 

⌨️ 快捷键说明

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