📄 zmac_cb.s51
字号:
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV B,#0x21
MUL AB
MOV R4,A
MOV R5,B
MOV R2,?V0 + 4
MOV R3,?V0 + 5
??MAC_CbackEvent_15:
MOV DPTR,#(osal_memcpy & 0xffff)
MOV A,#((osal_memcpy >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 21)
// 200 }
// 201
// 202 osal_mem_free(ZMac_ScanBuf);
; Setup parameters for call to function osal_mem_free
MOV DPTR,#ZMac_ScanBuf
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV DPTR,#(osal_mem_free & 0xffff)
MOV A,#((osal_mem_free >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 203 ZMac_ScanBuf = NULL;
MOV DPTR,#ZMac_ScanBuf
LJMP ??CrossCallReturnLabel_8 & 0xFFFF
// 204 }
// 205 }
// 206 break;
// 207
// 208 case MAC_MLME_START_CNF:
// 209 msgPtr->hdr.status = pData->startCnf.hdr.status;
??MAC_CbackEvent_9:
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
INC DPTR
MOVX A,@DPTR
MOV DPL,R6
MOV DPH,R7
LJMP ??MAC_CbackEvent_16 & 0xFFFF
// 210 break;
// 211
// 212 case MAC_MCPS_DATA_IND:
// 213 {
// 214 /* Data Ind is unconventional: to save an alloc/copy, reuse the MAC
// 215 buffer and re-organize the contents into ZMAC format. */
// 216 uint16 shortAddr = INVALID_SHORT_ADDR;
??MAC_CbackEvent_10:
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,#-0x2
MOVX @DPTR,A
INC DPTR
MOV A,#-0x1
MOVX @DPTR,A
// 217 ZMacDataInd_t *pDataInd = (ZMacDataInd_t *) pData;
// 218 uint8 event, status, len, *msdu;
// 219
// 220 MAC_MlmeGetReq( MAC_SHORT_ADDRESS, &shortAddr );
; Setup parameters for call to function MAC_MlmeGetReq
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R2,DPL
MOV R3,DPH
MOV R1,#0x53
MOV DPTR,#(MAC_MlmeGetReq & 0xffff)
MOV A,#((MAC_MlmeGetReq >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 221 if ( shortAddr == INVALID_SHORT_ADDR || shortAddr == BROADCAST_ADDR )
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
XRL A,#0xfe
JNZ ??MAC_CbackEvent_17
INC DPTR
MOVX A,@DPTR
XRL A,#0xff
??MAC_CbackEvent_17:
JZ ??MAC_CbackEvent_18
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
XRL A,#0xff
JNZ ??MAC_CbackEvent_19
INC DPTR
MOVX A,@DPTR
XRL A,#0xff
??MAC_CbackEvent_19:
JNZ ??MAC_CbackEvent_20
// 222 {
// 223 osal_msg_deallocate( (uint8 *)msgPtr );
??MAC_CbackEvent_18:
; Setup parameters for call to function osal_msg_deallocate
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_msg_deallocate & 0xffff)
MOV A,#((osal_msg_deallocate >> 16) & 0xff)
LJMP ??MAC_CbackEvent_21 & 0xFFFF
// 224 return;
// 225 }
// 226
// 227 /* Store parameters */
// 228 event = pData->hdr.event;
??MAC_CbackEvent_20:
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
MOVX A,@DPTR
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
LCALL ?Subroutine7 & 0xFFFF
// 229 status = pData->hdr.status;
??CrossCallReturnLabel_15:
MOVX A,@DPTR
MOV ?V0 + 7,A
// 230 len = pData->dataInd.msdu.len;
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 3,A
// 231 msdu = pData->dataInd.msdu.p;
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
// 232
// 233 /* Copy header */
// 234 #if defined ( ZBIT )
// 235 // ZBIT requires two copies to handle 32 bit alignment
// 236 osal_memcpy(&pDataInd->SrcAddr, &pData->dataInd.mac, sizeof(zAddrType_t) * 2 );
// 237 osal_memcpy(&pDataInd->Timestamp, &pData->dataInd.mac.timestamp, sizeof(macDataInd_t) - sizeof(ZMacEventHdr_t) - sizeof(zAddrType_t) * 2);
// 238 #else
// 239 osal_memcpy(&pDataInd->SrcAddr, &pData->dataInd.mac, sizeof(macDataInd_t) - sizeof(ZMacEventHdr_t));
; Setup parameters for call to function osal_memcpy
MOV A,?V0 + 4
ADD A,#0x12
MOV ?V0 + 0,A
MOV A,?V0 + 5
ADDC A,#0x0
MOV ?V0 + 1,A
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 24)
MOV R4,#0x1e
MOV R5,#0x0
MOV A,?V0 + 4
ADD A,#0x2
MOV R2,A
MOV A,?V0 + 5
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_14:
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 21)
// 240 #endif
// 241 /* Security - set to zero for now */
// 242 pDataInd->Sec.SecurityLevel = false;
MOV A,?V0 + 4
ADD A,#0x2a
MOV DPL,A
MOV A,?V0 + 5
ADDC A,#0x0
MOV DPH,A
CLR A
LCALL ?Subroutine7 & 0xFFFF
// 243
// 244 /* Restore parameters */
// 245 pDataInd->hdr.Status = status;
??CrossCallReturnLabel_16:
MOV A,?V0 + 7
MOVX @DPTR,A
// 246 pDataInd->hdr.Event = event;
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
MOVX @DPTR,A
// 247 pDataInd->msduLength = len;
MOV A,?V0 + 4
ADD A,#0x2d
MOV DPL,A
MOV A,?V0 + 5
ADDC A,#0x0
MOV DPH,A
MOV A,?V0 + 3
MOVX @DPTR,A
// 248
// 249 if (len)
JZ ??MAC_CbackEvent_22
// 250 pDataInd->msdu = msdu;
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_7:
LJMP ??CrossCallReturnLabel_9 & 0xFFFF
// 251 else
// 252 pDataInd->msdu = NULL;
??MAC_CbackEvent_22:
LCALL ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_8:
CLR A
MOVX @DPTR,A
??MAC_CbackEvent_16:
INC DPTR
??MAC_CbackEvent_12:
MOVX @DPTR,A
// 253
// 254 break;
// 255 }
// 256 }
// 257
// 258 msgPtr->hdr.event = zmacCBEventTable[macEvent];
??MAC_CbackEvent_11:
MOV A,?V0 + 6
ADD A,#(zmacCBEventTable & 0xff)
MOV DPL,A
CLR A
ADDC A,#((zmacCBEventTable >> 8) & 0xff)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV DPL,R6
MOV DPH,R7
MOVX @DPTR,A
// 259 osal_msg_send( NWK_TaskID, (uint8 *)msgPtr );
; Setup parameters for call to function osal_msg_send
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#NWK_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(osal_msg_send & 0xffff)
MOV A,#((osal_msg_send >> 16) & 0xff)
??MAC_CbackEvent_21:
LCALL ?BCALL ; Banked call to: DPTR()
??MAC_CbackEvent_1:
MOV A,#0x5
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 16)
MOV R7,#0x8
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock2
// 260 }
// 261 }
// 262 #endif
// 263 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine7:
CFI Block cfiCond3 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_16
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V7 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, 21)
CFI Block cfiCond4 Using cfiCommon0
CFI (cfiCond4) NoFunction
CFI (cfiCond4) Conditional ??CrossCallReturnLabel_15
CFI (cfiCond4) R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI (cfiCond4) VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond4) V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond4) V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond4) V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -