📄 mac.s51
字号:
FUNCTION miqAddIndirectPacket,0602H
EXTERN miqExpireIndirectPacketsTask
FUNCTION miqExpireIndirectPacketsTask,0602H
EXTERN miqInfo
EXTERN mpib
EXTERN mrxInfo
EXTERN mrxRxEnableRequestTask
FUNCTION mrxRxEnableRequestTask,0602H
EXTERN mscInfo
EXTERN mscScanProcedure
FUNCTION mscScanProcedure,0602H
EXTERN msupWaitTask
FUNCTION msupWaitTask,0602H
EXTERN mtxInfo
EXTERN mtxScheduleTransmission
FUNCTION mtxScheduleTransmission,0602H
EXTERN pMtxPacketPool
EXTERN ppib
// E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac.c
// 1 /*******************************************************************************************************
// 2 * *
// 3 * ********** *
// 4 * ************ *
// 5 * *** *** *
// 6 * *** +++ *** *
// 7 * *** + + *** *
// 8 * *** + CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY *
// 9 * *** + + *** *
// 10 * *** +++ *** *
// 11 * *** *** *
// 12 * ************ *
// 13 * ********** *
// 14 * *
// 15 *******************************************************************************************************
// 16 * CONFIDENTIAL *
// 17 * The use of this file is restricted by the signed MAC software license agreement. *
// 18 * *
// 19 * Copyright Chipcon AS, 2005 *
// 20 *******************************************************************************************************
// 21 * This file implements the MAC functions (request and response) to be called by the higher layer *
// 22 *******************************************************************************************************/
// 23 #include "mac_headers.h"
ASEGN SFR_AN:DATA:NOROOT,0a1H
// unsigned char volatile __sfr T2OF0
T2OF0:
DS 1
ASEGN SFR_AN:DATA:NOROOT,0a2H
// unsigned char volatile __sfr T2OF1
T2OF1:
DS 1
ASEGN SFR_AN:DATA:NOROOT,0a3H
// unsigned char volatile __sfr T2OF2
T2OF2:
DS 1
// 24
// 25 //-------------------------------------------------------------------------------------------------------
// 26 // Extended address, must be set by higher layer
// 27
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 28 BYTE aExtendedAddress[8];
aExtendedAddress:
DS 8
// 29 //-------------------------------------------------------------------------------------------------------
// 30
// 31
// 32 //-------------------------------------------------------------------------------------------------------
// 33 // MAC_ENUM mlmeResetRequest(BOOL setDefaultPIB)
// 34 //
// 35 // DESCRIPTION:
// 36 // Reset the MAC and PHY layers, including CC2430, the microcontroller, and all state variables.
// 37 // NOTE: The initialization and power-up sequence must be performed according to
// 38 // the MAC documentation prior to calling mlmeResetRequest or other
// 39 // MAC primitives
// 40 //
// 41 // PARAMETERS:
// 42 // BOOL setDefaultPIB
// 43 // Reset the PHY and MAC PIBs
// 44 //
// 45 // RETURN VALUE:
// 46 // MAC_ENUM
// 47 // Always SUCCESS
// 48 //-------------------------------------------------------------------------------------------------------
RSEG NEAR_CODE:CODE:NOROOT(0)
// 49 ROOT MAC_ENUM mlmeResetRequest(BOOL setDefaultPIB) {
mlmeResetRequest:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function mlmeResetRequest
FUNCALL mlmeResetRequest, mtimInit
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, mschInit
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, mrxpInit
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, mtxpInit
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, miqInit
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, mschReserveTask
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, msupGetRandomByte
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, msupGetRandomByte
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, memset
LOCFRAME XSTACK, 13, STACK
ARGFRAME XSTACK, 13, STACK
FUNCALL mlmeResetRequest, mpmRestoreRegsAndRam
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL mlmeResetRequest, EnableRfInterrupts
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
MOV A,#-0xb
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 V3 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
MOV A,R1
MOV R6,A
// 50
// 51 // Disable the FIFOP interrupt
// 52 DISABLE_TIMER2_INT();
CLR 0xb8.2
// 53
// 54 // Clear ABORTRX_ON_SRXON and ACCEPT_ACKPKT
// 55 FSMTC1 = 0x00;
CLR A
MOV DPTR,#-0x20ac
MOVX @DPTR,A
// 56
// 57 // Initialize the MAC timer
// 58 mtimInit(FALSE);
; Setup parameters for call to function mtimInit
MOV R1,A
LCALL mtimInit
// 59
// 60 // Initialize the scheduler before the other modules (task reservation...)
// 61 mschInit();
; Setup parameters for call to function mschInit
LCALL mschInit
// 62
// 63 // Initialize variables in the various modules
// 64 mrxpInit();
; Setup parameters for call to function mrxpInit
LCALL mrxpInit
// 65 mtxpInit();
; Setup parameters for call to function mtxpInit
LCALL mtxpInit
// 66 #if MAC_OPT_FFD
// 67 miqInit();
; Setup parameters for call to function miqInit
LCALL miqInit
// 68 #endif
// 69 mtxInfo.startTxTask = mschReserveTask();
; Setup parameters for call to function mschReserveTask
LCALL mschReserveTask
MOV A,R1
MOV DPTR,#(mtxInfo + 12)
MOVX @DPTR,A
// 70 mrxInfo.state = MRX_STATE_LEN_FCF_SEQ;
CLR A
MOV DPTR,#(mrxInfo + 12)
MOVX @DPTR,A
// 71 mrxInfo.onCounter = 0;
MOV DPTR,#(mrxInfo + 13)
MOVX @DPTR,A
// 72 mrxInfo.keepFifopIntOff = FALSE;
MOV DPTR,#(mrxInfo + 15)
MOVX @DPTR,A
// 73 mrxInfo.handleFifoUnderflow = FALSE;
MOV DPTR,#(mrxInfo + 14)
MOVX @DPTR,A
// 74 mbcnInfo.trackBeacon = FALSE;
MOV DPTR,#(mbcnInfo + 5)
MOVX @DPTR,A
// 75 mbcnInfo.findBeacon = FALSE;
MOV DPTR,#(mbcnInfo + 6)
MOVX @DPTR,A
// 76 mbcnInfo.rxTaskNumber = NO_TASK;
MOV A,#-0x1
MOV DPTR,#(mbcnInfo + 1)
MOVX @DPTR,A
// 77 mbcnInfo.txTaskNumber = NO_TASK;
MOV DPTR,#mbcnInfo
MOVX @DPTR,A
// 78 mbcnInfo.pTxPacket = NULL;
MOV DPTR,#(mbcnInfo + 2)
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 79 mscInfo.scanStatus = MSC_STATUS_FINISHED;
MOV A,#0x1
MOV DPTR,#(mscInfo + 10)
MOVX @DPTR,A
// 80 mtxInfo.beaconTransmissionInProgress = FALSE;
CLR A
MOV DPTR,#(mtxInfo + 11)
MOVX @DPTR,A
// 81
// 82 // Reset flags
// 83 RESET_MF();
MOV DPTR,#(macInfo + 6)
MOVX @DPTR,A
// 84
// 85 // MAC command state
// 86 macInfo.state = MAC_STATE_DEFAULT;
MOV DPTR,#macInfo
MOVX @DPTR,A
// 87
// 88 // Other state variables
// 89 mbcnInfo.lastSfSpec.battLifeExt = FALSE;
MOV DPTR,#(mbcnInfo + 9)
MOVX @DPTR,A
// 90 mbcnInfo.lastSfSpec.finalCap = USE_WHOLE_SUPERFRAME_FOR_CAP;
MOV A,#0xf
MOV DPTR,#(mbcnInfo + 8)
MOVX @DPTR,A
// 91
// 92 // Set all MAC/PHY PIB attributes to their default values.
// 93 if (setDefaultPIB) {
MOV A,R6
JNZ $+5
LJMP ??mlmeResetRequest_0
// 94 ppib.phyCurrentChannel = 11;
MOV A,#0xb
MOV DPTR,#ppib
MOVX @DPTR,A
// 95 ppib.phyTransmitPower = OUTPUT_POWER_0DBM; //0dBm an +/- 1dBm tolerance
CLR A
MOV DPTR,#(ppib + 1)
MOVX @DPTR,A
// 96 ppib.phyCcaMode = 1;
MOV A,#0x1
MOV DPTR,#(ppib + 2)
MOVX @DPTR,A
// 97
// 98 mpib.macAckWaitDuration = 54;
MOV A,#0x36
MOV DPTR,#mpib
MOVX @DPTR,A
// 99 mpib.macAssociationPermit = FALSE;
CLR A
MOV DPTR,#(mpib + 1)
MOVX @DPTR,A
// 100 mpib.macAutoRequest = TRUE;
MOV A,#0x1
MOV DPTR,#(mpib + 2)
MOVX @DPTR,A
// 101 mpib.macBattLifeExt = FALSE;
CLR A
MOV DPTR,#(mpib + 3)
MOVX @DPTR,A
// 102 mpib.macBattLifeExtPeriods = 6;
MOV A,#0x6
MOV DPTR,#(mpib + 4)
MOVX @DPTR,A
// 103 mpib.pMacBeaconPayload = NULL;
MOV DPTR,#(mpib + 5)
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 104 mpib.macBeaconPayloadLength = 0;
MOV DPTR,#(mpib + 7)
MOVX @DPTR,A
// 105 mpib.macBeaconOrder = 15;
MOV A,#0xf
MOV DPTR,#(mpib + 8)
MOVX @DPTR,A
// 106 mpib.macBeaconTxTime = 0;
MOV DPTR,#__Constant_0
MOV R0,#?V0 + 0
LCALL ?L_MOV_X
MOV DPTR,#(mpib + 9)
MOV R0,#?V0 + 0
LCALL ?L_MOV_TO_X
// 107 mpib.macBSN = msupGetRandomByte();
; Setup parameters for call to function msupGetRandomByte
LCALL msupGetRandomByte
MOV A,R1
MOV DPTR,#(mpib + 13)
MOVX @DPTR,A
// 108 mpib.macCoordShortAddress = 0xFFFF;
MOV DPTR,#(mpib + 22)
MOV A,#-0x1
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 109 mpib.macDSN = msupGetRandomByte();
; Setup parameters for call to function msupGetRandomByte
LCALL msupGetRandomByte
MOV A,R1
MOV DPTR,#(mpib + 24)
MOVX @DPTR,A
// 110 mpib.macGTSPermit = TRUE;
MOV A,#0x1
MOV DPTR,#(mpib + 25)
MOVX @DPTR,A
// 111 mpib.macMaxCsmaBackoffs = 4;
MOV A,#0x4
MOV DPTR,#(mpib + 26)
MOVX @DPTR,A
// 112 mpib.macMinBE = 3;
MOV A,#0x3
MOV DPTR,#(mpib + 27)
MOVX @DPTR,A
// 113 mpib.macPANId = 0xFFFF;
MOV DPTR,#(mpib + 28)
MOV A,#-0x1
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 114 mpib.macPromiscuousMode = FALSE;
CLR A
MOV DPTR,#(mpib + 30)
MOVX @DPTR,A
// 115 mpib.macRxOnWhenIdle = FALSE;
MOV DPTR,#(mpib + 31)
MOVX @DPTR,A
// 116 mpib.macShortAddress = 0xFFFF;
MOV DPTR,#(mpib + 32)
MOV A,#-0x1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -