📄 mac_indirect_polling.s51
字号:
CFI EndBlock cfiBlock5
RSEG NEAR_CODE:CODE:NOROOT(0)
mipDataRequestTimeout:
CFI Block cfiBlock6 Using cfiCommon1
CFI Function mipDataRequestTimeout
FUNCALL mipDataRequestTimeout, mschReserveTask
LOCFRAME ISTACK, 1, STACK
LOCFRAME XSTACK, 14, STACK
ARGFRAME ISTACK, 1, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL mipDataRequestTimeout, mschAddTask
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL mipDataRequestTimeout, mtimSetCallback
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
MOV A,#-0xb
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 V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
; Saved register size: 11
; Auto size: 0
; Setup parameters for call to function mschAddTask
MOV ?V0 + 0,#(mipDataRequestTimeoutTask & 0xff)
MOV ?V0 + 1,#((mipDataRequestTimeoutTask >> 8) & 0xff)
MOV ?V0 + 2,#((mipDataRequestTimeoutTask >> 16) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV R2,#0x2
MOV A,R2
PUSH A
CFI CFA_SP SP+-1
; Setup parameters for call to function mschReserveTask
LCALL mschReserveTask & 0xFFFF
CLR A
MOV R4,A
MOV R5,A
POP A
CFI CFA_SP SP+0
MOV R2,A
LCALL mschAddTask & 0xFFFF
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
MOV A,R1
JNZ ??mipDataRequestTimeout_0
; Setup parameters for call to function mtimSetCallback
MOV DPTR,#__Constant_a
LCALL ?PUSH_XSTACK8_X_FOUR
CFI CFA_XSP16 add(XSP16, 15)
MOV R1,#(mipDataRequestTimeout & 0xff)
MOV R2,#((mipDataRequestTimeout >> 8) & 0xff)
MOV R3,#((mipDataRequestTimeout >> 16) & 0xff)
LCALL mtimSetCallback & 0xFFFF
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
CFI EndBlock cfiBlock6
??mipDataRequestTimeout_0:
REQUIRE ?Subroutine2
; // Fall through to label ?Subroutine2
RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiBlock7 Using cfiCommon1
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
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(-11)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 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,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock7
RSEG NEAR_CODE:CODE:NOROOT(0)
mipCancelDataRequestTimeout:
CFI Block cfiBlock8 Using cfiCommon1
CFI Function mipCancelDataRequestTimeout
FUNCALL mipCancelDataRequestTimeout, mtimCancelCallback
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL mipCancelDataRequestTimeout, mrxDecrOnCounter
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL mipCancelDataRequestTimeout, macSetState
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 R6,#0x0
; Setup parameters for call to function mtimCancelCallback
MOV R1,#(mipDataRequestTimeout & 0xff)
MOV R2,#((mipDataRequestTimeout >> 8) & 0xff)
MOV R3,#((mipDataRequestTimeout >> 16) & 0xff)
LCALL mtimCancelCallback & 0xFFFF
MOV A,R1
JZ ??mipCancelDataRequestTimeout_0
; Setup parameters for call to function mrxDecrOnCounter
MOV DPTR,#(mrxDecrOnCounter & 0xffff)
MOV A,#((mrxDecrOnCounter >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
CLR 0xa8.7
MOV DPTR,#macInfo
MOVX A,@DPTR
MOV R6,A
; Setup parameters for call to function macSetState
MOV R1,#0x0
LCALL macSetState & 0xFFFF
SETB 0xa8.7
??mipCancelDataRequestTimeout_0:
MOV A,R6
MOV R1,A
SJMP ?Subroutine1
CFI EndBlock cfiBlock8
// 299
// 300
// 301
// 302
// 303 //-------------------------------------------------------------------------------------------------------
// 304 // void mipPollAssociateResponseTask(MAC_TASK_INFO *pTask)
// 305 //
// 306 // DESCRIPTION:
// 307 // This task makes sure that a data request is transmitted in the association procedure. If the
// 308 // transmission couldn't be initiated, this task will be rescheduled.
// 309 //
// 310 // TASK DATA:
// 311 // 0
// 312 //-------------------------------------------------------------------------------------------------------
RSEG NEAR_CODE:CODE:NOROOT(0)
// 313 void mipPollAssociateResponseTask(MAC_TASK_INFO *pTask) NEAR {
mipPollAssociateResponseTask:
CFI Block cfiBlock9 Using cfiCommon1
CFI Function mipPollAssociateResponseTask
FUNCALL mipPollAssociateResponseTask, mipTransmitAssocDataRequest
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL mipPollAssociateResponseTask, mschRescheduleTask
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL mipPollAssociateResponseTask, mschRemoveTask
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
// 314
// 315 // We should not wait for the association response to be indicated in the beacon pending list, because there's no
// 316 // guarantee that it will ever appear there (the coordinator could for instance be out of resources when the
// 317 // association request is received)! If the association response is not polled, the MAC state machine (macInfo.state)
// 318 // will lock up (and probably the higher layer too).
// 319 if (macInfo.state == MAC_STATE_ASSOC_REQUEST_SENT) {
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x81
JNZ ??mipPollAssociateResponseTask_0
// 320 if (mipTransmitAssocDataRequest() == RESOURCE_SHORTAGE) {
; Setup parameters for call to function mipTransmitAssocDataRequest
LCALL mipTransmitAssocDataRequest & 0xFFFF
MOV A,R1
XRL A,#0x1
JNZ ??mipPollAssociateResponseTask_0
// 321
// 322 // Reschedule this task if there was a lack of resources (TX packet or task)
// 323 mschRescheduleTask(pTask, 0);
; Setup parameters for call to function mschRescheduleTask
MOV R1,#0x0
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
LCALL mschRescheduleTask & 0xFFFF
// 324 return;
SJMP ??mipPollAssociateResponseTask_1
// 325 }
// 326 }
// 327
// 328 // Done! Remove this task
// 329 mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
??mipPollAssociateResponseTask_0:
; Setup parameters for call to function mschRemoveTask
MOV R2,#0x2
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
// 330
// 331 } // mipPollAssociateResponse
??mipPollAssociateResponseTask_1:
LJMP ?Subroutine1
CFI EndBlock cfiBlock9
// 332
// 333
// 334
// 335
// 336 //-------------------------------------------------------------------------------------------------------
// 337 // void mipPollAssociateResponse(void)
// 338 //
// 339 // DESCRIPTION:
// 340 // This timeout function creates the task responsible for polling the association response.
// 341 //-------------------------------------------------------------------------------------------------------
RSEG NEAR_CODE:CODE:NOROOT(0)
// 342 void mipPollAssociateResponse(void) NEAR {
mipPollAssociateResponse:
CFI Block cfiBlock10 Using cfiCommon1
CFI Function mipPollAssociateResponse
FUNCALL mipPollAssociateResponse, mschReserveTask
LOCFRAME ISTACK, 1, STACK
LOCFRAME XSTACK, 14, STACK
ARGFRAME ISTACK, 1, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL mipPollAssociateResponse, mschAddTask
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL mipPollAssociateResponse, mtimSetCallback
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
MOV A,#-0xb
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 V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
; Saved register size: 11
; Auto size: 0
// 343 if (!mschAddTask(mschReserveTask(), MAC_TASK_PRI_LOW, mipPollAssociateResponseTask, 0)) {
; Setup parameters for call to function mschAddTask
MOV ?V0 + 0,#(mipPollAssociateResponseTask & 0xff)
MOV ?V0 + 1,#((mipPollAssociateResponseTask >> 8) & 0xff)
MOV ?V0 + 2,#((mipPollAssociateResponseTask >> 16) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV R2,#0x0
MOV A,R2
PUSH A
CFI CFA_SP SP+-1
; Setup parameters for call to function mschReserveTask
LCALL mschReserveTask & 0xFFFF
CLR A
MOV R4,A
MOV R5,A
POP A
CFI CFA_SP SP+0
MOV R2,A
LCALL mschAddTask & 0xFFFF
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
MOV A,R1
JNZ ??mipPollAssociateResponse_0
// 344 mtimSetCallback(mipPollAssociateResponse, MIP_RETRY_ASSOCIATION_RESPONSE_POLLING_TIMEOUT);
; Setup parameters for call to function mtimSetCallback
MOV DPTR,#__Constant_a
LCALL ?PUSH_XSTACK8_X_FOUR
CFI CFA_XSP16 add(XSP16, 15)
MOV R1,#(mipPollAssociateResponse & 0xff)
MOV R2,#((mipPollAssociateResponse >> 8) & 0xff)
MOV R3,#((mipPollAssociateResponse >> 16) & 0xff)
LCALL mtimSetCallback & 0xFFFF
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
// 345 }
// 346 } // mipPollAssociateResponse
??mipPollAssociateResponse_0:
LJMP ?Subroutine2
CFI EndBlock cfiBlock10
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_a:
DS 4
REQUIRE `?<Initializer for __Constant_a>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_a>`:
DD 10
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DS 1
END
// 347
//
// 789 bytes in segment NEAR_CODE
// 1 byte in segment SFR_AN
// 4 bytes in segment XDATA_I
// 4 bytes in segment XDATA_ID
//
// 789 bytes of CODE memory (+ 4 bytes shared)
// 0 bytes of DATA memory (+ 1 byte shared)
// 0 bytes of XDATA memory (+ 4 bytes shared)
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -