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

📄 mac_indirect_queue.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR 8051 C/C++ Compiler V7.20H/W32                   16/Jan/2007  15:33:32 #
# Copyright 2004-2006 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Core               =  plain                                             #
#    Code model         =  banked                                            #
#    Data model         =  large                                             #
#    Calling convention =  xdata reentrant                                   #
#    Constant location  =  data                                              #
#    Dptr setup         =  1,16                                              #
#    Source file        =  E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\lib\mac\CC2430\mac_indirect_queue.c            #
#    Command line       =  -I "C:\Program Files\IAR Systems\Embedded         #
#                          Workbench 4.05 Evaluation version\8051\INC\" -I   #
#                          "C:\Program Files\IAR Systems\Embedded Workbench  #
#                          4.05 Evaluation version\8051\SRC\LIB\" -I         #
#                          "C:\Program Files\IAR Systems\Embedded Workbench  #
#                          4.05 Evaluation version\8051\INC\CLIB\" -I        #
#                          E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\..\..\..\include\ -I          #
#                          E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\..\..\..\include\mac\cc2430\  #
#                          -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_E #
#                          ngine\Test\mac\mac_loc\..\..\..\include\hal\cc243 #
#                          0\ -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LO #
#                          C_Engine\Test\mac\mac_loc\..\..\..\apps\ -D       #
#                          USE_LED -D SOC_BB -lCN "E:\公司产品资料\Zigbee\cc #
#                          2431\cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_B #
#                          B, hex\List\" -lA "E:\公司产品资料\Zigbee\cc2431\ #
#                          cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_BB,    #
#                          hex\List\" -o "E:\公司产品资料\Zigbee\cc2431\cc24 #
#                          31定位\LOC_Engine\Test\mac\mac_loc\SOC_BB,        #
#                          hex\Obj\" -e -s9 --debug --core=plain             #
#                          --dptr=16,1 --data_model=large                    #
#                          --code_model=banked --calling_convention=xdata_re #
#                          entrant --place_constants=data --nr_virtual_regs  #
#                          8 E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_En #
#                          gine\lib\mac\CC2430\mac_indirect_queue.c          #
#    List file          =  E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\SOC_BB,                       #
#                          hex\List\mac_indirect_queue.lst                   #
#    Object file        =  E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\SOC_BB,                       #
#                          hex\Obj\mac_indirect_queue.r51                    #
#                                                                            #
#                                                                            #
##############################################################################

