📄 mac_backoff_timer.lst
字号:
289 uint32 macBackoffTimerGetTrigger(void)
\ macBackoffTimerGetTrigger:
290 {
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 0
291 return(backoffTimerTrigger);
\ 000005 90.... MOV DPTR,#??backoffTimerTrigger
\ 000008 78.. MOV R0,#?V0 + 0
\ 00000A 12.... LCALL ?L_MOV_X
\ 00000D AA.. MOV R2,?V0 + 0
\ 00000F AB.. MOV R3,?V0 + 1
\ 000011 AC.. MOV R4,?V0 + 2
\ 000013 AD.. MOV R5,?V0 + 3
\ 000015 02.... LJMP ?Subroutine1 & 0xFFFF
292 }
293
294
295 /**************************************************************************************************
296 * @fn macBackoffTimerSetTrigger
297 *
298 * @brief Sets the trigger count for the backoff counter. A callback is exectuted when
299 * the backoff count reaches the trigger
300 *
301 * @param triggerBackoff - backoff count for new trigger
302 *
303 * @return none
304 **************************************************************************************************
305 */
\ In segment BANKED_CODE, align 1, keep-with-next
306 void macBackoffTimerSetTrigger(uint32 triggerBackoff)
\ macBackoffTimerSetTrigger:
307 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 0
\ 000005 8A.. MOV ?V0 + 0,R2
\ 000007 8B.. MOV ?V0 + 1,R3
\ 000009 8C.. MOV ?V0 + 2,R4
\ 00000B 8D.. MOV ?V0 + 3,R5
308 halIntState_t s;
309
310 MAC_ASSERT(triggerBackoff < backoffTimerRollover); /* trigger backoff must be less than rollover backoff */
\ 00000D 90.... MOV DPTR,#??backoffTimerRollover
\ 000010 78.. MOV R0,#?V0 + 4
\ 000012 12.... LCALL ?L_MOV_X
\ 000015 78.. MOV R0,#?V0 + 4
\ 000017 79.. MOV R1,#?V0 + 0
\ 000019 12.... LCALL ?UL_GT
\ 00001C 4008 JC ??macBackoffTimerSetTrigger_0
\ 00001E ; Setup parameters for call to function halAssertHandler
\ 00001E 90.... MOV DPTR,#(halAssertHandler & 0xffff)
\ 000021 74.. MOV A,#((halAssertHandler >> 16) & 0xff)
\ 000023 12.... LCALL ?BCALL ; Banked call to: DPTR()
311
312 HAL_ENTER_CRITICAL_SECTION(s);
\ ??macBackoffTimerSetTrigger_0:
\ 000026 A2AF MOV C,0xa8.7
\ 000028 E4 CLR A
\ 000029 92E0 MOV 0xE0 /* A */.0,C
\ 00002B FE MOV R6,A
\ 00002C C2AF CLR 0xa8.7
313 backoffTimerTrigger = triggerBackoff;
\ 00002E 90.... MOV DPTR,#??backoffTimerTrigger
\ 000031 78.. MOV R0,#?V0 + 0
\ 000033 12.... LCALL ?L_MOV_TO_X
314 if (triggerBackoff > MAC_RADIO_BACKOFF_COUNT())
\ 000036 ; Setup parameters for call to function macMcuOverflowCount
\ 000036 90.... MOV DPTR,#(macMcuOverflowCount & 0xffff)
\ 000039 74.. MOV A,#((macMcuOverflowCount >> 16) & 0xff)
\ 00003B 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00003E 8A.. MOV ?V0 + 4,R2
\ 000040 8B.. MOV ?V0 + 5,R3
\ 000042 8C.. MOV ?V0 + 6,R4
\ 000044 8D.. MOV ?V0 + 7,R5
\ 000046 78.. MOV R0,#?V0 + 0
\ 000048 79.. MOV R1,#?V0 + 4
\ 00004A 12.... LCALL ?UL_GT
\ 00004D 5008 JNC ??macBackoffTimerSetTrigger_1
315 {
316 compareState = COMPARE_STATE_TRIGGER;
\ 00004F 7402 MOV A,#0x2
\ 000051 90.... MOV DPTR,#??compareState
\ 000054 F0 MOVX @DPTR,A
317 MAC_RADIO_BACKOFF_SET_COMPARE(triggerBackoff);
\ 000055 ; Setup parameters for call to function macMcuOverflowSetCompare
\ 000055 8016 SJMP ??macBackoffTimerSetTrigger_2
318 }
319 else
320 {
321 if (triggerBackoff == 0)
\ ??macBackoffTimerSetTrigger_1:
\ 000057 90.... MOV DPTR,#__Constant_0
\ 00005A 78.. MOV R0,#?V0 + 0
\ 00005C 12.... LCALL ?L_EQ_X
\ 00005F 7004 JNZ ??macBackoffTimerSetTrigger_3
322 {
323 compareState = COMPARE_STATE_ROLLOVER_AND_TRIGGER;
\ 000061 7403 MOV A,#0x3
\ 000063 8002 SJMP ??macBackoffTimerSetTrigger_4
324 }
325 else
326 {
327 compareState = COMPARE_STATE_ROLLOVER_AND_ARM_TRIGGER;
\ ??macBackoffTimerSetTrigger_3:
\ 000065 7405 MOV A,#0x5
\ ??macBackoffTimerSetTrigger_4:
\ 000067 12.... LCALL ??Subroutine0_0 & 0xFFFF
328 }
329 MAC_RADIO_BACKOFF_SET_COMPARE(backoffTimerRollover);
\ ??CrossCallReturnLabel_2:
\ 00006A 12.... LCALL ?L_MOV_X
\ ??macBackoffTimerSetTrigger_2:
\ 00006D 02.... LJMP ?Subroutine2 & 0xFFFF
330 }
331 HAL_EXIT_CRITICAL_SECTION(s);
332 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 7401 MOV A,#0x1
\ ??Subroutine0_0:
\ 000002 90.... MOV DPTR,#??compareState
\ 000005 F0 MOVX @DPTR,A
\ 000006 ; Setup parameters for call to function macMcuOverflowSetCompare
\ 000006 ; Setup parameters for call to function macMcuOverflowSetCompare
\ 000006 ; Setup parameters for call to function macMcuOverflowSetCompare
\ 000006 90.... MOV DPTR,#??backoffTimerRollover
\ 000009 78.. MOV R0,#?V0 + 0
\ 00000B 22 RET
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 */
\ In segment BANKED_CODE, align 1, keep-with-next
345 void macBackoffTimerCancelTrigger(void)
\ macBackoffTimerCancelTrigger:
346 {
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 0
347 halIntState_t s;
348
349 HAL_ENTER_CRITICAL_SECTION(s);
\ 000005 A2AF MOV C,0xa8.7
\ 000007 E4 CLR A
\ 000008 92E0 MOV 0xE0 /* A */.0,C
\ 00000A FE MOV R6,A
\ 00000B C2AF CLR 0xa8.7
350 compareState = COMPARE_STATE_ROLLOVER;
\ 00000D 12.... LCALL ?Subroutine0 & 0xFFFF
351 MAC_RADIO_BACKOFF_SET_COMPARE(backoffTimerRollover);
\ ??CrossCallReturnLabel_0:
\ 000010 12.... LCALL ?L_MOV_X
\ 000013 AA.. MOV R2,?V0 + 0
\ 000015 AB.. MOV R3,?V0 + 1
\ 000017 AC.. MOV R4,?V0 + 2
\ 000019 AD.. MOV R5,?V0 + 3
\ 00001B 90.... MOV DPTR,#(macMcuOverflowSetCompare & 0xffff)
\ 00001E 74.. MOV A,#((macMcuOverflowSetCompare >> 16) & 0xff)
\ 000020 12.... LCALL ?BCALL ; Banked call to: DPTR()
352 HAL_EXIT_CRITICAL_SECTION(s);
\ 000023 EE MOV A,R6
\ 000024 A2E0 MOV C,0xE0 /* A */.0
\ 000026 92AF MOV 0xa8.7,C
353 }
\ 000028 REQUIRE ?Subroutine1
\ 000028 ; // Fall through to label ?Subroutine1
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 */
\ In segment BANKED_CODE, align 1, keep-with-next
374 int32 macBackoffTimerRealign(macRx_t *pMsg)
\ macBackoffTimerRealign:
375 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 4
\ 000005 74FC MOV A,#-0x4
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A EA MOV A,R2
\ 00000B FE MOV R6,A
\ 00000C EB MOV A,R3
\ 00000D FF MOV R7,A
376 uint16 timerDelayTicks;
377 int32 backoffDelta;
378 int32 backoffCount;
379
380 MAC_ASSERT_STATEMENT( MAC_RADIO_FORCE_TX_DONE_IF_PENDING(); ); /* force TX to complete if just pending */
\ 00000E ; Setup parameters for call to function macCspForceTxDoneIfPending
\ 00000E 90.... MOV DPTR,#(macCspForceTxDoneIfPending & 0xffff)
\ 000011 74.. MOV A,#((macCspForceTxDoneIfPending >> 16) & 0xff)
\ 000013 12.... LCALL ?BCALL ; Banked call to: DPTR()
381 MAC_ASSERT(!MAC_TX_IS_PHYSICALLY_ACTIVE()); /* realignment during actual transmit corrupts timing */
\ 000016 90.... MOV DPTR,#macTxActive
\ 000019 E0 MOVX A,@DPTR
\ 00001A A2E7 MOV C,0xE0 /* A */.7
\ 00001C 5008 JNC ??macBackoffTimerRealign_0
\ 00001E ; Setup parameters for call to function halAssertHandler
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -