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

📄 mac_rx_engine.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \                     mrxDecrOnCounter:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    104          
    105              DISABLE_GLOBAL_INT();
   \   000004   C2AF         CLR     0xa8.7
    106          
    107              // Decrement counter and check for 1->0
    108              if (mrxInfo.onCounter) mrxInfo.onCounter--;
   \   000006   90....       MOV     DPTR,#(mrxInfo + 13)
   \   000009   E0           MOVX    A,@DPTR
   \   00000A   6002         JZ      ??mrxDecrOnCounter_0
   \   00000C   14           DEC     A
   \   00000D   F0           MOVX    @DPTR,A
    109              if (mrxInfo.onCounter == 0) {
   \                     ??mrxDecrOnCounter_0:
   \   00000E   E0           MOVX    A,@DPTR
   \   00000F   7033         JNZ     ??mrxDecrOnCounter_1
    110          
    111                  // Avoid interrupting RX or TX (come back later when busy)
    112                  if (msupIsSfdActive() || msupIsTxActive() || msupIsCspInCriticalSection()) {
   \   000011                ; Setup parameters for call to function msupIsSfdActive
   \   000011   12....       LCALL   msupIsSfdActive & 0xFFFF
   \   000014   E9           MOV     A,R1
   \   000015   700C         JNZ     ??mrxDecrOnCounter_2
   \   000017                ; Setup parameters for call to function msupIsTxActive
   \   000017   12....       LCALL   msupIsTxActive & 0xFFFF
   \   00001A   E9           MOV     A,R1
   \   00001B   7006         JNZ     ??mrxDecrOnCounter_2
   \   00001D                ; Setup parameters for call to function msupIsCspInCriticalSection
   \   00001D   12....       LCALL   msupIsCspInCriticalSection & 0xFFFF
   \   000020   E9           MOV     A,R1
   \   000021   6019         JZ      ??mrxDecrOnCounter_3
    113                      mrxInfo.onCounter++;
   \                     ??mrxDecrOnCounter_2:
   \   000023   E0           MOVX    A,@DPTR
   \   000024   04           INC     A
   \   000025   F0           MOVX    @DPTR,A
    114                      mtimSetCallback(mrxDecrOnCounter, 1);
   \   000026                ; Setup parameters for call to function mtimSetCallback
   \   000026   90....       MOV     DPTR,#__Constant_1
   \   000029   12....       LCALL   ?PUSH_XSTACK8_X_FOUR
   \   00002C   79..         MOV     R1,#(mrxDecrOnCounter & 0xff)
   \   00002E   7A..         MOV     R2,#((mrxDecrOnCounter >> 8) & 0xff)
   \   000030   7B..         MOV     R3,#((mrxDecrOnCounter >> 16) & 0xff)
   \   000032   12....       LCALL   mtimSetCallback & 0xFFFF
   \   000035   7404         MOV     A,#0x4
   \   000037   12....       LCALL   ?DEALLOC_XSTACK8
   \   00003A   8008         SJMP    ??mrxDecrOnCounter_1
    115                  } else {
    116                      ISRFOFF;
   \                     ??mrxDecrOnCounter_3:
   \   00003C   75E1E5       MOV     0xe1,#-0x1b
    117                      CSP_INDICATE_RX_ON(FALSE);
   \   00003F   E4           CLR     A
   \   000040   90DF15       MOV     DPTR,#-0x20eb
   \   000043   F0           MOVX    @DPTR,A
    118                  }
    119              }
    120              ENABLE_GLOBAL_INT();
   \                     ??mrxDecrOnCounter_1:
   \   000044   80..         SJMP    ??Subroutine0_0
    121          
    122          } // mrxDecrOnCounter
    123          
    124          
    125          
    126          
    127          //-------------------------------------------------------------------------------------------------------
    128          //  void mrxRxEnableRequestOff(void)
    129          //
    130          //  DESCRIPTION:
    131          //      Used in connection with mrxRxEnableRequestTask() to make sure that a mtimCancelCallback operation
    132          //      only removes callbacks initiated by mrxRxEnableRequestTask()
    133          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    134          void mrxRxEnableRequestOff(void) NEAR {
   \                     mrxRxEnableRequestOff:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    135              mrxDecrOnCounter();
   \   000004                ; Setup parameters for call to function mrxDecrOnCounter
   \   000004   90....       MOV     DPTR,#(mrxDecrOnCounter & 0xffff)
   \   000007   74..         MOV     A,#((mrxDecrOnCounter >> 16) & 0xff)
   \   000009   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    136          } // mrxRxEnableRequestOff
   \   00000C   80..         SJMP    ??Subroutine0_1
    137          
    138          
    139          
    140          
    141          //-------------------------------------------------------------------------------------------------------
    142          //  void mrxRxEnableRequestTask(MAC_TASK_INFO *pTask)
    143          //
    144          //  DESCRIPTION:
    145          //      The task created by mlmeRxEnableRequest() to turn on RX for a period of time. The current version
    146          //      only supports non-beacon PANs.
    147          //
    148          //  TASK DATA
    149          //      0
    150          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    151          void mrxRxEnableRequestTask(MAC_TASK_INFO   *pTask) NEAR {
   \                     mrxRxEnableRequestTask:
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FE           MOV     R6,A
   \   000007   EB           MOV     A,R3
   \   000008   FF           MOV     R7,A
    152              MAC_ENUM status;
    153          
    154              // Only implemented for non-beacon PANs
    155              if (mpib.macBeaconOrder == 15) {
   \   000009   90....       MOV     DPTR,#(mpib + 8)
   \   00000C   E0           MOVX    A,@DPTR
   \   00000D   640F         XRL     A,#0xf
   \   00000F   7025         JNZ     ??mrxRxEnableRequestTask_0
    156          
    157                  // Turn off?
    158                  if (mrxInfo.rxEnableOnDuration == 0) {
   \   000011   90....       MOV     DPTR,#(mrxInfo + 16)
   \   000014   78..         MOV     R0,#?V0 + 0
   \   000016   12....       LCALL   ?L_MOV_X
   \   000019   90....       MOV     DPTR,#__Constant_0
   \   00001C   78..         MOV     R0,#?V0 + 0
   \   00001E   12....       LCALL   ?L_EQ_X
   \   000021   7018         JNZ     ??mrxRxEnableRequestTask_1
    159                      if (mtimCancelCallback(mrxRxEnableRequestOff)) {
   \   000023                ; Setup parameters for call to function mtimCancelCallback
   \   000023   79..         MOV     R1,#(mrxRxEnableRequestOff & 0xff)
   \   000025   7A..         MOV     R2,#((mrxRxEnableRequestOff >> 8) & 0xff)
   \   000027   7B..         MOV     R3,#((mrxRxEnableRequestOff >> 16) & 0xff)
   \   000029   12....       LCALL   mtimCancelCallback & 0xFFFF
   \   00002C   E9           MOV     A,R1
   \   00002D   6007         JZ      ??mrxRxEnableRequestTask_0
    160                          mrxDecrOnCounter();
   \   00002F                ; Setup parameters for call to function mrxDecrOnCounter
   \   00002F   90....       MOV     DPTR,#(mrxDecrOnCounter & 0xffff)
   \   000032   74..         MOV     A,#((mrxDecrOnCounter >> 16) & 0xff)
   \   000034   8020         SJMP    ??mrxRxEnableRequestTask_2
    161                          status = SUCCESS;
    162                      } else {
    163                          status = INVALID_PARAMETER;
   \                     ??mrxRxEnableRequestTask_0:
   \   000036   75..E8       MOV     ?V0 + 0,#-0x18
   \   000039   8021         SJMP    ??mrxRxEnableRequestTask_3
    164                      }
    165          
    166                  // Turn on + off after timeot?
    167                  } else {
    168          
    169                      // If there's a timer available to turn RX off, then turn it on now
    170                      if (mtimSetCallback(mrxRxEnableRequestOff, (INT32)mrxInfo.rxEnableOnDuration)) {
   \                     ??mrxRxEnableRequestTask_1:
   \   00003B                ; Setup parameters for call to function mtimSetCallback
   \   00003B   78..         MOV     R0,#?V0 + 0
   \   00003D   12....       LCALL   ?PUSH_XSTACK_I_FOUR
   \   000040   79..         MOV     R1,#(mrxRxEnableRequestOff & 0xff)
   \   000042   7A..         MOV     R2,#((mrxRxEnableRequestOff >> 8) & 0xff)
   \   000044   7B..         MOV     R3,#((mrxRxEnableRequestOff >> 16) & 0xff)
   \   000046   12....       LCALL   mtimSetCallback & 0xFFFF
   \   000049   7404         MOV     A,#0x4
   \   00004B   12....       LCALL   ?DEALLOC_XSTACK8
   \   00004E   E9           MOV     A,R1
   \   00004F   6023         JZ      ??mrxRxEnableRequestTask_4
    171                          mrxIncrOnCounter();
   \   000051                ; Setup parameters for call to function mrxIncrOnCounter
   \   000051   90....       MOV     DPTR,#(mrxIncrOnCounter & 0xffff)
   \   000054   74..         MOV     A,#((mrxIncrOnCounter >> 16) & 0xff)
   \                     ??mrxRxEnableRequestTask_2:
   \   000056   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    172                          status = SUCCESS;
   \   000059   75..00       MOV     ?V0 + 0,#0x0
    173          
    174                      } else {
    175                          // Come back later!
    176                          return;
    177                      }
    178                  }
    179          
    180              // Not implemented for beacon-enabled PANs
    181              } else {
    182                  status = INVALID_PARAMETER;
    183              }
    184          
    185              // Remove the task and confirm to the higher layer
    186              mschRemoveTask(pTask->priority, 0);
   \                     ??mrxRxEnableRequestTask_3:
   \   00005C                ; Setup parameters for call to function mschRemoveTask
   \   00005C   7A00         MOV     R2,#0x0
   \   00005E   8E82         MOV     DPL,R6
   \   000060   8F83         MOV     DPH,R7
   \   000062   A3           INC     DPTR
   \   000063   A3           INC     DPTR
   \   000064   A3           INC     DPTR
   \   000065   A3           INC     DPTR
   \   000066   A3           INC     DPTR
   \   000067   A3           INC     DPTR
   \   000068   A3           INC     DPTR
   \   000069   A3           INC     DPTR
   \   00006A   E0           MOVX    A,@DPTR
   \   00006B   F9           MOV     R1,A
   \   00006C   12....       LCALL   mschRemoveTask & 0xFFFF
    187              mlmeRxEnableConfirm(status);
   \   00006F                ; Setup parameters for call to function mlmeRxEnableConfirm
   \   00006F   A9..         MOV     R1,?V0 + 0
   \   000071   12....       LCALL   mlmeRxEnableConfirm & 0xFFFF
    188          
    189          } // mrxRxEnableRequestTask
   \                     ??mrxRxEnableRequestTask_4:
   \   000074   80..         SJMP    ??Subroutine1_0

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   12....       LCALL   mrxpReleasePacket & 0xFFFF
   \                     ??Subroutine1_0:
   \   000003   7F04         MOV     R7,#0x4
   \   000005   02....       LJMP    ?BANKED_LEAVE_XDATA
    190          
    191          
    192          
    193          
    194          //-------------------------------------------------------------------------------------------------------
    195          //  void mrxForceRxOff(void)
    196          //
    197          //  DESCRIPTION:
    198          //      Creates the task that forces RX off at the end of a superframe, if we're not in scan mode.
    199          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    200          void mrxForceRxOff(void) NEAR {
   \                     mrxForceRxOff:
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 0
    201              if (macInfo.state & MAC_STATE_SCAN_BM) return;
   \   000005   90....       MOV     DPTR,#macInfo
   \   000008   E0           MOVX    A,@DPTR
   \   000009   A2E6         MOV     C,0xE0 /* A   */.6

⌨️ 快捷键说明

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