📄 zmac_cb.s51
字号:
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 5
MOV A,#-0x5
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 21)
MOV ?V0 + 4,R2
MOV ?V0 + 5,R3
// 144 #ifdef MT_MAC_CB_FUNC
// 145 zmacSendMTCallback ( pData );
// 146 #elif !defined NONWK
// 147
// 148 uint8 macEvent = pData->hdr.event;
MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
MOV ?V0 + 6,A
// 149 uint16 msgLen = zmacCBSizeTable[macEvent] + getZMacDynamicSize(macEvent, pData);
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_5:
MOV R6,A
; Setup parameters for call to function getZMacDynamicSize
MOV R1,?V0 + 6
MOV DPTR,#(getZMacDynamicSize & 0xffff)
MOV A,#((getZMacDynamicSize >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R2
ADD A,R6
MOV R6,A
MOV A,R3
ADDC A,#0x0
MOV R7,A
// 150 macCbackEvent_t *msgPtr;
// 151
// 152 /* Allocate osal msg buffer */
// 153 if (msgLen > 0)
MOV A,R6
JNZ ??MAC_CbackEvent_0
MOV A,R7
??MAC_CbackEvent_0:
JNZ $+5
LJMP ??MAC_CbackEvent_1 & 0xFFFF
// 154 {
// 155 if (macEvent == MAC_MCPS_DATA_IND)
MOV A,#0xd
XRL A,?V0 + 6
JNZ ??MAC_CbackEvent_2
// 156 msgPtr = pData;
MOV R6,?V0 + 4
MOV R7,?V0 + 5
SJMP ??MAC_CbackEvent_3
// 157 else
// 158 {
// 159 if ( macEvent == MAC_MCPS_DATA_CNF )
??MAC_CbackEvent_2:
MOV A,#0xc
XRL A,?V0 + 6
JNZ ??MAC_CbackEvent_4
// 160 {
// 161 osal_msg_deallocate( (uint8*)pData->dataCnf.pDataReq );
; Setup parameters for call to function osal_msg_deallocate
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV DPTR,#(osal_msg_deallocate & 0xffff)
MOV A,#((osal_msg_deallocate >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 162 }
// 163 msgPtr = (macCbackEvent_t *)osal_msg_allocate(msgLen);
??MAC_CbackEvent_4:
; Setup parameters for call to function osal_msg_allocate
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_msg_allocate & 0xffff)
MOV A,#((osal_msg_allocate >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV R6,?V0 + 0
MOV R7,?V0 + 1
// 164 }
// 165
// 166 if (msgPtr)
??MAC_CbackEvent_3:
MOV A,R6
JNZ ??MAC_CbackEvent_5
MOV A,R7
??MAC_CbackEvent_5:
JNZ $+5
LJMP ??MAC_CbackEvent_1 & 0xFFFF
// 167 {
// 168 if (macEvent != MAC_MCPS_DATA_IND)
MOV A,#0xd
XRL A,?V0 + 6
JZ ??MAC_CbackEvent_6
// 169 osal_memcpy(msgPtr, pData, zmacCBSizeTable[macEvent]);
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 0,?V0 + 4
MOV ?V0 + 1,?V0 + 5
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 24)
MOV ?V0 + 0,?V0 + 6
MOV A,?V0 + 0
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_6:
MOV R4,A
MOV R5,#0x0
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
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)
// 170
// 171 switch (macEvent) {
??MAC_CbackEvent_6:
MOV A,?V0 + 6
LCALL ?UC_SWITCH_SPARSE
`?<Jumptable for MAC_CbackEvent>_0`:
DB 0
DB 4
DB 5
DW ??MAC_CbackEvent_7
DB 7
DW ??MAC_CbackEvent_8
DB 8
DW ??MAC_CbackEvent_9
DB 13
DW ??MAC_CbackEvent_10
DW ??MAC_CbackEvent_11
??MAC_CbackEvent_7:
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_3:
LCALL ??Subroutine0_0 & 0xFFFF
??CrossCallReturnLabel_2:
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 24)
MOV R4,#0x21
MOV R5,#0x0
MOV R2,?V0 + 4
MOV R3,?V0 + 5
// 172 case MAC_MLME_BEACON_NOTIFY_IND:
// 173 {
// 174 macMlmeBeaconNotifyInd_t *pBeacon;
// 175
// 176 pBeacon = (macMlmeBeaconNotifyInd_t*)msgPtr;
// 177
// 178 osal_memcpy(pBeacon + 1, pBeacon->pPanDesc, sizeof(macPanDesc_t));
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)
// 179 pBeacon->pPanDesc = (macPanDesc_t *) (pBeacon + 1);
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
MOV A,?V0 + 4
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 5
MOVX @DPTR,A
// 180 osal_memcpy(pBeacon->pPanDesc + 1, pBeacon->pSdu, pBeacon->sduLength);
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_11:
; Setup parameters for call to function osal_memcpy
MOV DPL,?V0 + 4
MOV DPH,A
MOVX A,@DPTR
MOV ?V0 + 0,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 1,A
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 24)
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R4,A
MOV R5,#0x0
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
ADD A,#0x21
MOV R2,A
INC DPTR
MOVX A,@DPTR
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_13:
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 21)
// 181 pBeacon->pSdu = (uint8 *) (pBeacon->pPanDesc + 1);
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
ADD A,#0x21
MOV R0,A
INC DPTR
MOVX A,@DPTR
LCALL ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_9:
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
LJMP ??MAC_CbackEvent_12 & 0xFFFF
// 182 }
// 183 break;
// 184
// 185 case MAC_MLME_SCAN_CNF:
// 186 {
// 187 macMlmeScanCnf_t *pScan = (macMlmeScanCnf_t*)msgPtr;
// 188
// 189 if (ZMac_ScanBuf != NULL)
??MAC_CbackEvent_8:
MOV DPTR,#ZMac_ScanBuf
MOVX A,@DPTR
JNZ ??MAC_CbackEvent_13
INC DPTR
MOVX A,@DPTR
??MAC_CbackEvent_13:
JNZ $+5
LJMP ??MAC_CbackEvent_11 & 0xFFFF
// 190 {
// 191 if (pScan->scanType == ZMAC_ED_SCAN)
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
MOVX A,@DPTR
JNZ ??MAC_CbackEvent_14
// 192 {
// 193 pScan->result.pEnergyDetect = (uint8*) (pScan + 1);
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_12:
MOV A,R6
ADD A,#0xb
MOV R0,A
MOV A,R7
LCALL ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_10:
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
LCALL ?Subroutine0 & 0xFFFF
// 194 osal_memcpy(pScan->result.pEnergyDetect, ZMac_ScanBuf, ZMAC_ED_SCAN_MAXCHANNELS);
??CrossCallReturnLabel_0:
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 24)
MOV R4,#0x1b
MOV R5,#0x0
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
SJMP ??MAC_CbackEvent_15
CFI CFA_XSP16 add(XSP16, 21)
// 195 }
// 196 else
// 197 {
// 198 pScan->result.pPanDescriptor = (macPanDesc_t*) (pScan + 1);
??MAC_CbackEvent_14:
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_4:
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,?V0 + 4
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 5
LCALL ?Subroutine0 & 0xFFFF
// 199 osal_memcpy(pScan + 1, ZMac_ScanBuf, sizeof( ZMacPanDesc_t ) * pScan->resultListSize);
??CrossCallReturnLabel_1:
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 24)
MOV DPL,R6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -