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

📄 mac_tx_engine.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \                     mtxCreateStartTask:
   \   000000   74F6         MOV     A,#-0xa
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 10
   \   000005                ; Auto size: 0
    216              mschAddTask(mtxInfo.startTxTask, MAC_TASK_PRI_HIGHEST,  mtxStartTransmission, (WORD) mtxInfo.pPacket);
   \   000005                ; Setup parameters for call to function mschAddTask
   \   000005   75....       MOV     ?V0 + 0,#(mtxStartTransmission & 0xff)
   \   000008   75....       MOV     ?V0 + 1,#((mtxStartTransmission >> 8) & 0xff)
   \   00000B   75....       MOV     ?V0 + 2,#((mtxStartTransmission >> 16) & 0xff)
   \   00000E   78..         MOV     R0,#?V0 + 0
   \   000010   12....       LCALL   ?PUSH_XSTACK_I_THREE
   \   000013   90....       MOV     DPTR,#mtxInfo
   \   000016   E0           MOVX    A,@DPTR
   \   000017   FC           MOV     R4,A
   \   000018   A3           INC     DPTR
   \   000019   E0           MOVX    A,@DPTR
   \   00001A   FD           MOV     R5,A
   \   00001B   7A03         MOV     R2,#0x3
   \   00001D   90....       MOV     DPTR,#(mtxInfo + 12)
   \   000020   E0           MOVX    A,@DPTR
   \   000021   F9           MOV     R1,A
   \   000022   12....       LCALL   mschAddTask
   \   000025   7403         MOV     A,#0x3
   \   000027   12....       LCALL   ?DEALLOC_XSTACK8
    217          } // mtxCreateStartTask
   \   00002A                REQUIRE ?Subroutine1
   \   00002A                ; // Fall through to label ?Subroutine1

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   7F03         MOV     R7,#0x3
   \   000002   02....       LJMP    ?FUNC_LEAVE_XDATA
    218          
    219          
    220          
    221          

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    222          UINT8 mtxCalcCspTimeout(void) {
   \                     mtxCalcCspTimeout:
   \   000000   74F0         MOV     A,#-0x10
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 16
   \   000005                ; Auto size: 0
    223              INT32 bosLeft;
    224          
    225              // Calculate the number of FULL backoff slots left in the CAP, when transmission, ack and IFS is taken into consideration
    226              if (!mtxInfo.pPacket->slotted) {
   \   000005   90....       MOV     DPTR,#mtxInfo
   \   000008   E0           MOVX    A,@DPTR
   \   000009   2487         ADD     A,#-0x79
   \   00000B   F8           MOV     R0,A
   \   00000C   A3           INC     DPTR
   \   00000D   E0           MOVX    A,@DPTR
   \   00000E   3400         ADDC    A,#0x0
   \   000010   F9           MOV     R1,A
   \   000011   8882         MOV     DPL,R0
   \   000013   8983         MOV     DPH,R1
   \   000015   E0           MOVX    A,@DPTR
   \   000016   7003         JNZ     $+5
   \   000018   02....       LJMP    ??mtxCalcCspTimeout_0 & 0xFFFF
    227                  // Set bosLeft high enough to avoid CSP timeout
    228                  bosLeft = CSP_TIMEOUT_RUN_FOREVER;
    229              } else {
    230                  if (T2_IS_CAP_ACTIVE()) {
   \   00001B   E5C3         MOV     A,0xc3
   \   00001D   A2E5         MOV     C,0xE0 /* A   */.5
   \   00001F   5003         JNC     $+5
   \   000021   02....       LJMP    ??mtxCalcCspTimeout_1 & 0xFFFF
    231                      if (mbcnInfo.lastSfSpec.battLifeExt && mtxInfo.pPacket->toCoord) {
   \   000024   90....       MOV     DPTR,#(mbcnInfo + 9)
   \   000027   E0           MOVX    A,@DPTR
   \   000028   604D         JZ      ??mtxCalcCspTimeout_2
   \   00002A   90....       MOV     DPTR,#mtxInfo
   \   00002D   E0           MOVX    A,@DPTR
   \   00002E   2484         ADD     A,#-0x7c
   \   000030   18           DEC     R0
   \   000031   18           DEC     R0
   \   000032   18           DEC     R0
   \   000033   A3           INC     DPTR
   \   000034   E0           MOVX    A,@DPTR
   \   000035   3400         ADDC    A,#0x0
   \   000037   F9           MOV     R1,A
   \   000038   8882         MOV     DPL,R0
   \   00003A   8983         MOV     DPH,R1
   \   00003C   E0           MOVX    A,@DPTR
   \   00003D   6038         JZ      ??mtxCalcCspTimeout_2
    232                          //        <----------------- The CAP duration -----------------> - <--------- Used CAP ----------> - <---- Overhead ----->
    233                          bosLeft = (mbcnInfo.beaconDuration + mpib.macBattLifeExtPeriods) - (T2_GET_OVERFLOW_COUNTER() + 1) - (MTX_START_CSP_DELAY);
   \   00003F   90....       MOV     DPTR,#(mbcnInfo + 4)
   \   000042   E0           MOVX    A,@DPTR
   \   000043   F8           MOV     R0,A
   \   000044   90....       MOV     DPTR,#(mpib + 4)
   \   000047   E0           MOVX    A,@DPTR
   \   000048   28           ADD     A,R0
   \   000049   F5..         MOV     ?V0 + 4,A
   \   00004B   E4           CLR     A
   \   00004C   3400         ADDC    A,#0x0
   \   00004E   F5..         MOV     ?V0 + 5,A
   \   000050   75..00       MOV     ?V0 + 6,#0x0
   \   000053   75..00       MOV     ?V0 + 7,#0x0
   \   000056                ; Setup parameters for call to function T2_GET_OVERFLOW_COUNTER
   \   000056   90....       MOV     DPTR,#(T2_GET_OVERFLOW_COUNTER & 0xffff)
   \   000059   74..         MOV     A,#((T2_GET_OVERFLOW_COUNTER >> 16) & 0xff)
   \   00005B   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00005E   8A..         MOV     ?V0 + 0,R2
   \   000060   8B..         MOV     ?V0 + 1,R3
   \   000062   8C..         MOV     ?V0 + 2,R4
   \   000064   8D..         MOV     ?V0 + 3,R5
   \   000066   78..         MOV     R0,#?V0 + 4
   \   000068   79..         MOV     R1,#?V0 + 0
   \   00006A   12....       LCALL   ?L_SUB
   \   00006D   90....       MOV     DPTR,#__Constant_fffffffd
   \   000070   78..         MOV     R0,#?V0 + 4
   \   000072   12....       LCALL   ?L_ADD_X
   \   000075   8069         SJMP    ??mtxCalcCspTimeout_3
    234                      } else {
    235                          //        <- The CAP duration > - <--------- Used CAP ----------> - <------------- Overhead + duration -------------> - <-- Beacon margin -->
    236                          bosLeft = msupCalcCapDuration() - (T2_GET_OVERFLOW_COUNTER() + 1) - (MTX_START_CSP_DELAY + mtxInfo.pPacket->duration) - mbcnGetBeaconMargin();
   \                     ??mtxCalcCspTimeout_2:
   \   000077                ; Setup parameters for call to function msupCalcCapDuration
   \   000077   12....       LCALL   msupCalcCapDuration & 0xFFFF
   \   00007A   8A..         MOV     ?V0 + 4,R2
   \   00007C   8B..         MOV     ?V0 + 5,R3
   \   00007E   8C..         MOV     ?V0 + 6,R4
   \   000080   8D..         MOV     ?V0 + 7,R5
   \   000082                ; Setup parameters for call to function T2_GET_OVERFLOW_COUNTER
   \   000082   90....       MOV     DPTR,#(T2_GET_OVERFLOW_COUNTER & 0xffff)
   \   000085   74..         MOV     A,#((T2_GET_OVERFLOW_COUNTER >> 16) & 0xff)
   \   000087   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00008A   8A..         MOV     ?V0 + 0,R2
   \   00008C   8B..         MOV     ?V0 + 1,R3
   \   00008E   8C..         MOV     ?V0 + 2,R4
   \   000090   8D..         MOV     ?V0 + 3,R5
   \   000092                ; Setup parameters for call to function mbcnGetBeaconMargin
   \   000092   90....       MOV     DPTR,#(mbcnGetBeaconMargin & 0xffff)
   \   000095   74..         MOV     A,#((mbcnGetBeaconMargin >> 16) & 0xff)
   \   000097   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00009A   E9           MOV     A,R1
   \   00009B   FA           MOV     R2,A
   \   00009C   78..         MOV     R0,#?V0 + 4
   \   00009E   79..         MOV     R1,#?V0 + 0
   \   0000A0   12....       LCALL   ?L_SUB
   \   0000A3   90....       MOV     DPTR,#__Constant_ffffffff
   \   0000A6   78..         MOV     R0,#?V0 + 4
   \   0000A8   12....       LCALL   ?L_ADD_X
   \   0000AB   90....       MOV     DPTR,#mtxInfo
   \   0000AE   E0           MOVX    A,@DPTR
   \   0000AF   2485         ADD     A,#-0x7b
   \   0000B1   F8           MOV     R0,A
   \   0000B2   A3           INC     DPTR
   \   0000B3   E0           MOVX    A,@DPTR
   \   0000B4   3400         ADDC    A,#0x0
   \   0000B6   F9           MOV     R1,A
   \   0000B7   8882         MOV     DPL,R0
   \   0000B9   8983         MOV     DPH,R1
   \   0000BB   E0           MOVX    A,@DPTR
   \   0000BC   F8           MOV     R0,A
   \   0000BD   7402         MOV     A,#0x2
   \   0000BF   28           ADD     A,R0
   \   0000C0   F5..         MOV     ?V0 + 0,A
   \   0000C2   E4           CLR     A
   \   0000C3   3400         ADDC    A,#0x0
   \   0000C5   F5..         MOV     ?V0 + 1,A
   \   0000C7   75..00       MOV     ?V0 + 2,#0x0
   \   0000CA   75..00       MOV     ?V0 + 3,#0x0
   \   0000CD   78..         MOV     R0,#?V0 + 4
   \   0000CF   79..         MOV     R1,#?V0 + 0
   \   0000D1   12....       LCALL   ?L_SUB
   \   0000D4   8A..         MOV     ?V0 + 0,R2
   \   0000D6   75..00       MOV     ?V0 + 1,#0x0
   \   0000D9   78..         MOV     R0,#?V0 + 4
   \   0000DB   79..         MOV     R1,#?V0 + 0
   \   0000DD   12....       LCALL   ?L_SUB
    237                      }
    238                  } else
    239                      bosLeft = 0;
    240              }
    241          
    242              // Calculate the CSP timeout
    243              if (bosLeft >= CSP_TIMEOUT_RUN_FOREVER) {
   \                     ??mtxCalcCspTimeout_3:
   \   0000E0   90....       MOV     DPTR,#__Constant_ff
   \   0000E3   78..         MOV     R0,#?V0 + 0
   \   0000E5   12....       LCALL   ?L_MOV_X
   \   0000E8   78..         MOV     R0,#?V0 + 0
   \   0000EA   79..         MOV     R1,#?V0 + 4
   \   0000EC   12....       LCALL   ?SL_GT
   \   0000EF   4004         JC      ??mtxCalcCspTimeout_4
    244                  return CSP_TIMEOUT_RUN_FOREVER;
   \                     ??mtxCalcCspTimeout_0:
   \   0000F1   79FF         MOV     R1,#-0x1
   \   0000F3   8017         SJMP    ??mtxCalcCspTimeout_5
    245              } else if (bosLeft < 1) {
   \                     ??mtxCalcCspTimeout_4:
   \   0000F5   90....       MOV     DPTR,#__Constant_1
   \   0000F8   78..         MOV     R0,#?V0 + 0
   \   0000FA   12....       LCALL   ?L_MOV_X
   \   0000FD   78..         MOV     R0,#?V0 + 0
   \   0000FF   79..         MOV     R1,#?V0 + 4
   \   000101   12....       LCALL   ?SL_GT
   \   000104   5004         JNC     ??mtxCalcCspTimeout_6
    246                  return CSP_TIMEOUT_STOP;
   \                     ??mtxCalcCspTimeout_1:
   \   000106   7900         MOV     R1,#0x0
   \   000108   8002         SJMP    ??mtxCalcCspTimeout_5
    247              } else {
    248                  return (UINT8) bosLeft;
   \                     ??mtxCalcCspTimeout_6:
   \   00010A   A9..         MOV     R1,?V0 + 4
   \                     ??mtxCalcCspTimeout_5:
   \   00010C   7F08         MOV     R7,#0x8
   \   00010E   02....       LJMP    ?BANKED_LEAVE_XDATA
    249              }
    250          
    251          } // mtxCalcCspTimeout
    252          
    253          
    254          
    255          
    256          //-------------------------------------------------------------------------------------------------------
    257          //  void mtxResumeAfterBeacon(void)
    258          //
    259          //  DESCRIPTION:
    260          //      Resumes transmission after the beacon has been received, if there is a sufficient number of
    261          //      backoff slot left in the CAP.
    262          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    263          void mtxResumeAfterBeaconCallback(void) NEAR { mschAddTask(mschReserveTask(), MAC_TASK_PRI_HIGH, mtxResumeAfterBeaconTask, NULL); }
   \                     mtxResumeAfterBeaconCallback:
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 11

⌨️ 快捷键说明

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