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