📄 zdapp.s51
字号:
LOCFRAME XSTACK, 1, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 1, STACK
FUNCALL ZDApp_Init, afRegister
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 1, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 1, STACK
FUNCALL ZDApp_Init, ZDAppSetupProtoVersion
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 1, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 1, STACK
FUNCALL ZDApp_Init, NLME_GetRequest
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 1, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 1, STACK
FUNCALL ZDApp_Init, NLME_SetBroadcastFilter
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 1, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 1, STACK
FUNCALL ZDApp_Init, ZDOInitDevice
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 1, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 1, STACK
FUNCALL ZDApp_Init, HalLedBlink
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 1, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 1, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 1
MOV A,#-0x1
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 1)
// 282 uint8 capabilities;
// 283
// 284 // Save the task ID
// 285 ZDAppTaskID = task_id;
MOV A,R1
MOV DPTR,#ZDAppTaskID
MOVX @DPTR,A
// 286
// 287 // Initialize the ZDO global device short address storage
// 288 ZDAppNwkAddr.addrMode = Addr16Bit;
MOV A,#0x2
MOV DPTR,#(ZDAppNwkAddr + 8)
MOVX @DPTR,A
// 289 ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;
MOV DPTR,#ZDAppNwkAddr
MOV A,#-0x2
MOVX @DPTR,A
INC DPTR
MOV A,#-0x1
MOVX @DPTR,A
// 290 (void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.
; Setup parameters for call to function NLME_GetExtAddr
MOV DPTR,#(NLME_GetExtAddr & 0xffff)
MOV A,#((NLME_GetExtAddr >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 291
// 292 // Check for manual "Hold Auto Start"
// 293 ZDAppCheckForHoldKey();
// 294
// 295 // Initialize ZDO items and setup the device - type of device to create.
// 296 ZDO_Init();
; Setup parameters for call to function ZDO_Init
MOV DPTR,#(ZDO_Init & 0xffff)
MOV A,#((ZDO_Init >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 297
// 298 // Register the endpoint description with the AF
// 299 // This task doesn't have a Simple description, but we still need
// 300 // to register the endpoint.
// 301 afRegister( (endPointDesc_t *)&ZDApp_epDesc );
; Setup parameters for call to function afRegister
MOV R2,#(ZDApp_epDesc & 0xff)
MOV R3,#((ZDApp_epDesc >> 8) & 0xff)
MOV DPTR,#(afRegister & 0xffff)
MOV A,#((afRegister >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 302
// 303 #if defined( ZDO_USERDESC_RESPONSE )
// 304 ZDApp_InitUserDesc();
// 305 #endif // ZDO_USERDESC_RESPONSE
// 306
// 307 #if defined( ZDO_CACHE )
// 308 ZDCacheInit();
// 309 #endif
// 310
// 311 // Setup the Zigbee Network Protocol Version
// 312 ZDAppSetupProtoVersion();
; Setup parameters for call to function ZDAppSetupProtoVersion
MOV DPTR,#(ZDAppSetupProtoVersion & 0xffff)
MOV A,#((ZDAppSetupProtoVersion >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 313
// 314 // set broadcast address mask to support broadcast filtering
// 315 NLME_GetRequest(nwkCapabilityInfo, 0, &capabilities);
; Setup parameters for call to function NLME_GetRequest
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R4,DPL
MOV R5,DPH
MOV R2,#0x0
MOV R3,#0x0
MOV R1,#-0x71
MOV DPTR,#(NLME_GetRequest & 0xffff)
MOV A,#((NLME_GetRequest >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 316 NLME_SetBroadcastFilter( capabilities );
; Setup parameters for call to function NLME_SetBroadcastFilter
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(NLME_SetBroadcastFilter & 0xffff)
MOV A,#((NLME_SetBroadcastFilter >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 317
// 318 // Start the device?
// 319 if ( devState != DEV_HOLD )
MOV DPTR,#devState
MOVX A,@DPTR
JZ ??ZDApp_Init_0
// 320 {
// 321 ZDOInitDevice( 0 );
; Setup parameters for call to function ZDOInitDevice
MOV R2,#0x0
MOV R3,#0x0
MOV DPTR,#(ZDOInitDevice & 0xffff)
MOV A,#((ZDOInitDevice >> 16) & 0xff)
SJMP ??ZDApp_Init_1
// 322 }
// 323 else
// 324 {
// 325 // Blink LED to indicate HOLD_START
// 326 HalLedBlink ( HAL_LED_4, 0, 50, 500 );
??ZDApp_Init_0:
; Setup parameters for call to function HalLedBlink
MOV R4,#-0xc
MOV R5,#0x1
MOV R3,#0x32
MOV R2,#0x0
MOV R1,#0x8
MOV DPTR,#(HalLedBlink & 0xffff)
MOV A,#((HalLedBlink >> 16) & 0xff)
??ZDApp_Init_1:
LJMP ?Subroutine27 & 0xFFFF
CFI EndBlock cfiBlock0
// 327 }
// 328 } /* ZDO_Init() */
// 329
// 330 /*********************************************************************
// 331 * @fn ZDApp_event_loop()
// 332 *
// 333 * @brief Main event loop for Zigbee device objects task. This function
// 334 * should be called at periodic intervals.
// 335 *
// 336 * @param task_id - Task ID
// 337 * @param events - Bitmap of events
// 338 *
// 339 * @return none
// 340 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 341 UINT16 ZDApp_event_loop( byte task_id, UINT16 events )
ZDApp_event_loop:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function ZDApp_event_loop
// 342 {
FUNCALL ZDApp_event_loop, ZDO_StartDevice
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL ZDApp_event_loop, ZDApp_ProcessOSALMsg
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL ZDApp_event_loop, osal_msg_deallocate
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL ZDApp_event_loop, osal_msg_receive
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL ZDApp_event_loop, ZDApp_NetworkStartEvt
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL ZDApp_event_loop, osal_pwrmgr_device
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL ZDApp_event_loop, osal_set_event
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL ZDApp_event_loop, ZDO_UpdateNwkStatus
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
MOV A,#-0xa
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 V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
// 343 uint8 *msg_ptr;
// 344
// 345 if ( events & SYS_EVENT_MSG )
MOV A,#-0x80
ANL A,R7
MOV R1,A
CLR A
JNZ ??ZDApp_event_loop_0
MOV A,R1
??ZDApp_event_loop_0:
JNZ ??ZDApp_event_loop_1
// 346 {
// 347 while ( (msg_ptr = osal_msg_receive( ZDAppTaskID )) )
// 348 {
// 349 ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr );
// 350
// 351 // Release the memory
// 352 osal_msg_deallocate( msg_ptr );
// 353 }
// 354
// 355 // Return unprocessed events
// 356 return (events ^ SYS_EVENT_MSG);
// 357 }
// 358
// 359 if ( events & ZDO_NETWORK_INIT )
MOV A,R6
MOV C,0xE0 /* A */.0
JNC ??ZDApp_event_loop_2
// 360 {
// 361 // Initialize apps and start the network
// 362 devState = DEV_INIT;
MOV A,#0x1
MOV DPTR,#devState
MOVX @DPTR,A
// 363 ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
// 364 DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );
; Setup parameters for call to function ZDO_StartDevice
MOV R4,#0xf
MOV R3,#0xf
MOV DPTR,#devStartMode
MOVX A,@DPTR
MOV R2,A
MOV DPTR,#ZDO_Config_Node_Descriptor
MOVX A,@DPTR
ANL A,#0x7
MOV R1,A
MOV DPTR,#(ZDO_StartDevice & 0xffff)
MOV A,#((ZDO_StartDevice >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 365
// 366 // Return unprocessed events
// 367 return (events ^ ZDO_NETWORK_INIT);
MOV A,#0x1
??ZDApp_event_loop_3:
XRL A,R6
MOV R2,A
MOV A,R7
??ZDApp_event_loop_4:
MOV R3,A
LJMP ??ZDApp_event_loop_5 & 0xFFFF
// 368 }
??ZDApp_event_loop_6:
; Setup parameters for call to function ZDApp_ProcessOSALMsg
MOV DPTR,#(ZDApp_ProcessOSALMsg & 0xffff)
MOV A,#((ZDApp_ProcessOSALMsg >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
; 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()
??ZDApp_event_loop_1:
; Setup parameters for call to function osal_msg_receive
MOV DPTR,#ZDAppTaskID
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,R2
JNZ ??ZDApp_event_loop_7
MOV A,R3
??ZDApp_event_loop_7:
JNZ ??ZDApp_event_loop_6
MOV A,R6
MOV R2,A
MOV A,#-0x80
??ZDApp_event_loop_8:
XRL A,R7
SJMP ??ZDApp_event_loop_4
// 369
// 370 #if defined (RTR_NWK)
// 371 if ( events & ZDO_NETWORK_START )
??ZDApp_event_loop_2:
ANL A,#0x2
JZ ??ZDApp_event_loop_9
// 372 {
// 373 ZDApp_NetworkStartEvt();
; Setup parameters for call to function ZDApp_NetworkStartEvt
MOV DPTR,#(ZDApp_NetworkStartEvt & 0xffff)
MOV A,#((ZDApp_NetworkStartEvt >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 374
// 375 // Return unprocessed events
// 376 return (events ^ ZDO_NETWORK_START);
MOV A,#0x2
??ZDApp_event_loop_10:
SJMP ??ZDApp_event_loop_3
// 377 }
// 378 #endif //RTR_NWK
// 379
// 380 #if defined ( RTR_NWK )
// 381 if ( events & ZDO_ROUTER_START )
??ZDApp_event_loop_9:
MOV A,R6
ANL A,#0x20
JZ ??ZDApp_event_loop_11
// 382 {
// 383 if ( nwkStatus == ZSuccess )
MOV DPTR,#nwkStatus
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -