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

📄 zdprofile.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    357           * @param       nwkAddr - 16 bit address
    358           * @param       epIntf - endpoint/interface
    359           * @param       SecurityEnable - Security Options
    360           *
    361           * @return      afStatus_t
    362           */
    363          afStatus_t ZDP_SimpleDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,
    364                                              byte endPoint, byte SecurityEnable )
    365          
    366          {
    367            ZDP_TmpBuf[0] = LO_UINT16( nwkAddr );
    368            ZDP_TmpBuf[1] = HI_UINT16( nwkAddr );
    369            ZDP_TmpBuf[2] = endPoint;
    370          
    371            return fillAndSend( &ZDP_TransID, dstAddr, Simple_Desc_req, 3 );
    372          }
    373          #endif // ZDO_SIMPLEDESC_REQUEST
    374          
    375          #if defined ( ZDO_USERDESCSET_REQUEST )
    376          /*********************************************************************
    377           * @fn          ZDP_UserDescSet
    378           *
    379           * @brief       This builds and send a User_Desc_set message to set
    380           *              the user descriptor.  This function sends unicast
    381           *              message to the destination device.
    382           *
    383           * @param       dstAddr - destination address
    384           * @param       nwkAddr - 16 bit address
    385           * @param       UserDescriptor - user descriptor
    386           * @param       SecurityEnable - Security Options
    387           *
    388           * @return      afStatus_t
    389           */
    390          afStatus_t ZDP_UserDescSet( zAddrType_t *dstAddr, uint16 nwkAddr,
    391                                    UserDescriptorFormat_t *UserDescriptor,
    392                                    byte SecurityEnable )
    393          {
    394            byte *pBuf = ZDP_TmpBuf;
    395            byte len = (UserDescriptor->len < AF_MAX_USER_DESCRIPTOR_LEN) ?
    396                        UserDescriptor->len : AF_MAX_USER_DESCRIPTOR_LEN;
    397            byte addrLen = 2;
    398          
    399            *pBuf++ = LO_UINT16( nwkAddr );
    400            *pBuf++ = HI_UINT16( nwkAddr );
    401          
    402            if ( NLME_GetProtocolVersion() == ZB_PROT_V1_1 )
    403            {
    404              *pBuf++ = len;
    405              addrLen = 3;
    406            }
    407            pBuf = osal_memcpy( pBuf, UserDescriptor->desc, len );
    408            osal_memset( pBuf, AF_USER_DESCRIPTOR_FILL, AF_MAX_USER_DESCRIPTOR_LEN-len );
    409          
    410            return fillAndSend( &ZDP_TransID, dstAddr, User_Desc_set, (AF_MAX_USER_DESCRIPTOR_LEN + addrLen) );
    411          }
    412          #endif // ZDO_USERDESCSET_REQUEST
    413          
    414          #if defined ( ZDO_SERVERDISC_REQUEST )
    415          /*********************************************************************
    416           * @fn          ZDP_ServerDiscReq
    417           *
    418           * @brief       Build and send a Server_Discovery_req request message.
    419           *
    420           * @param       serverMask - 16-bit bit-mask of server services being sought.
    421           * @param       SecurityEnable - Security Options
    422           *
    423           * @return      afStatus_t
    424           */
    425          afStatus_t ZDP_ServerDiscReq( uint16 serverMask, byte SecurityEnable )
    426          {
    427            byte *pBuf = ZDP_TmpBuf;
    428            zAddrType_t dstAddr;
    429          
    430            dstAddr.addrMode = AddrBroadcast;
    431            dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVZCZR;
    432          
    433            *pBuf++ = LO_UINT16( serverMask );
    434            *pBuf = HI_UINT16( serverMask );
    435          
    436            FillAndSendTxOptions( &ZDP_TransID, &dstAddr, Server_Discovery_req, 2,
    437                       ((SecurityEnable) ? AF_EN_SECURITY : AF_TX_OPTIONS_NONE) );
    438          }
    439          #endif
    440          
    441          #if defined ( ZDO_ENDDEVICE_ANNCE_REQUEST ) || defined ( ZDO_ENDDEVICE_ANNCE_GENERATE )
    442          /*********************************************************************
    443           * @fn          ZDP_EndDeviceAnnce
    444           *
    445           * @brief       This builds and send an End_Device_Annce
    446           *              message.  This function sends a broadcast message.
    447           *
    448           * @param       nwkAddr - 16 bit address of the device
    449           * @param       IEEEAddr - 64 bit address of the device
    450           * @param       capabilities - device capabilities.  This field is only
    451           *                 sent for v1.1 networks.
    452           * @param       SecurityEnable - Security Options
    453           *
    454           * @return      afStatus_t
    455           */
    456          afStatus_t ZDP_EndDeviceAnnce( uint16 nwkAddr, byte *IEEEAddr,
    457                                        byte capabilities, byte SecurityEnable )
    458          {
    459            zAddrType_t dstAddr;
    460            uint8 len;
    461          
    462            dstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
    463            dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR;
    464          
    465            ZDP_TmpBuf[0] = LO_UINT16( nwkAddr );
    466            ZDP_TmpBuf[1] = HI_UINT16( nwkAddr );
    467            osal_cpyExtAddr( &ZDP_TmpBuf[2], IEEEAddr );
    468            len = 2 + Z_EXTADDR_LEN;
    469          
    470            if ( NLME_GetProtocolVersion() != ZB_PROT_V1_0 )
    471            {
    472              ZDP_TmpBuf[10] = capabilities;
    473              len++;
    474            }
    475          
    476            return fillAndSend( &ZDP_TransID, &dstAddr, End_Device_annce, len );
    477          }
    478          #endif // ZDO_ENDDEVICE_ANNCE_REQUEST
    479          
    480          /*********************************************************************
    481           * Address Responses
    482           */
    483          
    484          /*********************************************************************
    485           * @fn      zdpProcessAddrReq
    486           *
    487           * @brief   Process an incoming NWK_addr_req or IEEE_addr_req message and then
    488           *          build and send a corresponding NWK_addr_rsp or IEEE_addr_rsp msg.
    489           *
    490           * @param   seq - Message sequence number of the request.
    491           * @param   src - Source address of the request.
    492           * @param   msg - Incoming request message.
    493           * @param   cId - Cluster ID of the request.
    494           * @param   sty - Security enable/disable options.
    495           *
    496           * @return  none
    497           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    498          static void zdpProcessAddrReq(
   \                     ??zdpProcessAddrReq:
    499                              byte seq, zAddrType_t *src, byte *msg, uint16 cId, byte sty )
    500          {
   \   000000   74F0         MOV     A,#-0x10
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 16
   \   000005                ; Auto size: 1
   \   000005   74FF         MOV     A,#-0x1
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
   \   00000A   E9           MOV     A,R1
   \   00000B   85..82       MOV     DPL,?XSP + 0
   \   00000E   85..83       MOV     DPH,?XSP + 1
   \   000011   F0           MOVX    @DPTR,A
   \   000012   8A..         MOV     ?V0 + 6,R2
   \   000014   8B..         MOV     ?V0 + 7,R3
   \   000016   7411         MOV     A,#0x11
   \   000018   12....       LCALL   ?XSTACK_DISP0_8
   \   00001B   E0           MOVX    A,@DPTR
   \   00001C   F5..         MOV     ?V0 + 4,A
   \   00001E   A3           INC     DPTR
   \   00001F   E0           MOVX    A,@DPTR
   \   000020   F5..         MOV     ?V0 + 5,A
    501            byte reqType = msg[(cId == NWK_addr_req) ? Z_EXTADDR_LEN : sizeof( uint16 ) ];
   \   000022   E5..         MOV     A,?V0 + 4
   \   000024   7002         JNZ     ??zdpProcessAddrReq_1
   \   000026   E5..         MOV     A,?V0 + 5
   \                     ??zdpProcessAddrReq_1:
   \   000028   7004         JNZ     ??zdpProcessAddrReq_2
   \   00002A   7808         MOV     R0,#0x8
   \   00002C   8002         SJMP    ??zdpProcessAddrReq_3
   \                     ??zdpProcessAddrReq_2:
   \   00002E   7802         MOV     R0,#0x2
   \                     ??zdpProcessAddrReq_3:
   \   000030   EC           MOV     A,R4
   \   000031   28           ADD     A,R0
   \   000032   F582         MOV     DPL,A
   \   000034   ED           MOV     A,R5
   \   000035   12....       LCALL   ??Subroutine24_1 & 0xFFFF
   \                     ??CrossCallReturnLabel_48:
   \   000038   F5..         MOV     ?V0 + 2,A
    502          
    503            uint16 aoi = INVALID_NODE_ADDR;
    504            byte *ieee = NULL;
   \   00003A   75..00       MOV     ?V0 + 0,#0x0
   \   00003D   75..00       MOV     ?V0 + 1,#0x0
    505          
    506            if ( cId == NWK_addr_req )
   \   000040   E5..         MOV     A,?V0 + 4
   \   000042   7002         JNZ     ??zdpProcessAddrReq_4
   \   000044   E5..         MOV     A,?V0 + 5
   \                     ??zdpProcessAddrReq_4:
   \   000046   701E         JNZ     ??zdpProcessAddrReq_5
    507            {
    508              ieee = msg;
   \   000048   8C..         MOV     ?V0 + 0,R4
   \   00004A   8D..         MOV     ?V0 + 1,R5
    509          
    510              if ( osal_ExtAddrEqual( saveExtAddr, ieee ) )
   \   00004C                ; Setup parameters for call to function osal_ExtAddrEqual
   \   00004C   7A..         MOV     R2,#(saveExtAddr & 0xff)
   \   00004E   7B..         MOV     R3,#((saveExtAddr >> 8) & 0xff)
   \   000050   90....       MOV     DPTR,#(osal_ExtAddrEqual & 0xffff)
   \   000053   74..         MOV     A,#((osal_ExtAddrEqual >> 16) & 0xff)
   \   000055   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000058   E9           MOV     A,R1
   \   000059   7003         JNZ     $+5
   \   00005B   02....       LJMP    ??zdpProcessAddrReq_6 & 0xFFFF
    511              {
    512                aoi = ZDAppNwkAddr.addr.shortAddr;
   \   00005E   90....       MOV     DPTR,#ZDAppNwkAddr
   \   000061   12....       LCALL   ?Subroutine33 & 0xFFFF
   \                     ??CrossCallReturnLabel_71:
   \   000064   8022         SJMP    ??zdpProcessAddrReq_7
    513              }
    514              /*
    515              else if ( reqType == ZDP_ADDR_REQTYPE_MEMBERSHIP )
    516              {
    517                //ggg - what to do?
    518              }
    519              */
    520          #if defined( ZDO_CACHE ) && ( CACHE_DEV_MAX > 0 )
    521              else
    522              {
    523                aoi = ZDCacheGetNwkAddr( msg );
    524              }
    525          #endif
    526            }
    527            else  // if ( cId == IEEE_addr_req )
    528            {
    529              aoi = BUILD_UINT16( msg[0], msg[1] );
   \                     ??zdpProcessAddrReq_5:
   \   000066   8C82         MOV     DPL,R4
   \   000068   8D83         MOV     DPH,R5
   \   00006A   E0           MOVX    A,@DPTR
   \   00006B   FA           MOV     R2,A
   \   00006C   A3           INC     DPTR
   \   00006D   E0           MOVX    A,@DPTR
   \   00006E   F9           MOV     R1,A
   \   00006F   E4           CLR     A
   \   000070   2A           ADD     A,R2
   \   000071   FE           MOV     R6,A
   \   000072   E9           MOV     A,R1
   \   000073   3400         ADDC    A,#0x0
   \   000075   FF           MOV     R7,A
    530    

⌨️ 快捷键说明

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