📄 mac_power_management.lst
字号:
\ 00006A ; Setup parameters for call to function mtxpInit
\ 00006A 12.... LCALL mtxpInit
433 #if MAC_OPT_FFD
434 miqInit();
\ 00006D ; Setup parameters for call to function miqInit
\ 00006D 12.... LCALL miqInit
435 #endif
436 mtxInfo.startTxTask = mschReserveTask();
\ 000070 ; Setup parameters for call to function mschReserveTask
\ 000070 12.... LCALL mschReserveTask
\ 000073 E9 MOV A,R1
\ 000074 90.... MOV DPTR,#(mtxInfo + 12)
\ 000077 F0 MOVX @DPTR,A
437 mrxInfo.state = MRX_STATE_LEN_FCF_SEQ;
\ 000078 E4 CLR A
\ 000079 90.... MOV DPTR,#(mrxInfo + 12)
\ 00007C F0 MOVX @DPTR,A
438 mbcnInfo.rxTaskNumber = NO_TASK;
\ 00007D 74FF MOV A,#-0x1
\ 00007F 90.... MOV DPTR,#(mbcnInfo + 1)
\ 000082 F0 MOVX @DPTR,A
439 mbcnInfo.txTaskNumber = NO_TASK;
\ 000083 90.... MOV DPTR,#mbcnInfo
\ 000086 F0 MOVX @DPTR,A
440 mbcnInfo.pTxPacket = NULL;
\ 000087 90.... MOV DPTR,#(mbcnInfo + 2)
\ 00008A E4 CLR A
\ 00008B F0 MOVX @DPTR,A
\ 00008C A3 INC DPTR
\ 00008D F0 MOVX @DPTR,A
441 mscInfo.scanStatus = MSC_STATUS_FINISHED;
\ 00008E 7401 MOV A,#0x1
\ 000090 90.... MOV DPTR,#(mscInfo + 10)
\ 000093 F0 MOVX @DPTR,A
442 break;
443 }
444
445 // Reset flags
446 RESET_MF();
\ ??mpmResumeMacAfterPowerDown_0:
\ 000094 E4 CLR A
\ 000095 90.... MOV DPTR,#(macInfo + 6)
\ 000098 F0 MOVX @DPTR,A
447
448 // MAC command state
449 macInfo.state = MAC_STATE_DEFAULT;
\ 000099 90.... MOV DPTR,#macInfo
\ 00009C F0 MOVX @DPTR,A
450
451 // Flush the RX FIFO twice (chip bug)
452 ISFLUSHRX;
\ 00009D 75E1E6 MOV 0xe1,#-0x1a
453 ISFLUSHRX;
\ 0000A0 75E1E6 MOV 0xe1,#-0x1a
454 ISFLUSHTX;
\ 0000A3 75E1E7 MOV 0xe1,#-0x19
455 ISFLUSHTX;
\ 0000A6 75E1E7 MOV 0xe1,#-0x19
456
457 // Resume coordinator
458 #pragma diag_suppress=PA082
459 mdmctrl0 = READ_RFR16(MDMCTRL0);
\ 0000A9 90DF02 MOV DPTR,#-0x20fe
\ 0000AC E0 MOVX A,@DPTR
\ 0000AD F9 MOV R1,A
\ 0000AE 90DF03 MOV DPTR,#-0x20fd
\ 0000B1 E0 MOVX A,@DPTR
\ 0000B2 2400 ADD A,#0x0
\ 0000B4 E4 CLR A
\ 0000B5 39 ADDC A,R1
\ 0000B6 F9 MOV R1,A
460 #pragma diag_default=PA082
461 if (mdmctrl0 & PAN_COORDINATOR_BM)
\ 0000B7 7410 MOV A,#0x10
\ 0000B9 59 ANL A,R1
\ 0000BA F9 MOV R1,A
\ 0000BB E4 CLR A
\ 0000BC 7001 JNZ ??mpmResumeMacAfterPowerDown_7
\ 0000BE E9 MOV A,R1
\ ??mpmResumeMacAfterPowerDown_7:
\ 0000BF 90.... MOV DPTR,#(mpib + 8)
\ 0000C2 601B JZ ??mpmResumeMacAfterPowerDown_8
462 ResumeCoordinatorAfterPowerDown (resumeMode, synchronousStart);
\ 0000C4 E0 MOVX A,@DPTR
\ 0000C5 640F XRL A,#0xf
\ 0000C7 7051 JNZ ??mpmResumeMacAfterPowerDown_9
\ 0000C9 ; Setup parameters for call to function mtimSetCallback
\ 0000C9 90.... MOV DPTR,#__Constant_30
\ 0000CC 12.... LCALL ?PUSH_XSTACK8_X_FOUR
\ 0000CF 79.. MOV R1,#(mbcnExpirePacketsNonBeacon & 0xff)
\ 0000D1 7A.. MOV R2,#((mbcnExpirePacketsNonBeacon >> 8) & 0xff)
\ 0000D3 7B.. MOV R3,#((mbcnExpirePacketsNonBeacon >> 16) & 0xff)
\ 0000D5 12.... LCALL mtimSetCallback
\ 0000D8 7404 MOV A,#0x4
\ 0000DA 12.... LCALL ?DEALLOC_XSTACK8
\ 0000DD 803B SJMP ??mpmResumeMacAfterPowerDown_9
463 else
464 ResumeDeviceAfterPowerDown (resumeMode, synchronousStart);
\ ??mpmResumeMacAfterPowerDown_8:
\ 0000DF E0 MOVX A,@DPTR
\ 0000E0 FA MOV R2,A
\ 0000E1 740F MOV A,#0xf
\ 0000E3 6A XRL A,R2
\ 0000E4 6034 JZ ??mpmResumeMacAfterPowerDown_9
\ 0000E6 E5.. MOV A,?V0 + 0
\ 0000E8 7030 JNZ ??mpmResumeMacAfterPowerDown_9
\ 0000EA EF MOV A,R7
\ 0000EB 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for mpmResumeMacAfterPowerDown>_1`:
\ 0000EE 00 DB 0
\ 0000EF 01 DB 1
\ 0000F0 .... DW ??mpmResumeMacAfterPowerDown_9
\ 0000F2 .... DW ??mpmResumeMacAfterPowerDown_10
\ 0000F4 .... DW ??mpmResumeMacAfterPowerDown_10
\ ??mpmResumeMacAfterPowerDown_10:
\ 0000F6 7401 MOV A,#0x1
\ 0000F8 12.... LCALL ?XSTACK_DISP0_8
\ 0000FB EA MOV A,R2
\ 0000FC F0 MOVX @DPTR,A
\ 0000FD E4 CLR A
\ 0000FE 90.... MOV DPTR,#(mpib + 8)
\ 000101 F0 MOVX @DPTR,A
\ 000102 ; Setup parameters for call to function mlmeSetRequest
\ 000102 7401 MOV A,#0x1
\ 000104 12.... LCALL ?XSTACK_DISP0_8
\ 000107 AA82 MOV R2,DPL
\ 000109 AB83 MOV R3,DPH
\ 00010B 7947 MOV R1,#0x47
\ 00010D 12.... LCALL mlmeSetRequest
\ 000110 ; Setup parameters for call to function mlmeSyncRequest
\ 000110 7A01 MOV R2,#0x1
\ 000112 90.... MOV DPTR,#ppib
\ 000115 E0 MOVX A,@DPTR
\ 000116 F9 MOV R1,A
\ 000117 12.... LCALL mlmeSyncRequest
465
466 // Turn the interrupts back on
467 EnableRfInterrupts ();
\ ??mpmResumeMacAfterPowerDown_9:
\ 00011A ; Setup parameters for call to function EnableRfInterrupts
\ 00011A 12.... LCALL EnableRfInterrupts
468 ENABLE_TIMER2_INT();
\ 00011D D2BA SETB 0xb8.2
469 ENABLE_GLOBAL_INT();
\ 00011F D2AF SETB 0xa8.7
470
471 // Turn on receiver
472 if (rxOnWhenIdle == TRUE)
\ 000121 7401 MOV A,#0x1
\ 000123 6E XRL A,R6
\ 000124 7012 JNZ ??mpmResumeMacAfterPowerDown_11
473 {
474 setAttributeValue = TRUE;
\ 000126 7401 MOV A,#0x1
\ 000128 85..82 MOV DPL,?XSP + 0
\ 00012B 85..83 MOV DPH,?XSP + 1
\ 00012E F0 MOVX @DPTR,A
475 mlmeSetRequest(MAC_RX_ON_WHEN_IDLE, &setAttributeValue);
\ 00012F ; Setup parameters for call to function mlmeSetRequest
\ 00012F AA82 MOV R2,DPL
\ 000131 AB83 MOV R3,DPH
\ 000133 7952 MOV R1,#0x52
\ 000135 12.... LCALL mlmeSetRequest
476 }
477
478 }
\ ??mpmResumeMacAfterPowerDown_11:
\ 000138 7402 MOV A,#0x2
\ 00013A 02.... LJMP ?Subroutine1
\ In segment XDATA_I, align 1, keep-with-next
\ __Constant_30:
\ 000000 DS 4
\ 000004 REQUIRE `?<Initializer for __Constant_30>`
\ 000004 REQUIRE __INIT_XDATA_I
\ In segment XDATA_ID, align 1, keep-with-next
\ `?<Initializer for __Constant_30>`:
\ 000000 30000000 DD 48
\ In segment SFR_AN, at 0xa8
\ union <unnamed> volatile __sfr _A_IEN0
\ _A_IEN0:
\ 000000 DS 1
\ In segment SFR_AN, at 0xb8
\ union <unnamed> volatile __sfr _A_IEN1
\ _A_IEN1:
\ 000000 DS 1
479
480
481 //-------------------------------------------------------------------------------------------------------
482 // static void ResumeCoordinatorAfterPowerDown (RESUME_MODE resumeMode)
483 // BOOL synchronousStart)
484 //
485 // DESCRIPTION:
486 // Resumes the coordinator after a power down
487 //
488 //-------------------------------------------------------------------------------------------------------
489 static void ResumeCoordinatorAfterPowerDown (RESUME_MODE resumeMode, BOOL synchronousStart)
490 {
491 if (mpib.macBeaconOrder == 15)
492 mtimSetCallback(mbcnExpirePacketsNonBeacon, (UINT32)(aBaseSuperframeDuration / aUnitBackoffPeriod));
493 }
494
495 //-------------------------------------------------------------------------------------------------------
496 // static void ResumeDeviceAfterPowerDown (RESUME_MODE resumeMode,
497 // BOOL synchronousStart)
498 //
499 // DESCRIPTION:
500 // Resumes a device after a power down
501 //
502 //-------------------------------------------------------------------------------------------------------
503 static void ResumeDeviceAfterPowerDown (RESUME_MODE resumeMode, BOOL synchronousStart)
504 {
505 BYTE setAttributeValue;
506
507 // Beacon network ?
508 if ((mpib.macBeaconOrder != 15) && (synchronousStart == FALSE))
509 {
510 switch (resumeMode)
511 {
512 case RESUME_MODE_ALL_PRESERVED:
513 setAttributeValue = mpib.macBeaconOrder;
514 mpib.macBeaconOrder = 0;
515 mlmeSetRequest(MAC_BEACON_ORDER, &setAttributeValue);
516 // Synchronize with the beacon in case of a beacon-enabled PAN
517 mlmeSyncRequest(ppib.phyCurrentChannel, TRUE);
518 break;
519
520 case RESUME_MODE_PARTS_PRESERVED:
521 setAttributeValue = mpib.macBeaconOrder;
522 mpib.macBeaconOrder = 0;
523 mlmeSetRequest(MAC_BEACON_ORDER, &setAttributeValue);
524
525 // Synchronize with the beacon in case of a beacon-enabled PAN
526 mlmeSyncRequest(ppib.phyCurrentChannel, TRUE);
527 break;
528
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -