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

📄 zdobject.lst

📁 CC2431无线定位程序非常有参考价值
💻 LST
📖 第 1 页 / 共 5 页
字号:
    614          
    615              // Send the response message to the device sending this message
    616              ZDO_SendEDBindRsp( bindReq->TransSeq, &SrcAddr, Status, bindReq->SecurityUse );
    617            }
    618            else  // Start a new End Device Bind
    619            {
    620              // Copy the info
    621              ZDO_EDBind = osal_mem_alloc( sizeof( ZDO_EDBind_t ) );
    622              if ( ZDO_EDBind )
    623              {
    624                osal_memcpy( &(ZDO_EDBind->SrcAddr), &SrcAddr, sizeof( zAddrType_t ) );
    625                ZDO_EDBind->LocalCoordinator = bindReq->localCoordinator;
    626                ZDO_EDBind->epIntf = bindReq->endpoint;
    627                ZDO_EDBind->ProfileID = bindReq->profileID;
    628                ZDO_EDBind->SrcTransSeq = bindReq->TransSeq;
    629          
    630                ZDO_EDBind->numInClusters = bindReq->numInClusters;
    631                if ( bindReq->numInClusters )
    632                {
    633                  ZDO_EDBind->inClusters = osal_mem_alloc( (short)(bindReq->numInClusters * sizeof(uint16)) );
    634                  if ( ZDO_EDBind->inClusters )
    635                  {
    636                    osal_memcpy( ZDO_EDBind->inClusters, bindReq->inClusters, (bindReq->numInClusters * sizeof( uint16 )) );
    637                  }
    638                  else
    639                  {
    640                    // Force no clusters
    641                    ZDO_EDBind->numInClusters = 0;
    642                  }
    643                }
    644                else
    645                  ZDO_EDBind->inClusters = NULL;
    646          
    647                ZDO_EDBind->numOutClusters = bindReq->numOutClusters;
    648                if ( bindReq->numOutClusters )
    649                {
    650                  ZDO_EDBind->outClusters = osal_mem_alloc( (short)(bindReq->numOutClusters*sizeof(uint16)) );
    651                  if ( ZDO_EDBind->outClusters )
    652                  {
    653                    osal_memcpy( ZDO_EDBind->outClusters, bindReq->outClusters, (bindReq->numOutClusters * sizeof( uint16 )) );
    654                  }
    655                  else
    656                  {
    657                    ZDO_EDBind->numOutClusters = 0;
    658                  }
    659                }
    660                else
    661                  ZDO_EDBind->outClusters = NULL;
    662          
    663                ZDO_EDBind->SecurityUse = bindReq->SecurityUse;
    664                ZDO_EDBind->status = ZDP_TIMEOUT;
    665          
    666                // Setup the timer
    667                APS_SetEndDeviceBindTimeout( AIB_MaxBindingTime, ZDO_EndDeviceTimeoutCB );
    668              }
    669            }
    670          }
    671          #endif // REFLECTOR
    672          
    673          /*********************************************************************
    674           * Utility functions
    675           */
    676          
    677          /*********************************************************************
    678           * @fn          ZDO_CreateAlignedUINT16List
    679           *
    680           * @brief       Creates a list of cluster IDs that is guaranteed to be aligned.
    681           *              according to the needs of the target. If thre device is running
    682           *              Protocol version 1.0 the incoming buffer will have only a single
    683           *              byte for the cluster ID.
    684           *
    685           *              Depends on the malloc taking care of alignment.
    686           *
    687           *              When cluster ID went to 16 bits alignment for cluster IDs became
    688           *              an issue.
    689           *
    690           * @param       num  - number of entries in list
    691           * @param       buf  - pointer to list
    692           *
    693           * @return      pointer to aligned list. Null if can't allocate memory.
    694           *              Caller's responsibility to free memory.
    695           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    696          static uint16 *ZDO_CreateAlignedUINT16List(uint8 num, uint8 *buf)
   \                     ??ZDO_CreateAlignedUINT16List:
    697          {
   \   000000   74F2         MOV     A,#-0xe
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 14
   \   000005                ; Auto size: 0
   \   000005   89..         MOV     ?V0 + 2,R1
   \   000007   EA           MOV     A,R2
   \   000008   FE           MOV     R6,A
   \   000009   EB           MOV     A,R3
   \   00000A   FF           MOV     R7,A
    698            uint16 *ptr;
    699          
    700            if ((ptr=osal_mem_alloc((short)(num*sizeof(uint16)))))  {
   \   00000B                ; Setup parameters for call to function osal_mem_alloc
   \   00000B   E9           MOV     A,R1
   \   00000C   C3           CLR     C
   \   00000D   33           RLC     A
   \   00000E   FA           MOV     R2,A
   \   00000F   E4           CLR     A
   \   000010   33           RLC     A
   \   000011   FB           MOV     R3,A
   \   000012   90....       MOV     DPTR,#(osal_mem_alloc & 0xffff)
   \   000015   74..         MOV     A,#((osal_mem_alloc >> 16) & 0xff)
   \   000017   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00001A   8A..         MOV     ?V0 + 0,R2
   \   00001C   8B..         MOV     ?V0 + 1,R3
   \   00001E   EA           MOV     A,R2
   \   00001F   7001         JNZ     ??ZDO_CreateAlignedUINT16List_1
   \   000021   EB           MOV     A,R3
   \                     ??ZDO_CreateAlignedUINT16List_1:
   \   000022   605D         JZ      ??ZDO_CreateAlignedUINT16List_2
    701              uint8 i, ubyte, inc;
    702          
    703              inc = (ZB_PROT_V1_1 == NLME_GetProtocolVersion()) ? 2 : 1;
   \   000024                ; Setup parameters for call to function NLME_GetProtocolVersion
   \   000024   90....       MOV     DPTR,#(NLME_GetProtocolVersion & 0xffff)
   \   000027   74..         MOV     A,#((NLME_GetProtocolVersion >> 16) & 0xff)
   \   000029   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00002C   E9           MOV     A,R1
   \   00002D   6402         XRL     A,#0x2
   \   00002F   7004         JNZ     ??ZDO_CreateAlignedUINT16List_3
   \   000031   7B02         MOV     R3,#0x2
   \   000033   8002         SJMP    ??ZDO_CreateAlignedUINT16List_4
   \                     ??ZDO_CreateAlignedUINT16List_3:
   \   000035   7B01         MOV     R3,#0x1
    704          
    705              for (i=0; i<num; ++i)  {
   \                     ??ZDO_CreateAlignedUINT16List_4:
   \   000037   7A00         MOV     R2,#0x0
   \   000039   8031         SJMP    ??ZDO_CreateAlignedUINT16List_5
    706                // set upper byte to 0 if we're talking Version 1.0. otherwise
    707                // the buffer contains 16 bit cluster IDs.
    708                ubyte  = (2 == inc) ? buf[1] : 0;
   \                     ??ZDO_CreateAlignedUINT16List_6:
   \   00003B   75..00       MOV     ?V0 + 3,#0x0
    709                ptr[i] = BUILD_UINT16(buf[0], ubyte);
   \                     ??ZDO_CreateAlignedUINT16List_7:
   \   00003E   8E82         MOV     DPL,R6
   \   000040   8F83         MOV     DPH,R7
   \   000042   E0           MOVX    A,@DPTR
   \   000043   FC           MOV     R4,A
   \   000044   E4           CLR     A
   \   000045   2C           ADD     A,R4
   \   000046   E5..         MOV     A,?V0 + 3
   \   000048   3400         ADDC    A,#0x0
   \   00004A   FD           MOV     R5,A
   \   00004B   EA           MOV     A,R2
   \   00004C   C3           CLR     C
   \   00004D   33           RLC     A
   \   00004E   F8           MOV     R0,A
   \   00004F   E4           CLR     A
   \   000050   33           RLC     A
   \   000051   F9           MOV     R1,A
   \   000052   E5..         MOV     A,?V0 + 0
   \   000054   28           ADD     A,R0
   \   000055   F582         MOV     DPL,A
   \   000057   E5..         MOV     A,?V0 + 1
   \   000059   39           ADDC    A,R1
   \   00005A   F583         MOV     DPH,A
   \   00005C   EC           MOV     A,R4
   \   00005D   F0           MOVX    @DPTR,A
   \   00005E   A3           INC     DPTR
   \   00005F   ED           MOV     A,R5
   \   000060   F0           MOVX    @DPTR,A
    710                buf    += inc;
   \   000061   8B..         MOV     ?V0 + 4,R3
   \   000063   EE           MOV     A,R6
   \   000064   25..         ADD     A,?V0 + 4
   \   000066   FE           MOV     R6,A
   \   000067   EF           MOV     A,R7
   \   000068   3400         ADDC    A,#0x0
   \   00006A   FF           MOV     R7,A
   \   00006B   0A           INC     R2
   \                     ??ZDO_CreateAlignedUINT16List_5:
   \   00006C   EA           MOV     A,R2
   \   00006D   C3           CLR     C
   \   00006E   95..         SUBB    A,?V0 + 2
   \   000070   500F         JNC     ??ZDO_CreateAlignedUINT16List_2
   \   000072   7402         MOV     A,#0x2
   \   000074   6B           XRL     A,R3
   \   000075   70C4         JNZ     ??ZDO_CreateAlignedUINT16List_6
   \   000077   8E82         MOV     DPL,R6
   \   000079   8F83         MOV     DPH,R7
   \   00007B   A3           INC     DPTR
   \   00007C   E0           MOVX    A,@DPTR
   \   00007D   F5..         MOV     ?V0 + 3,A
   \   00007F   80BD         SJMP    ??ZDO_CreateAlignedUINT16List_7
    711              }
    712            }
    713          
    714            return ptr;
   \                     ??ZDO_CreateAlignedUINT16List_2:
   \   000081   AA..         MOV     R2,?V0 + 0
   \   000083   AB..         MOV     R3,?V0 + 1
   \   000085                REQUIRE ?Subroutine24
   \   000085                ; // Fall through to label ?Subroutine24
    715          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine24:
   \   000000   7F06         MOV     R7,#0x6
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA
    716          
    717          /*********************************************************************
    718           * @fn          ZDO_CompareByteLists
    719           *
    720           * @brief       Compares two lists for matches.
    721           *
    722           * @param       ACnt  - number of entries in list A
    723           * @param       AList  - List A
    724           * @param       BCnt  - number of entries in list B
    725           * @param       BList  - List B
    726           *
    727           * @return      true if a match is found
    728           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    729          byte ZDO_AnyClusterMatches( byte ACnt, uint16 *AList, byte BCnt, uint16 *BList )
   \                     ZDO_AnyClusterMatches:
    730          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
   \   000005   89..         MOV     ?V0 + 0,R1
   \   000007   8C..         MOV     ?V0 + 1,R4
   \   000009   740C         MOV     A,#0xc
   \   00000B   12....       LCALL   ?XSTACK_DISP0_8
   \   00000E   12....       LCALL   ?Subroutine13 & 0xFFFF
    731            byte x, y;
    732          
    733            for ( x = 0; x < ACnt; x++ )
   \                     ??CrossCallReturnLabel_32:
   \   000011   75..00       MOV     ?V0 + 3,#0x0
   \   000014   8002         SJMP    ??ZDO_AnyClusterMatches_0
   \                     ??ZDO_AnyClusterMatches_1:
   \   000016   05..         INC     ?V0 + 3
   \                     ??ZDO_AnyClusterMatches_0:
   \   000018   E5..         MOV     A,?V0 + 3
   \   00001A   C3           CLR     C
   \   00001B   95..         SUBB    A,?V0 + 0
   \   00001D   5040         JNC     ??ZDO_AnyClusterMatches_2
    734            {
    735              for ( y = 0; y < BCnt; y++ )
   \   00001F   75..00       MOV     ?V0 + 2,#0x0
   \   000022   8002         SJMP    ??ZDO_AnyClusterMatches_3
   \              

⌨️ 快捷键说明

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