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

📄 mac_tx_engine.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
??mtxFinishTransmission_11:
        ; Setup parameters for call to function mtimSetCallback
        MOV	DPTR,#__Constant_600
        LCALL	?PUSH_XSTACK8_X_FOUR
        CFI CFA_XSP16 add(XSP16, 21)
        SJMP	??mtxFinishTransmission_15
        CFI CFA_XSP16 add(XSP16, 17)
//  169             break;
//  170 #if MAC_OPT_FFD
//  171         case CMD_ASSOCIATION_RESPONSE:
//  172         case CMD_COORDINATOR_REALIGNMENT:
//  173             if (!isMacInternal) mtxCommStatusIndication(pPacket, status);
??mtxFinishTransmission_8:
        MOV	A,R2
        JNZ	??mtxFinishTransmission_3
        ; Setup parameters for call to function mtxCommStatusIndication
        MOV	R1,?V0 + 0
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        LCALL	mtxCommStatusIndication
//  174             break;
//  175 #endif
//  176         case CMD_GTS_REQUEST:
//  177             break;
//  178         default:
//  179             break;
//  180         }
//  181         break;
//  182     }
//  183 
//  184 #if MAC_OPT_FFD
//  185     // Remove the task and the packet
//  186     if (pPacket->txOptions & TX_OPT_INDIRECT) {
??mtxFinishTransmission_3:
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        ADD	A,#0x8
        MOV	?V0 + 0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	?V0 + 1,A
        MOV	A,R6
        ADD	A,#-0x7f
        MOV	DPL,A
        MOV	A,R7
        ADDC	A,#0x0
        MOV	DPH,A
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.2
        JNC	??mtxFinishTransmission_16
//  187         miqSetRequested(pPacket, FALSE);
        ; Setup parameters for call to function miqSetRequested
        MOV	R1,#0x0
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        LCALL	miqSetRequested
//  188         mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_RESERVED_BM | MSCH_KEEP_TASK_IN_PROGRESS_BM);
        ; Setup parameters for call to function mschRemoveTask
        MOV	R2,#0x3
        MOV	DPL,?V0 + 0
        MOV	DPH,?V0 + 1
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	mschRemoveTask
//  189         DISABLE_GLOBAL_INT();
        CLR	0xa8.7
//  190 
//  191         mschAddTask(pTask->taskNumber, MAC_TASK_PRI_MEDIUM, miqRemoveIndirectPacket, (WORD) pPacket);
        ; Setup parameters for call to function mschAddTask
        MOV	?V0 + 0,#(miqRemoveIndirectPacket & 0xff)
        MOV	?V0 + 1,#((miqRemoveIndirectPacket >> 8) & 0xff)
        MOV	?V0 + 2,#((miqRemoveIndirectPacket >> 16) & 0xff)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 20)
        MOV	A,R6
        MOV	R4,A
        MOV	A,R7
        MOV	R5,A
        MOV	R2,#0x1
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	mschAddTask
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 17)
//  192         ENABLE_GLOBAL_INT();
        SETB	0xa8.7
        SJMP	??mtxFinishTransmission_17
//  193     } else {
//  194         mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
??mtxFinishTransmission_16:
        ; Setup parameters for call to function mschRemoveTask
        MOV	R2,#0x2
        MOV	DPL,?V0 + 0
        MOV	DPH,?V0 + 1
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	mschRemoveTask
//  195         mtxpReleasePacket(pPacket);
        ; Setup parameters for call to function mtxpReleasePacket
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        LCALL	mtxpReleasePacket
        CFI EndBlock cfiBlock1
//  196     }
//  197 #else
//  198     // Only direct transmission from a RFD
//  199     mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
//  200     mtxpReleasePacket(pPacket);
//  201 #endif
//  202 
//  203 
//  204 } // mtxFinishTransmission
??mtxFinishTransmission_17:
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 17)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 15)
        MOV	R7,#0x8
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  205 
//  206 
//  207 
//  208 
//  209 //-------------------------------------------------------------------------------------------------------
//  210 //  void mtxCreateStartTask(void)
//  211 //
//  212 //  DESCRIPTION:
//  213 //      Creates the task that starts the transmission of the packet.
//  214 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  215 ROOT void mtxCreateStartTask(void) {
mtxCreateStartTask:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function mtxCreateStartTask
        FUNCALL mtxCreateStartTask, mschAddTask
        LOCFRAME XSTACK, 13, STACK
        ARGFRAME XSTACK, 13, STACK
        MOV	A,#-0xa
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 0
//  216     mschAddTask(mtxInfo.startTxTask, MAC_TASK_PRI_HIGHEST,  mtxStartTransmission, (WORD) mtxInfo.pPacket);
        ; Setup parameters for call to function mschAddTask
        MOV	?V0 + 0,#(mtxStartTransmission & 0xff)
        MOV	?V0 + 1,#((mtxStartTransmission >> 8) & 0xff)
        MOV	?V0 + 2,#((mtxStartTransmission >> 16) & 0xff)
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 13)
        MOV	DPTR,#mtxInfo
        MOVX	A,@DPTR
        MOV	R4,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R5,A
        MOV	R2,#0x3
        MOV	DPTR,#(mtxInfo + 12)
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	mschAddTask
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI EndBlock cfiBlock3
//  217 } // mtxCreateStartTask
        REQUIRE ?Subroutine1
        ; // Fall through to label ?Subroutine1

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        MOV	R7,#0x3
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock4
//  218 
//  219 
//  220 
//  221 

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  222 UINT8 mtxCalcCspTimeout(void) {
mtxCalcCspTimeout:
        CFI Block cfiBlock5 Using cfiCommon1
        CFI Function mtxCalcCspTimeout
        FUNCALL mtxCalcCspTimeout, T2_GET_OVERFLOW_COUNTER
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL mtxCalcCspTimeout, msupCalcCapDuration
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL mtxCalcCspTimeout, T2_GET_OVERFLOW_COUNTER
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL mtxCalcCspTimeout, mbcnGetBeaconMargin
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        MOV	A,#-0x10
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 16)
        ; Saved register size: 16
        ; 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) {
        MOV	DPTR,#mtxInfo
        MOVX	A,@DPTR
        ADD	A,#-0x79
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	A,@DPTR
        JNZ	$+5
        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()) {
        MOV	A,0xc3
        MOV	C,0xE0 /* A   */.5
        JNC	$+5
        LJMP	??mtxCalcCspTimeout_1 & 0xFFFF
//  231             if (mbcnInfo.lastSfSpec.battLifeExt && mtxInfo.pPacket->toCoord) {
        MOV	DPTR,#(mbcnInfo + 9)
        MOVX	A,@DPTR
        JZ	??mtxCalcCspTimeout_2
        MOV	DPTR,#mtxInfo
        MOVX	A,@DPTR
        ADD	A,#-0x7c
        DEC	R0
        DEC	R0
        DEC	R0
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPL,R0
        MOV	DPH,R1

⌨️ 快捷键说明

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