📄 mac_backoff_timer.s51
字号:
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
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV ?V0 + 2,R4
MOV ?V0 + 3,R5
// 308 halIntState_t s;
// 309
// 310 MAC_ASSERT(triggerBackoff < backoffTimerRollover); /* trigger backoff must be less than rollover backoff */
MOV DPTR,#??backoffTimerRollover
MOV R0,#?V0 + 4
LCALL ?L_MOV_X
MOV R0,#?V0 + 4
MOV R1,#?V0 + 0
LCALL ?UL_GT
JC ??macBackoffTimerSetTrigger_0
; Setup parameters for call to function halAssertHandler
MOV DPTR,#(halAssertHandler & 0xffff)
MOV A,#((halAssertHandler >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 311
// 312 HAL_ENTER_CRITICAL_SECTION(s);
??macBackoffTimerSetTrigger_0:
MOV C,0xa8.7
CLR A
MOV 0xE0 /* A */.0,C
MOV R6,A
CLR 0xa8.7
// 313 backoffTimerTrigger = triggerBackoff;
MOV DPTR,#??backoffTimerTrigger
MOV R0,#?V0 + 0
LCALL ?L_MOV_TO_X
// 314 if (triggerBackoff > MAC_RADIO_BACKOFF_COUNT())
; Setup parameters for call to function macMcuOverflowCount
MOV DPTR,#(macMcuOverflowCount & 0xffff)
MOV A,#((macMcuOverflowCount >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 4,R2
MOV ?V0 + 5,R3
MOV ?V0 + 6,R4
MOV ?V0 + 7,R5
MOV R0,#?V0 + 0
MOV R1,#?V0 + 4
LCALL ?UL_GT
JNC ??macBackoffTimerSetTrigger_1
// 315 {
// 316 compareState = COMPARE_STATE_TRIGGER;
MOV A,#0x2
MOV DPTR,#??compareState
MOVX @DPTR,A
// 317 MAC_RADIO_BACKOFF_SET_COMPARE(triggerBackoff);
; Setup parameters for call to function macMcuOverflowSetCompare
SJMP ??macBackoffTimerSetTrigger_2
// 318 }
// 319 else
// 320 {
// 321 if (triggerBackoff == 0)
??macBackoffTimerSetTrigger_1:
MOV DPTR,#__Constant_0
MOV R0,#?V0 + 0
LCALL ?L_EQ_X
JNZ ??macBackoffTimerSetTrigger_3
// 322 {
// 323 compareState = COMPARE_STATE_ROLLOVER_AND_TRIGGER;
MOV A,#0x3
SJMP ??macBackoffTimerSetTrigger_4
// 324 }
// 325 else
// 326 {
// 327 compareState = COMPARE_STATE_ROLLOVER_AND_ARM_TRIGGER;
??macBackoffTimerSetTrigger_3:
MOV A,#0x5
??macBackoffTimerSetTrigger_4:
LCALL ??Subroutine0_0 & 0xFFFF
// 328 }
// 329 MAC_RADIO_BACKOFF_SET_COMPARE(backoffTimerRollover);
??CrossCallReturnLabel_2:
LCALL ?L_MOV_X
??macBackoffTimerSetTrigger_2:
LJMP ?Subroutine2 & 0xFFFF
CFI EndBlock cfiBlock8
// 330 }
// 331 HAL_EXIT_CRITICAL_SECTION(s);
// 332 }
// 333
// 334
// 335 /**************************************************************************************************
// 336 * @fn macBackoffTimerCancelTrigger
// 337 *
// 338 * @brief Cancels the trigger for the backoff counter.
// 339 *
// 340 * @param none
// 341 *
// 342 * @return none
// 343 **************************************************************************************************
// 344 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 345 void macBackoffTimerCancelTrigger(void)
macBackoffTimerCancelTrigger:
CFI Block cfiBlock9 Using cfiCommon0
CFI Function macBackoffTimerCancelTrigger
// 346 {
FUNCALL macBackoffTimerCancelTrigger, macMcuOverflowSetCompare
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xc
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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 0
// 347 halIntState_t s;
// 348
// 349 HAL_ENTER_CRITICAL_SECTION(s);
MOV C,0xa8.7
CLR A
MOV 0xE0 /* A */.0,C
MOV R6,A
CLR 0xa8.7
// 350 compareState = COMPARE_STATE_ROLLOVER;
LCALL ?Subroutine0 & 0xFFFF
// 351 MAC_RADIO_BACKOFF_SET_COMPARE(backoffTimerRollover);
??CrossCallReturnLabel_0:
LCALL ?L_MOV_X
MOV R2,?V0 + 0
MOV R3,?V0 + 1
MOV R4,?V0 + 2
MOV R5,?V0 + 3
MOV DPTR,#(macMcuOverflowSetCompare & 0xffff)
MOV A,#((macMcuOverflowSetCompare >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 352 HAL_EXIT_CRITICAL_SECTION(s);
MOV A,R6
MOV C,0xE0 /* A */.0
MOV 0xa8.7,C
CFI EndBlock cfiBlock9
// 353 }
REQUIRE ?Subroutine1
; // Fall through to label ?Subroutine1
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiBlock10 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
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(-12)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 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,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock10
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiCond11 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_0
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond12 Using cfiCommon0
CFI (cfiCond12) NoFunction
CFI (cfiCond12) Conditional ??CrossCallReturnLabel_1
CFI (cfiCond12) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond12) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond12) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond12) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond12) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond12) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond12) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond12) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond12) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond12) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond12) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond12) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond12) CFA_SP SP+0
CFI (cfiCond12) CFA_XSP16 add(XSP16, 12)
CFI Block cfiPicker13 Using cfiCommon1
CFI (cfiPicker13) NoFunction
CFI (cfiPicker13) Picker
MOV A,#0x1
CFI Block cfiCond14 Using cfiCommon0
CFI (cfiCond14) NoFunction
CFI (cfiCond14) Conditional ??CrossCallReturnLabel_2
CFI (cfiCond14) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI (cfiCond14) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond14) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond14) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond14) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond14) V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond14) V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond14) V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond14) V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond14) V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond14) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond14) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond14) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond14) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond14) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond14) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond14) CFA_SP SP+0
CFI (cfiCond14) CFA_XSP16 add(XSP16, 16)
??Subroutine0_0:
MOV DPTR,#??compareState
MOVX @DPTR,A
; Setup parameters for call to function macMcuOverflowSetCompare
; Setup parameters for call to function macMcuOverflowSetCompare
; Setup parameters for call to function macMcuOverflowSetCompare
MOV DPTR,#??backoffTimerRollover
MOV R0,#?V0 + 0
RET
CFI EndBlock cfiCond11
CFI EndBlock cfiCond12
CFI EndBlock cfiPicker13
CFI EndBlock cfiCond14
// 354
// 355
// 356 /**************************************************************************************************
// 357 * @fn macBackoffTimerRealign
// 358 *
// 359 * @brief
// 360 *
// 361 * Realignment is accomplished by adjusting the internal time base to align with the expected
// 362 * reception time of an incoming frame. The difference between the expected reception time and
// 363 * the actual reception time is computed and this difference is used to adjust the hardware
// 364 * timer count and backoff count.
// 365 *
// 366 * The realignment is based on the SFD signal for the incoming frame. The timer is aligned
// 367 * by adjusting it with the difference between the expected SFD time and the actual SFD time.
// 368 *
// 369 * @param none
// 370 *
// 371 * @return none
// 372 **************************************************************************************************
// 373 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 374 int32 macBackoffTimerRealign(macRx_t *pMsg)
macBackoffTimerRealign:
CFI Block cfiBlock15 Using cfiCommon0
CFI Function macBackoffTimerRealign
// 375 {
FUNCALL macBackoffTimerRealign, macCspForceTxDoneIfPending
LOCFRAME XSTACK, 20, STACK
ARGFRAME XSTACK, 20, STACK
FUNCALL macBackoffTimerRealign, halAssertHandler
LOCFRAME XSTACK, 20, STACK
ARGFRAME XSTACK, 20, STACK
FUNCALL macBackoffTimerRealign, macMcuOverflowCount
LOCFRAME XSTACK, 20, STACK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -