📄 sampleapp.s51
字号:
; Setup parameters for call to function SampleApp_MessageMSGCB
MOV R2,?V0 + 0
MOV R3,?V0 + 1
MOV DPTR,#(SampleApp_MessageMSGCB & 0xffff)
MOV A,#((SampleApp_MessageMSGCB >> 16) & 0xff)
SJMP ??SampleApp_ProcessEvent_6
// 289 }
// 290
// 291 // return unprocessed events
// 292 return (events ^ SYS_EVENT_MSG);
??SampleApp_ProcessEvent_8:
MOV A,R6
MOV R2,A
MOV A,#-0x80
XRL A,R7
??SampleApp_ProcessEvent_11:
MOV R3,A
SJMP ??SampleApp_ProcessEvent_12
// 293 }
// 294
// 295 // Send a message out - This event is generated by a timer
// 296 // (setup in SampleApp_Init()).
// 297 if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
??SampleApp_ProcessEvent_1:
MOV A,R6
MOV C,0xE0 /* A */.0
JNC ??SampleApp_ProcessEvent_13
// 298 {
// 299 // Send the periodic message
// 300 SampleApp_SendPeriodicMessage();
; Setup parameters for call to function SampleApp_SendPeriodicMessage
MOV DPTR,#(SampleApp_SendPeriodicMessage & 0xffff)
MOV A,#((SampleApp_SendPeriodicMessage >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 301
// 302 // Setup to send message again in normal period (+ a little jitter)
// 303 osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
// 304 (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) );
; Setup parameters for call to function osal_rand
MOV DPTR,#(osal_rand & 0xffff)
MOV A,#((osal_rand >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 0,R2
MOV R0,?V0 + 0
; Setup parameters for call to function osal_start_timerEx
MOV A,#-0x78
ADD A,R0
MOV R4,A
MOV A,#0x13
ADDC A,#0x0
MOV R5,A
MOV R2,#0x1
MOV R3,#0x0
MOV DPTR,#SampleApp_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(osal_start_timerEx & 0xffff)
MOV A,#((osal_start_timerEx >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 305
// 306 // return unprocessed events
// 307 return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
MOV A,#0x1
XRL A,R6
MOV R2,A
MOV A,R7
SJMP ??SampleApp_ProcessEvent_11
// 308 }
// 309
// 310 // Discard unknown events
// 311 return 0;
??SampleApp_ProcessEvent_13:
MOV R2,#0x0
MOV R3,#0x0
??SampleApp_ProcessEvent_12:
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock1
// 312 }
// 313
// 314 /*********************************************************************
// 315 * Event Generation Functions
// 316 */
// 317 /*********************************************************************
// 318 * @fn SampleApp_HandleKeys
// 319 *
// 320 * @brief Handles all key events for this device.
// 321 *
// 322 * @param shift - true if in shift/alt.
// 323 * @param keys - bit field for key events. Valid entries:
// 324 * HAL_KEY_SW_2
// 325 * HAL_KEY_SW_1
// 326 *
// 327 * @return none
// 328 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 329 void SampleApp_HandleKeys( uint8 shift, uint8 keys )
SampleApp_HandleKeys:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function SampleApp_HandleKeys
// 330 {
FUNCALL SampleApp_HandleKeys, SampleApp_SendFlashMessage
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL SampleApp_HandleKeys, aps_FindGroup
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL SampleApp_HandleKeys, aps_RemoveGroup
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL SampleApp_HandleKeys, aps_AddGroup
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
// 331 if ( keys & HAL_KEY_SW_1 )
MOV C,0xE0 /* A */.0
JNC ??SampleApp_HandleKeys_0
// 332 {
// 333 /* This key sends the Flash Command is sent to Group 1.
// 334 * This device will not receive the Flash Command from this
// 335 * device (even if it belongs to group 1).
// 336 */
// 337 SampleApp_SendFlashMessage( SAMPLEAPP_FLASH_DURATION );
; Setup parameters for call to function SampleApp_SendFlashMessage
MOV R2,#-0x18
MOV R3,#0x3
MOV DPTR,#(SampleApp_SendFlashMessage & 0xffff)
MOV A,#((SampleApp_SendFlashMessage >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 338 }
// 339
// 340 if ( keys & HAL_KEY_SW_2 )
??SampleApp_HandleKeys_0:
MOV A,R6
MOV C,0xE0 /* A */.1
JNC ??SampleApp_HandleKeys_1
// 341 {
// 342 /* The Flashr Command is sent to Group 1.
// 343 * This key toggles this device in and out of group 1.
// 344 * If this device doesn't belong to group 1, this application
// 345 * will not receive the Flash command sent to group 1.
// 346 */
// 347 aps_Group_t *grp;
// 348 grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
// 349 if ( grp )
; Setup parameters for call to function aps_FindGroup
MOV R2,#0x1
MOV R3,#0x0
MOV R1,#0x14
MOV DPTR,#(aps_FindGroup & 0xffff)
MOV A,#((aps_FindGroup >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R2
JNZ ??SampleApp_HandleKeys_2
MOV A,R3
??SampleApp_HandleKeys_2:
JZ ??SampleApp_HandleKeys_3
// 350 {
// 351 // Remove from the group
// 352 aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
; Setup parameters for call to function aps_RemoveGroup
MOV R2,#0x1
MOV R3,#0x0
MOV R1,#0x14
MOV DPTR,#(aps_RemoveGroup & 0xffff)
MOV A,#((aps_RemoveGroup >> 16) & 0xff)
SJMP ??SampleApp_HandleKeys_4
// 353 }
// 354 else
// 355 {
// 356 // Add to the flash group
// 357 aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
??SampleApp_HandleKeys_3:
; Setup parameters for call to function aps_AddGroup
MOV R2,#(SampleApp_Group & 0xff)
MOV R3,#((SampleApp_Group >> 8) & 0xff)
MOV R1,#0x14
MOV DPTR,#(aps_AddGroup & 0xffff)
MOV A,#((aps_AddGroup >> 16) & 0xff)
??SampleApp_HandleKeys_4:
LCALL ?BCALL ; Banked call to: DPTR()
// 358 }
// 359 }
// 360 }
??SampleApp_HandleKeys_1:
LJMP ??Subroutine1_0 & 0xFFFF
CFI EndBlock cfiBlock2
// 361
// 362 /*********************************************************************
// 363 * LOCAL FUNCTIONS
// 364 */
// 365
// 366 /*********************************************************************
// 367 * @fn SampleApp_MessageMSGCB
// 368 *
// 369 * @brief Data message processor callback. This function processes
// 370 * any incoming data - probably from other devices. So, based
// 371 * on cluster ID, perform the intended action.
// 372 *
// 373 * @param none
// 374 *
// 375 * @return none
// 376 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 377 UINT8 SendData(UINT8 *buf, UINT16 addr, UINT8 Leng)
SendData:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function SendData
// 378 {
FUNCALL SendData, AF_DataRequest
LOCFRAME XSTACK, 23, STACK
ARGFRAME XSTACK, 23, 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: 4
MOV A,#-0x4
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 14)
// 379 afAddrType_t SendDataAddr;
// 380
// 381 SendDataAddr.addrMode = (afAddrMode_t)Addr16Bit;
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV A,#0x2
MOVX @DPTR,A
// 382 SendDataAddr.endPoint = SAMPLEAPP_ENDPOINT;
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOV A,#0x14
MOVX @DPTR,A
// 383 SendDataAddr.addr.shortAddr = addr;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
// 384 if ( AF_DataRequest( &SendDataAddr, &SampleApp_epDesc,
// 385 SAMPLEAPP_PERIODIC_CLUSTERID,
// 386 Leng,
// 387 buf,
// 388 &SampleApp_TransID,
// 389 AF_DISCV_ROUTE,
// 390 AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
; Setup parameters for call to function AF_DataRequest
MOV ?V0 + 0,#0xa
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 15)
MOV ?V0 + 0,#(SampleApp_TransID & 0xff)
MOV ?V0 + 1,#((SampleApp_TransID >> 8) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 17)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 19)
MOV ?V0 + 0,R1
MOV ?V0 + 1,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 21)
MOV ?V0 + 0,#0x1
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 23)
MOV R1,#0x20
MOV R4,#(SampleApp_epDesc & 0xff)
MOV R5,#((SampleApp_epDesc >> 8) & 0xff)
MOV A,#0x9
LCALL ?XSTACK_DISP0_8
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#(AF_DataRequest & 0xffff)
MOV A,#((AF_DataRequest >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x9
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 14)
MOV A,R1
JNZ ??SendData_0
// 391 {
// 392 return 1;
MOV R1,#0x1
SJMP ??SendData_1
// 393 }
// 394 else
// 395 {
// 396 return 0;// Error occurred in request to send.
??SendData_0:
MOV R1,#0x0
??SendData_1:
MOV A,#0x4
LJMP ?Subroutine1 & 0xFFFF
CFI EndBlock cfiBlock3
// 397 }
// 398 }
// 399
// 400 /*********************************************************************
// 401 * @fn SampleApp_MessageMSGCB
// 402 *
// 403 * @brief
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -