📄 genericapp.s51
字号:
ARGFRAME XSTACK, 12, STACK
FUNCALL GenericApp_ProcessEvent, osal_msg_deallocate
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL GenericApp_ProcessEvent, osal_msg_receive
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL GenericApp_ProcessEvent, GenericApp_HandleKeys
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL GenericApp_ProcessEvent, GenericApp_SendTheMessage
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL GenericApp_ProcessEvent, osal_start_timer
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xc
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 0
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
// 197 afIncomingMSGPacket_t *MSGpkt;
// 198 afDataConfirm_t *afDataConfirm;
// 199 ZDO_NewDstAddr_t *ZDO_NewDstAddr;
// 200 byte dstEP;
// 201 zAddrType_t *dstAddr;
// 202
// 203 // Data Confirmation message fields
// 204 byte sentEP;
// 205 ZStatus_t sentStatus;
// 206 byte sentTransID; // This should match the value sent
// 207
// 208 if ( events & SYS_EVENT_MSG )
MOV A,#-0x80
ANL A,R7
MOV R1,A
CLR A
JNZ ??GenericApp_ProcessEvent_0
MOV A,R1
??GenericApp_ProcessEvent_0:
JNZ $+5
LJMP ??GenericApp_ProcessEvent_1 & 0xFFFF
// 209 {
// 210 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );
; Setup parameters for call to function osal_msg_receive
SJMP ??GenericApp_ProcessEvent_2
// 211 while ( MSGpkt )
// 212 {
// 213 switch ( MSGpkt->hdr.event )
// 214 {
// 215 case KEY_CHANGE:
// 216 GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
// 217 break;
// 218
// 219 case AF_DATA_CONFIRM_CMD:
// 220 // This message is received as a confirmation of a data packet sent.
// 221 // The status is of ZStatus_t type [defined in ZComDef.h]
// 222 // The message fields are defined in AF.h
// 223 afDataConfirm = (afDataConfirm_t *)MSGpkt;
// 224 sentEP = afDataConfirm->endpoint;
// 225 sentStatus = afDataConfirm->hdr.status;
// 226 sentTransID = afDataConfirm->transID;
// 227 (void)sentEP;
// 228 (void)sentTransID;
// 229
// 230 // Action taken when confirmation is received.
// 231 if ( sentStatus != ZSuccess )
// 232 {
// 233 // The data wasn't delivered -- Do something
// 234 }
// 235 break;
// 236
// 237 case AF_INCOMING_MSG_CMD:
// 238 GenericApp_MessageMSGCB( MSGpkt );
// 239 break;
// 240
// 241 case ZDO_NEW_DSTADDR:
// 242 ZDO_NewDstAddr = (ZDO_NewDstAddr_t *)MSGpkt;
// 243
// 244 dstEP = ZDO_NewDstAddr->dstAddrDstEP;
// 245 dstAddr = &ZDO_NewDstAddr->dstAddr;
// 246 GenericApp_DstAddr.addrMode = (afAddrMode_t)dstAddr->addrMode;
// 247 GenericApp_DstAddr.endPoint = dstEP;
// 248
// 249 GenericApp_DstAddr.addr.shortAddr = dstAddr->addr.shortAddr;
// 250 break;
// 251
// 252 case ZDO_STATE_CHANGE:
// 253 GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
??GenericApp_ProcessEvent_3:
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
MOVX A,@DPTR
MOV DPTR,#GenericApp_NwkState
MOVX @DPTR,A
// 254 if ( (GenericApp_NwkState == DEV_ZB_COORD)
// 255 || (GenericApp_NwkState == DEV_ROUTER)
// 256 || (GenericApp_NwkState == DEV_END_DEVICE) )
XRL A,#0x9
JZ ??GenericApp_ProcessEvent_4
MOVX A,@DPTR
XRL A,#0x7
JZ ??GenericApp_ProcessEvent_4
MOVX A,@DPTR
XRL A,#0x6
JNZ ??GenericApp_ProcessEvent_5
// 257 {
// 258 // Start sending "the" message in a regular interval.
// 259 osal_start_timer( GENERICAPP_SEND_MSG_EVT,
// 260 GENERICAPP_SEND_MSG_TIMEOUT );
??GenericApp_ProcessEvent_4:
; Setup parameters for call to function osal_start_timer
MOV R4,#-0x78
MOV R5,#0x13
MOV R2,#0x1
MOV R3,#0x0
MOV DPTR,#(osal_start_timer & 0xffff)
MOV A,#((osal_start_timer >> 16) & 0xff)
??GenericApp_ProcessEvent_6:
LCALL ?BCALL ; Banked call to: DPTR()
// 261 }
// 262 break;
// 263
// 264 default:
// 265 break;
// 266 }
// 267
// 268 // Release the memory
// 269 osal_msg_deallocate( (uint8 *)MSGpkt );
??GenericApp_ProcessEvent_5:
; Setup parameters for call to function osal_msg_deallocate
MOV R2,?V0 + 0
MOV R3,?V0 + 1
MOV DPTR,#(osal_msg_deallocate & 0xffff)
MOV A,#((osal_msg_deallocate >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 270
// 271 // Next
// 272 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );
; Setup parameters for call to function osal_msg_receive
??GenericApp_ProcessEvent_2:
MOV DPTR,#GenericApp_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(osal_msg_receive & 0xffff)
MOV A,#((osal_msg_receive >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV A,?V0 + 0
JNZ ??GenericApp_ProcessEvent_7
MOV A,?V0 + 1
??GenericApp_ProcessEvent_7:
JZ ??GenericApp_ProcessEvent_8
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
MOVX A,@DPTR
LCALL ?UC_SWITCH_SPARSE
`?<Jumptable for GenericApp_ProcessEvent>_0`:
DB 0
DB 3
DB 192
DW ??GenericApp_ProcessEvent_9
DB 208
DW ??GenericApp_ProcessEvent_10
DB 209
DW ??GenericApp_ProcessEvent_3
DW ??GenericApp_ProcessEvent_5
??GenericApp_ProcessEvent_9:
; Setup parameters for call to function GenericApp_HandleKeys
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R2,A
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(GenericApp_HandleKeys & 0xffff)
MOV A,#((GenericApp_HandleKeys >> 16) & 0xff)
SJMP ??GenericApp_ProcessEvent_6
??GenericApp_ProcessEvent_10:
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R2,A
MOV A,?V0 + 0
ADD A,#0x3
MOV R0,A
MOV A,?V0 + 1
ADDC A,#0x0
MOV R1,A
MOV DPL,R0
MOV DPH,R1
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPTR,#(GenericApp_DstAddr + 2)
MOVX @DPTR,A
MOV A,R2
MOV DPTR,#(GenericApp_DstAddr + 3)
MOVX @DPTR,A
MOV DPL,R0
MOV DPH,R1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#GenericApp_DstAddr
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
LJMP ??GenericApp_ProcessEvent_5 & 0xFFFF
// 273 }
// 274
// 275 // return unprocessed events
// 276 return (events ^ SYS_EVENT_MSG);
??GenericApp_ProcessEvent_8:
MOV A,R6
MOV R2,A
MOV A,#-0x80
XRL A,R7
??GenericApp_ProcessEvent_11:
MOV R3,A
SJMP ??GenericApp_ProcessEvent_12
// 277 }
// 278
// 279 // Send a message out - This event is generated by a timer
// 280 // (setup in GenericApp_Init()).
// 281 if ( events & GENERICAPP_SEND_MSG_EVT )
??GenericApp_ProcessEvent_1:
MOV A,R6
MOV C,0xE0 /* A */.0
JNC ??GenericApp_ProcessEvent_13
// 282 {
// 283 // Send "the" message
// 284 GenericApp_SendTheMessage();
; Setup parameters for call to function GenericApp_SendTheMessage
MOV DPTR,#(GenericApp_SendTheMessage & 0xffff)
MOV A,#((GenericApp_SendTheMessage >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 285
// 286 // Setup to send message again
// 287 osal_start_timer( GENERICAPP_SEND_MSG_EVT,
// 288 GENERICAPP_SEND_MSG_TIMEOUT );
; Setup parameters for call to function osal_start_timer
MOV R4,#-0x78
MOV R5,#0x13
MOV R2,#0x1
MOV R3,#0x0
MOV DPTR,#(osal_start_timer & 0xffff)
MOV A,#((osal_start_timer >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 289
// 290 // return unprocessed events
// 291 return (events ^ GENERICAPP_SEND_MSG_EVT);
MOV A,#0x1
XRL A,R6
MOV R2,A
MOV A,R7
SJMP ??GenericApp_ProcessEvent_11
// 292 }
// 293
// 294 // Discard unknown events
// 295 return 0;
??GenericApp_ProcessEvent_13:
MOV R2,#0x0
MOV R3,#0x0
??GenericApp_ProcessEvent_12:
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock1
// 296 }
// 297
// 298 /*********************************************************************
// 299 * Event Generation Functions
// 300 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -