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

📄 mac_indirect_polling.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 4 页
字号:
        ADD	A,#0x3
        MOV	R1,A
        MOV	DPL,?V0 + 0
        MOV	DPH,?V0 + 1
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  158 
//  159     // No further packet payload
//  160 
//  161     // Calculate the packet duration (including ack. and FCS)
//  162     pPacket->duration = msupCalcPacketDuration(pPacket->length, pPacket->txOptions & TX_OPT_ACK_REQ);
        ; Setup parameters for call to function msupCalcPacketDuration
        MOV	A,?V0 + 0
        ADD	A,#-0x7f
        MOV	DPL,A
        MOV	A,?V0 + 1
        ADDC	A,#0x0
        MOV	DPH,A
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.0
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	R2,A
        LCALL	msupCalcPacketDuration
        MOV	A,?V0 + 0
        ADD	A,#-0x7b
        MOV	DPL,A
        MOV	A,?V0 + 1
        ADDC	A,#0x0
        MOV	DPH,A
        MOV	A,R1
        MOVX	@DPTR,A
//  163 
//  164     // Initiate the transmission
//  165     mschAddTask(taskNumber, MAC_TASK_PRI_LOW, mtxScheduleTransmission, (WORD) pPacket);
        ; Setup parameters for call to function mschAddTask
        MOV	?V0 + 4,#(mtxScheduleTransmission & 0xff)
        MOV	?V0 + 5,#((mtxScheduleTransmission >> 8) & 0xff)
        MOV	?V0 + 6,#((mtxScheduleTransmission >> 16) & 0xff)
        MOV	R0,#?V0 + 4
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 18)
        MOV	R4,?V0 + 0
        MOV	R5,?V0 + 1
        MOV	R2,#0x0
        MOV	R1,?V0 + 2
        LCALL	mschAddTask
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 15)
//  166 
//  167     return SUCCESS;
        MOV	R1,#0x0
??mipTransmitDataRequest_3:
        MOV	R7,#0x8
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  168 
//  169 } // mipTransmitDataRequest
//  170 
//  171 
//  172 
//  173 
//  174 /*******************************************************************************************************
//  175  *******************************************************************************************************
//  176  **************************               DATA REQUEST TIMEOUT                **************************
//  177  *******************************************************************************************************
//  178  *******************************************************************************************************/
//  179 
//  180 
//  181 
//  182 
//  183 //-------------------------------------------------------------------------------------------------------
//  184 //  void mipDataRequestTimeoutTask(MAC_TASK_INFO *pTask)
//  185 //
//  186 //  DESCRIPTION:
//  187 //      This task is run when no valid response has been received after a data request. The task makes
//  188 //      the callback to the higher layer.
//  189 //
//  190 //  TASK DATA:
//  191 //      0
//  192 //-------------------------------------------------------------------------------------------------------
//  193 void mipDataRequestTimeoutTask(MAC_TASK_INFO *pTask) NEAR {
//  194     MAC_STATE_TYPE oldState;
//  195 
//  196     // The data request has failed, so stop listening
//  197     mrxDecrOnCounter();
//  198     oldState = macInfo.state;
//  199     macSetState(MAC_STATE_DEFAULT);
//  200 
//  201     // Remove the task
//  202     mschRemoveTask(pTask->priority, 0);
//  203 
//  204     // Notify the higher layer...
//  205     switch (oldState) {
//  206     case MAC_STATE_MANUAL_DATA_REQUEST_SENT: mlmePollConfirm(NO_DATA); break;
//  207     case MAC_STATE_ASSOC_DATA_REQUEST_SENT:  mlmeAssociateConfirm(0xFFFF, NO_DATA); break;
//  208     default: break;
//  209     }
//  210 
//  211 } // mipDataRequestTimeoutTask
//  212 
//  213 
//  214 
//  215 
//  216 //-------------------------------------------------------------------------------------------------------
//  217 //  void mipDataRequestTimeout(void)
//  218 //
//  219 //  DESCRIPTION:
//  220 //      This timeout will occur when no response has been received after a data request.
//  221 //-------------------------------------------------------------------------------------------------------
//  222 void mipDataRequestTimeout(void) NEAR {
//  223     if (!mschAddTask(mschReserveTask(), MAC_TASK_PRI_HIGH, mipDataRequestTimeoutTask, 0)) {
//  224         mtimSetCallback(mipDataRequestTimeout, 10);
//  225     }
//  226 } // mipDataRequestTimeout
//  227 
//  228 
//  229 
//  230 
//  231 //-------------------------------------------------------------------------------------------------------
//  232 //  MAC_STATE_TYPE mipCancelDataRequestTimeout(void)
//  233 //
//  234 //  DESCRIPTION:
//  235 //      Cancels the data request timeout. This function should be used when a valid or invalid "indirect
//  236 //      packet" has been received. The MAC state is set back to the default state.
//  237 //
//  238 //  RETURN VALUE:
//  239 //      MAC_STATE_TYPE
//  240 //          The MAC state before resetting it to MAC_STATE_DEFAULT
//  241 //-------------------------------------------------------------------------------------------------------
//  242 MAC_STATE_TYPE mipCancelDataRequestTimeout(void) NEAR {
//  243     MAC_STATE_TYPE macState = MAC_STATE_DEFAULT;
//  244 
//  245     if (mtimCancelCallback(mipDataRequestTimeout)) {
//  246         mrxDecrOnCounter();
//  247         DISABLE_GLOBAL_INT();
//  248         macState = macInfo.state;
//  249         macSetState(MAC_STATE_DEFAULT);
//  250         ENABLE_GLOBAL_INT();
//  251     }
//  252     return macState;
//  253 } // mipCancelDataRequestTimeout
//  254 
//  255 
//  256 
//  257 
//  258 /*******************************************************************************************************
//  259  *******************************************************************************************************
//  260  **************************           ASSOCIATION RESPONSE POLLING            **************************
//  261  *******************************************************************************************************
//  262  *******************************************************************************************************/
//  263 
//  264 
//  265 
//  266 
//  267 //-------------------------------------------------------------------------------------------------------
//  268 //  MAC_ENUM mipTransmitAssocDataRequest(void)
//  269 //
//  270 //  DESCRIPTION:
//  271 //      Tranmits an the data request packet that follows a successful association request packet. This
//  272 //      packet is transmitted when the data is indicated in the beacon pending list, or the response
//  273 //      time has passed.
//  274 //
//  275 //  RETURN VALUE:
//  276 //      BOOL
//  277 //          The association request was transmitted
//  278 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  279 ROOT MAC_ENUM mipTransmitAssocDataRequest(void) {
mipTransmitAssocDataRequest:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function mipTransmitAssocDataRequest
        FUNCALL mipTransmitAssocDataRequest, macSetState
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        FUNCALL mipTransmitAssocDataRequest, mipTransmitDataRequest
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL mipTransmitAssocDataRequest, mipTransmitDataRequest
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x8
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 0
//  280     BOOL securityEnable;
//  281 
//  282 #if MAC_OPT_SECURITY
//  283     securityEnable = GET_MF(MF_SECURE_ASSOC);
//  284 #else
//  285     securityEnable = FALSE;
//  286 #endif
//  287 
//  288     // Set automatic polling mode
//  289     if (!macSetState(MAC_STATE_TX_ASSOC_DATA_REQUEST)) return SUCCESS;
        ; Setup parameters for call to function macSetState
        MOV	R1,#0x12
        LCALL	macSetState
        MOV	A,R1
        JNZ	??mipTransmitAssocDataRequest_0
        MOV	R1,#0x0
        SJMP	??mipTransmitAssocDataRequest_1
//  290 
//  291     // Transmit the data request
//  292     if (mpib.macCoordShortAddress < 0xFFFE) {
??mipTransmitAssocDataRequest_0:
        MOV	DPTR,#(mpib + 28)
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPTR,#(mpib + 22)
        CLR	C
        MOVX	A,@DPTR
        SUBB	A,#-0x2
        INC	DPTR
        MOVX	A,@DPTR
        SUBB	A,#-0x1
        MOV	?V0 + 0,#0x0
        MOV	R0,#?V0 + 0
        JNC	??mipTransmitAssocDataRequest_2
//  293         return mipTransmitDataRequest(AM_SHORT_16, mpib.macPANId, (ADDRESS   *) &mpib.macCoordShortAddress, securityEnable);
        ; Setup parameters for call to function mipTransmitDataRequest
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 9)
        MOV	R4,#((mpib + 22) & 0xff)
        MOV	R5,#(((mpib + 22) >> 8) & 0xff)
        MOV	R1,#0x2
        SJMP	??mipTransmitAssocDataRequest_3
        CFI CFA_XSP16 add(XSP16, 8)
//  294     } else {
//  295         return mipTransmitDataRequest(AM_EXTENDED_64, mpib.macPANId, (ADDRESS   *) mpib.pMacCoordExtendedAddress, securityEnable);
??mipTransmitAssocDataRequest_2:
        ; Setup parameters for call to function mipTransmitDataRequest
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 9)
        MOV	R4,#((mpib + 14) & 0xff)
        MOV	R5,#(((mpib + 14) >> 8) & 0xff)
        MOV	R1,#0x3
??mipTransmitAssocDataRequest_3:
        LCALL	mipTransmitDataRequest
        MOV	A,#0x1
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 8)
??mipTransmitAssocDataRequest_1:
        LJMP	?Subroutine0
        CFI EndBlock cfiBlock3
//  296     }
//  297 
//  298 } // mipTransmitAssocDataRequest

        RSEG NEAR_CODE:CODE:NOROOT(0)
mipDataRequestTimeoutTask:
        CFI Block cfiBlock4 Using cfiCommon1
        CFI Function mipDataRequestTimeoutTask
        FUNCALL mipDataRequestTimeoutTask, mrxDecrOnCounter
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL mipDataRequestTimeoutTask, macSetState
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL mipDataRequestTimeoutTask, mschRemoveTask
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL mipDataRequestTimeoutTask, mlmePollConfirm
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL mipDataRequestTimeoutTask, mlmeAssociateConfirm
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
        ; Setup parameters for call to function mrxDecrOnCounter
        MOV	DPTR,#(mrxDecrOnCounter & 0xffff)
        MOV	A,#((mrxDecrOnCounter >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	DPTR,#macInfo
        MOVX	A,@DPTR
        MOV	?V0 + 0,A
        ; Setup parameters for call to function macSetState
        MOV	R1,#0x0
        LCALL	macSetState & 0xFFFF
        ; Setup parameters for call to function mschRemoveTask
        MOV	R2,#0x0
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	mschRemoveTask & 0xFFFF
        MOV	A,?V0 + 0
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for mipDataRequestTimeoutTask>_0`:
        DB        33
        DB        1
        DW        ??mipDataRequestTimeoutTask_0
        DW        ??mipDataRequestTimeoutTask_1
        DW        ??mipDataRequestTimeoutTask_2
??mipDataRequestTimeoutTask_1:
        ; Setup parameters for call to function mlmePollConfirm
        MOV	R1,#-0x15
        LCALL	mlmePollConfirm & 0xFFFF
        SJMP	??mipDataRequestTimeoutTask_0
??mipDataRequestTimeoutTask_2:
        ; Setup parameters for call to function mlmeAssociateConfirm
        MOV	R1,#-0x15
        MOV	R2,#-0x1
        MOV	R3,#-0x1
        LCALL	mlmeAssociateConfirm & 0xFFFF
        CFI EndBlock cfiBlock4
??mipDataRequestTimeoutTask_0:
        REQUIRE ?Subroutine1
        ; // Fall through to label ?Subroutine1

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiBlock5 Using cfiCommon1
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        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(-9)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        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)))
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA

⌨️ 快捷键说明

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