E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac_indirect_queue.c
      1          /*******************************************************************************************************
      2           *                                                                                                     *
      3           *        **********                                                                                   *
      4           *       ************                                                                                  *
      5           *      ***        ***                                                                                 *
      6           *      ***   +++   ***                                                                                *
      7           *      ***   + +   ***                                                                                *
      8           *      ***   +                         CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                 *
      9           *      ***   + +   ***                        Indirect Packet Queue + Related                         *
     10           *      ***   +++   ***                                                                                *
     11           *      ***        ***                                                                                 *
     12           *       ************                                                                                  *
     13           *        **********                                                                                   *
     14           *                                                                                                     *
     15           *******************************************************************************************************
     16           * CONFIDENTIAL                                                                                        *
     17           * The use of this file is restricted by the signed MAC software license agreement.                    *
     18           *                                                                                                     *
     19           * Copyright Chipcon AS, 2005                                                                          *
     20           *******************************************************************************************************
     21           * This module contains functions related to the indirect packet queue (on coordinators), including    *
     22           * queue management, transmission initiation, expiration, and other functions.                         *
     23           *******************************************************************************************************/
     24          #include <mac_headers.h>
     25          #if MAC_OPT_FFD
     26          
     27          
     28          //-------------------------------------------------------------------------------------------------------
     29          // Variables related to the indirect packet queue

   \                                 In segment PM0_XDATA, align 1
     30          __no_init MAC_INDIRECT_QUEUE_INFO   miqInfo @ "PM0_XDATA";
   \                     miqInfo:
   \   000000                DS 3
     31          //-------------------------------------------------------------------------------------------------------
     32          
     33          
     34          
     35          
     36          /*******************************************************************************************************
     37           *******************************************************************************************************
     38           **************************                 QUEUE MANAGEMENT                  **************************
     39           *******************************************************************************************************
     40           *******************************************************************************************************/
     41          
     42          
     43          
     44          
     45          //-------------------------------------------------------------------------------------------------------
     46          //  void miqInit(void)
     47          //
     48          //  DESCRIPTION:
     49          //      Initializes the indirect packet queue
     50          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
     51          ROOT void miqInit(void) {
   \                     miqInit:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
     52              miqInfo.firstIndirectPacket = NO_PACKET;
   \   000004   74FF         MOV     A,#-0x1
   \   000006   90....       MOV     DPTR,#miqInfo
   \   000009   F0           MOVX    @DPTR,A
     53              miqInfo.lastIndirectPacket = NO_PACKET;
   \   00000A   90....       MOV     DPTR,#(miqInfo + 1)
   \   00000D   F0           MOVX    @DPTR,A
     54              miqInfo.requestedCounter = 0;
   \   00000E   E4           CLR     A
   \   00000F   90....       MOV     DPTR,#(miqInfo + 2)
   \   000012   F0           MOVX    @DPTR,A
     55          } // miqInit
   \   000013                REQUIRE ?Subroutine0
   \   000013                ; // Fall through to label ?Subroutine0

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   22           RET
     56          
     57          
     58          
     59          
     60          //-------------------------------------------------------------------------------------------------------
     61          //  void miqAddIndirectPacket(MAC_TASK_INFO *pTask)
     62          //
     63          //  DESCRIPTION:
     64          //      This task adds a packet to the indirect queue.
     65          //
     66          //  TASK DATA:
     67          //      A pointer to the MAC_TX_PACKET to be added
     68          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
     69          void miqAddIndirectPacket(MAC_TASK_INFO *pTask) NEAR {
   \                     miqAddIndirectPacket:
   \   000000   74F0         MOV     A,#-0x10
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 16
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FC           MOV     R4,A
   \   000007   EB           MOV     A,R3
   \   000008   FD           MOV     R5,A
     70              MAC_TX_PACKET   *pPacket = (MAC_TX_PACKET *) pTask->taskData;
   \   000009   8C82         MOV     DPL,R4
   \   00000B   8D83         MOV     DPH,R5
   \   00000D   A3           INC     DPTR
   \   00000E   A3           INC     DPTR
   \   00000F   A3           INC     DPTR
   \   000010   E0           MOVX    A,@DPTR
   \   000011   F8           MOV     R0,A
   \   000012   A3           INC     DPTR
   \   000013   E0           MOVX    A,@DPTR
   \   000014   F9           MOV     R1,A
     71              MAC_TX_PACKET   *pIndirectPacket;
     72              UINT8           temp;
     73              BYTE            destAddrMode;
     74              ADDRESS         *pDestAddr;
     75          
     76              switch (pTask->state) {
   \   000015   EC           MOV     A,R4
   \   000016   2405         ADD     A,#0x5
   \   000018   F5..         MOV     ?V0 + 6,A
   \   00001A   ED           MOV     A,R5
   \   00001B   3400         ADDC    A,#0x0
   \   00001D   F5..         MOV     ?V0 + 7,A
   \   00001F   85..82       MOV     DPL,?V0 + 6
   \   000022   F583         MOV     DPH,A
   \   000024   E0           MOVX    A,@DPTR
   \   000025   12....       LCALL   ?UC_SWITCH_DENSE
   \                     `?<Jumptable for miqAddIndirectPacket>_0`:
   \   000028   00           DB        0
   \   000029   01           DB        1
   \   00002A   ....         DW        ??miqAddIndirectPacket_0
   \   00002C   ....         DW        ??miqAddIndirectPacket_1
   \   00002E   ....         DW        ??miqAddIndirectPacket_2
     77              case MIQ_STATE_FIND_FIRST_PACKET_FROM_NODE:
     78                  // Start by determining whether or not this is the first indirect packet to this node.
     79                  pPacket->isFirstPacket = TRUE;
   \                     ??miqAddIndirectPacket_1:
   \   000030   E8           MOV     A,R0
   \   000031   248F         ADD     A,#-0x71
   \   000033   F5..         MOV     ?V0 + 4,A
   \   000035   E9           MOV     A,R1
   \   000036   3400         ADDC    A,#0x0
   \   000038   F5..         MOV     ?V0 + 5,A
   \   00003A   7401         MOV     A,#0x1
   \   00003C   85..82       MOV     DPL,?V0 + 4
   \   00003F   85..83       MOV     DPH,?V0 + 5
   \   000042   F0           MOVX    @DPTR,A
     80                  destAddrMode = (BYTE)(pPacket->pHeader[1] & DEST_ADDR_BM);
   \   000043   8882         MOV     DPL,R0
   \   000045   8983         MOV     DPH,R1
   \   000047   A3           INC     DPTR
   \   000048   A3           INC     DPTR
   \   000049   A3           INC     DPTR
   \   00004A   A3           INC     DPTR
   \   00004B   E0           MOVX    A,@DPTR
   \   00004C   540C         ANL     A,#0xc
   \   00004E   F5..         MOV     ?V0 + 2,A
     81                  pDestAddr = (ADDRESS*) (pPacket->pHeader + 5);
   \   000050   E8           MOV     A,R0
   \   000051   2408         ADD     A,#0x8
   \   000053   F5..         MOV     ?V0 + 0,A
   \   000055   E9           MOV     A,R1
   \   000056   3400         ADDC    A,#0x0
   \   000058   F5..         MOV     ?V0 + 1,A
     82          
     83                  // Go through the whole packet queue, and clear the isFirstPacket flag if a match is found
     84                  temp = miqInfo.firstIndirectPacket;
   \   00005A   90....       MOV     DPTR,#miqInfo
   \   00005D   8014         SJMP    ??miqAddIndirectPacket_3
     85                  while (temp != NO_PACKET) {
     86                      pIndirectPacket = &pMtxPacketPool[temp];
     87                      if (destAddrMode == (pIndirectPacket->pHeader[1] & DEST_ADDR_BM)) {
     88                          if (destAddrMode == DEST_ADDR_SHORT) {
     89                              if (pDestAddr->Short == *((WORD   *) (pIndirectPacket->pHeader + 5))) {
     90                                  pPacket->isFirstPacket = FALSE;
     91                                  break;
     92                              }
     93                          } else {
     94                              if (msupCompareExtendedAddress((ADDRESS   *) pDestAddr, (ADDRESS   *) (pIndirectPacket->pHeader + 5))) {
   \                     ??miqAddIndirectPacket_4:
   \   00005F                ; Setup parameters for call to function msupCompareExtendedAddress
   \   00005F   AA..         MOV     R2,?V0 + 0
   \   000061   AB..         MOV     R3,?V0 + 1
   \   000063   12....       LCALL   msupCompareExtendedAddress & 0xFFFF
   \   000066   E9           MOV     A,R1
   \   000067   7053         JNZ     ??miqAddIndirectPacket_5

⌨️ 快捷键说明

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