📄 mac_general.s51
字号:
// 33 //-------------------------------------------------------------------------------------------------------
// 34 // MAC Internal data
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 35 MAC_INFO macInfo;
macInfo:
DS 7
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 36 BYTE intMacFlags;
intMacFlags:
DS 1
// 37 //-------------------------------------------------------------------------------------------------------
// 38
// 39
// 40
// 41
// 42 //-------------------------------------------------------------------------------------------------------
// 43 // BOOL macSetState(MAC_STATE_TYPE newState)
// 44 //
// 45 // DESCRIPTION:
// 46 // Changes the internal MAC state, which is used to control polling and scanning. Only specific
// 47 // sequences of transitions are allowed.
// 48 //
// 49 // ARGUMENTS:
// 50 // MAC_STATE_TYPE newState
// 51 // The new MAC state
// 52 //
// 53 // RETURN VALUE:
// 54 // BOOL
// 55 // TRUE if successful (legal transition to newState)
// 56 // FALSE otherwise (the state was not changed)
// 57 //-------------------------------------------------------------------------------------------------------
RSEG NEAR_CODE:CODE:NOROOT(0)
// 58 ROOT BOOL macSetState(MAC_STATE_TYPE newState) {
macSetState:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function macSetState
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
MOV A,R1
MOV R2,A
// 59 BOOL result;
// 60
// 61 DISABLE_GLOBAL_INT();
CLR 0xa8.7
// 62 switch (newState) {
LCALL ?UC_SWITCH_SPARSE
`?<Jumptable for macSetState>_0`:
DB 2
DB 16
DB 17
DW ??macSetState_0
DB 64
DB 65
DW ??macSetState_0
DB 10
DB 0
DW ??macSetState_1
DB 18
DW ??macSetState_2
DB 32
DW ??macSetState_3
DB 33
DW ??macSetState_4
DB 34
DW ??macSetState_5
DB 66
DW ??macSetState_6
DB 67
DW ??macSetState_0
DB 68
DW ??macSetState_7
DB 128
DW ??macSetState_0
DB 129
DW ??macSetState_8
DW ??macSetState_9
// 63
// 64 // Association
// 65 case MAC_STATE_TX_ASSOC_REQUEST: result = (BYTE)((macInfo.state == MAC_STATE_DEFAULT)); break;
??macSetState_0:
MOV DPTR,#macInfo
MOVX A,@DPTR
JNZ ??macSetState_9
??macSetState_1:
MOV R1,#0x1
// 66 case MAC_STATE_ASSOC_REQUEST_SENT: result = (BYTE)((macInfo.state == MAC_STATE_TX_ASSOC_REQUEST)); break;
// 67 case MAC_STATE_TX_ASSOC_DATA_REQUEST: result = (BYTE)((macInfo.state == MAC_STATE_ASSOC_REQUEST_SENT)); break;
// 68 case MAC_STATE_ASSOC_DATA_REQUEST_SENT: result = (BYTE)((macInfo.state == MAC_STATE_TX_ASSOC_DATA_REQUEST)); break;
// 69
// 70 // Internally generated data request (mpib.macAutoRequest)
// 71 case MAC_STATE_TX_AUTO_DATA_REQUEST: result = (BYTE)((macInfo.state == MAC_STATE_DEFAULT)); break;
// 72 case MAC_STATE_AUTO_DATA_REQUEST_SENT: result = (BYTE)((macInfo.state == MAC_STATE_TX_AUTO_DATA_REQUEST)); break;
// 73
// 74 // Manually generated data request (mlmePollRequest)
// 75 case MAC_STATE_TX_MANUAL_DATA_REQUEST: result = (BYTE)((macInfo.state == MAC_STATE_DEFAULT)); break;
// 76 case MAC_STATE_MANUAL_DATA_REQUEST_SENT: result = (BYTE)((macInfo.state == MAC_STATE_TX_MANUAL_DATA_REQUEST)); break;
// 77
// 78 // Channel scanning
// 79 case MAC_STATE_ENERGY_SCAN: result = (BYTE)((macInfo.state == MAC_STATE_DEFAULT)); break;
// 80 case MAC_STATE_ACTIVE_OR_PASSIVE_SCAN: result = (BYTE)((macInfo.state == MAC_STATE_DEFAULT)); break;
// 81 case MAC_STATE_SCAN_RESULT_BUFFER_FULL: result = (BYTE)((macInfo.state == MAC_STATE_ACTIVE_OR_PASSIVE_SCAN)); break;
// 82 case MAC_STATE_ORPHAN_SCAN: result = (BYTE)((macInfo.state == MAC_STATE_DEFAULT)); break;
// 83 case MAC_STATE_ORPHAN_REALIGNED: result = (BYTE)((macInfo.state == MAC_STATE_ORPHAN_SCAN)); break;
// 84
// 85 // Always possible to return to the default state
// 86 case MAC_STATE_DEFAULT: result = TRUE; break;
// 87 default: result = FALSE; break;
// 88 }
// 89 if (result) macInfo.state = newState;
MOV A,R2
MOV DPTR,#macInfo
MOVX @DPTR,A
// 90 ENABLE_GLOBAL_INT();
??macSetState_10:
SETB 0xa8.7
// 91 return result;
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI DPL0 Frame(CFA_SP, 3)
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
??macSetState_8:
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x80
JZ ??macSetState_1
??macSetState_9:
MOV R1,#0x0
SJMP ??macSetState_10
??macSetState_2:
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x81
??macSetState_11:
JNZ ??macSetState_9
SJMP ??macSetState_1
??macSetState_5:
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x12
SJMP ??macSetState_11
??macSetState_3:
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x10
SJMP ??macSetState_11
??macSetState_4:
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x11
SJMP ??macSetState_11
??macSetState_6:
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x41
SJMP ??macSetState_11
??macSetState_7:
MOV DPTR,#macInfo
MOVX A,@DPTR
XRL A,#0x43
SJMP ??macSetState_11
CFI EndBlock cfiBlock0
// 92
// 93 } // macSetState
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DS 1
END
// 94
//
// 135 bytes in segment NEAR_CODE
// 1 byte in segment SFR_AN
// 49 bytes in segment XDATA_Z
//
// 135 bytes of CODE memory
// 0 bytes of DATA memory (+ 1 byte shared)
// 49 bytes of XDATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -