📄 sampleapp.s51
字号:
// 184 #endif // SOFT_START
// 185
// 186 #if defined ( HOLD_AUTO_START )
// 187 // HOLD_AUTO_START is a compile option that will surpress ZDApp
// 188 // from starting the device and wait for the application to
// 189 // start the device.
// 190 ZDOInitDevice(0);
// 191 #endif
// 192
// 193 // Setup for the periodic message's destination address
// 194 // Broadcast to everyone
// 195 SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
MOV A,#0xf
MOV DPTR,#(SampleApp_Periodic_DstAddr + 2)
MOVX @DPTR,A
// 196 SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#(SampleApp_Periodic_DstAddr + 3)
MOVX @DPTR,A
// 197 SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
MOV DPTR,#SampleApp_Periodic_DstAddr
MOV A,#-0x1
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 198
// 199 // Setup for the flash command's destination address - Group 1
// 200 SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
MOV A,#0x1
MOV DPTR,#(SampleApp_Flash_DstAddr + 2)
MOVX @DPTR,A
// 201 SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#(SampleApp_Flash_DstAddr + 3)
MOVX @DPTR,A
// 202 SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
MOV DPTR,#SampleApp_Flash_DstAddr
MOV A,#0x1
MOVX @DPTR,A
INC DPTR
CLR A
MOVX @DPTR,A
// 203
// 204 // Fill out the endpoint description.
// 205 SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#SampleApp_epDesc
MOVX @DPTR,A
// 206 SampleApp_epDesc.task_id = &SampleApp_TaskID;
MOV DPTR,#(SampleApp_epDesc + 1)
MOV A,#(SampleApp_TaskID & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((SampleApp_TaskID >> 8) & 0xff)
MOVX @DPTR,A
// 207 SampleApp_epDesc.simpleDesc
// 208 = (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
MOV DPTR,#(SampleApp_epDesc + 3)
MOV A,#(SampleApp_SimpleDesc & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((SampleApp_SimpleDesc >> 8) & 0xff)
MOVX @DPTR,A
// 209 SampleApp_epDesc.latencyReq = noLatencyReqs;
CLR A
MOV DPTR,#(SampleApp_epDesc + 5)
MOVX @DPTR,A
// 210
// 211 // Register the endpoint description with the AF
// 212 afRegister( &SampleApp_epDesc );
; Setup parameters for call to function afRegister
MOV R2,#(SampleApp_epDesc & 0xff)
MOV R3,#((SampleApp_epDesc >> 8) & 0xff)
MOV DPTR,#(afRegister & 0xffff)
MOV A,#((afRegister >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 213
// 214 // Register for all key events - This app will handle all key events
// 215 RegisterForKeys( SampleApp_TaskID );
; Setup parameters for call to function RegisterForKeys
MOV DPTR,#SampleApp_TaskID
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(RegisterForKeys & 0xffff)
MOV A,#((RegisterForKeys >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 216
// 217 // By default, all devices start out in Group 1
// 218 SampleApp_Group.ID = 0x0001;
MOV DPTR,#SampleApp_Group
MOV A,#0x1
MOVX @DPTR,A
INC DPTR
CLR A
MOVX @DPTR,A
// 219 osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 0,#(`?<Constant "Group 1">` & 0xff)
MOV ?V0 + 1,#((`?<Constant "Group 1">` >> 8) & 0xff)
MOV ?V0 + 2,A
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV R4,#0x7
MOV R5,#0x0
MOV R2,#((SampleApp_Group + 2) & 0xff)
MOV R3,#(((SampleApp_Group + 2) >> 8) & 0xff)
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, 11)
// 220 aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
; 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)
LCALL ?BCALL ; Banked call to: DPTR()
// 221
// 222 #if defined ( LCD_SUPPORTED )
// 223 HalLcdWriteString( "SampleApp", HAL_LCD_LINE_1 );
// 224 #endif
// 225 }
MOV R7,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock0
// 226
// 227 /*********************************************************************
// 228 * @fn SampleApp_ProcessEvent
// 229 *
// 230 * @brief Generic Application Task event processor. This function
// 231 * is called to process all events for the task. Events
// 232 * include timers, messages and any other user defined events.
// 233 *
// 234 * @param task_id - The OSAL assigned task ID.
// 235 * @param events - events to process. This is a bit map and can
// 236 * contain more than one event.
// 237 *
// 238 * @return none
// 239 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 240 uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
SampleApp_ProcessEvent:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function SampleApp_ProcessEvent
// 241 {
FUNCALL SampleApp_ProcessEvent, osal_msg_receive
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, osal_start_timerEx
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, osal_msg_deallocate
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, osal_msg_receive
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, SampleApp_HandleKeys
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, SampleApp_MessageMSGCB
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, SampleApp_SendPeriodicMessage
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, osal_rand
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, osal_start_timerEx
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
// 242 afIncomingMSGPacket_t *MSGpkt;
// 243
// 244 if ( events & SYS_EVENT_MSG )
MOV A,#-0x80
ANL A,R7
MOV R1,A
CLR A
JNZ ??SampleApp_ProcessEvent_0
MOV A,R1
??SampleApp_ProcessEvent_0:
JNZ $+5
LJMP ??SampleApp_ProcessEvent_1 & 0xFFFF
// 245 {
// 246 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
; Setup parameters for call to function osal_msg_receive
SJMP ??SampleApp_ProcessEvent_2
// 247 while ( MSGpkt )
// 248 {
// 249 switch ( MSGpkt->hdr.event )
// 250 {
// 251 // Received when a key is pressed
// 252 case KEY_CHANGE:
// 253 SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
// 254 break;
// 255
// 256 // Received when a messages is received (OTA) for this endpoint
// 257 case AF_INCOMING_MSG_CMD:
// 258 SampleApp_MessageMSGCB( MSGpkt );
// 259 //HAL_TOGGLE_LED1();
// 260 break;
// 261
// 262 // Received whenever the device changes state in the network
// 263 case ZDO_STATE_CHANGE:
// 264 SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
??SampleApp_ProcessEvent_3:
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
MOVX A,@DPTR
MOV DPTR,#SampleApp_NwkState
MOVX @DPTR,A
// 265 if ( (SampleApp_NwkState == DEV_ZB_COORD)
// 266 || (SampleApp_NwkState == DEV_ROUTER)
// 267 || (SampleApp_NwkState == DEV_END_DEVICE) )
XRL A,#0x9
JZ ??SampleApp_ProcessEvent_4
MOVX A,@DPTR
XRL A,#0x7
JZ ??SampleApp_ProcessEvent_4
MOVX A,@DPTR
XRL A,#0x6
JNZ ??SampleApp_ProcessEvent_5
// 268 {
// 269 // Start sending the periodic message in a regular interval.
// 270 osal_start_timerEx( SampleApp_TaskID,
// 271 SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
// 272 SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );
??SampleApp_ProcessEvent_4:
; Setup parameters for call to function osal_start_timerEx
MOV R4,#-0x78
MOV R5,#0x13
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)
??SampleApp_ProcessEvent_6:
LCALL ?BCALL ; Banked call to: DPTR()
// 273 }
// 274 else
// 275 {
// 276 // Device is no longer in the network
// 277 }
// 278 break;
// 279
// 280 default:
// 281 break;
// 282 }
// 283
// 284 // Release the memory
// 285 osal_msg_deallocate( (uint8 *)MSGpkt );
??SampleApp_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()
// 286
// 287 // Next - if one is available
// 288 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
; Setup parameters for call to function osal_msg_receive
??SampleApp_ProcessEvent_2:
MOV DPTR,#SampleApp_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 ??SampleApp_ProcessEvent_7
MOV A,?V0 + 1
??SampleApp_ProcessEvent_7:
JZ ??SampleApp_ProcessEvent_8
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
MOVX A,@DPTR
LCALL ?UC_SWITCH_SPARSE
`?<Jumptable for SampleApp_ProcessEvent>_0`:
DB 0
DB 3
DB 26
DW ??SampleApp_ProcessEvent_9
DB 192
DW ??SampleApp_ProcessEvent_10
DB 209
DW ??SampleApp_ProcessEvent_3
DW ??SampleApp_ProcessEvent_5
??SampleApp_ProcessEvent_10:
; Setup parameters for call to function SampleApp_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,#(SampleApp_HandleKeys & 0xffff)
MOV A,#((SampleApp_HandleKeys >> 16) & 0xff)
SJMP ??SampleApp_ProcessEvent_6
??SampleApp_ProcessEvent_9:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -