📄 zglobals.s51
字号:
// 271
// 272
// 273 /*********************************************************************
// 274 * @fn zgItemInit()
// 275 *
// 276 * @brief
// 277 *
// 278 * Initialize a global item. If the item doesn't exist in NV memory,
// 279 * write the system default (value passed in) into NV memory. But if
// 280 * it exists, set the item to the value stored in NV memory.
// 281 *
// 282 * Also, if setDefault is TRUE and the item exists, we will write
// 283 * the default value to NV space.
// 284 *
// 285 * @param id - item id
// 286 * @param len - item len
// 287 * @param buf - pointer to the item
// 288 * @param setDefault - TRUE to set default, not read
// 289 *
// 290 * @return ZSUCCESS if successful, NV_ITEM_UNINIT if item did not
// 291 * exist in NV, NV_OPER_FAILED if failure.
// 292 */
// 293 static uint8 zgItemInit( uint16 id, uint16 len, void *buf, uint8 setDefault )
// 294 {
// 295
// 296 uint8 status;
// 297
// 298 // If the item doesn't exist in NV memory, create and initialize
// 299 // it with the value passed in.
// 300 status = osal_nv_item_init( id, len, buf );
// 301 if ( status == ZSUCCESS )
// 302 {
// 303 if ( setDefault )
// 304 {
// 305 // Write the default value back to NV
// 306 status = osal_nv_write( id, 0, len, buf );
// 307 }
// 308 else
// 309 {
// 310 // The item exists in NV memory, read it from NV memory
// 311 status = osal_nv_read( id, 0, len, buf );
// 312 }
// 313 }
// 314
// 315 return (status);
// 316 }
// 317
// 318 /*********************************************************************
// 319 * API FUNCTIONS
// 320 */
// 321
// 322
// 323 /*********************************************************************
// 324 * @fn zgInit
// 325 *
// 326 * @brief
// 327 *
// 328 * Initialize the Z-Stack Globals. If an item doesn't exist in
// 329 * NV memory, write the system default into NV memory. But if
// 330 * it exists, set the item to the value stored in NV memory.
// 331 *
// 332 * NOTE: The Startup Options (ZCD_NV_STARTUP_OPTION) indicate
// 333 * that the Config state items (zgItemTable) need to be
// 334 * set to defaults (ZCD_STARTOPT_DEFAULT_CONFIG_STATE). The
// 335 *
// 336 *
// 337 * @param none
// 338 *
// 339 * @return ZSUCCESS if successful, NV_ITEM_UNINIT if item did not
// 340 * exist in NV, NV_OPER_FAILED if failure.
// 341 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 342 uint8 zgInit( void )
zgInit:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function zgInit
// 343 {
FUNCALL zgInit, zgReadStartupOptions
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
FUNCALL zgInit, ZMacGetReq
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
FUNCALL zgInit, osal_memcpy
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL zgInit, osal_nv_read
LOCFRAME XSTACK, 19, STACK
ARGFRAME XSTACK, 19, STACK
FUNCALL zgInit, osal_nv_item_init
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL zgInit, osal_nv_write
LOCFRAME XSTACK, 19, STACK
ARGFRAME XSTACK, 19, STACK
FUNCALL zgInit, zgWriteStartupOptions
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
MOV A,#-0xf
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 V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
; Saved register size: 15
; Auto size: 0
// 344 uint8 i = 0;
MOV ?V0 + 3,#0x0
// 345 uint8 setDefault = FALSE;
MOV ?V0 + 2,#0x0
// 346
// 347 // Do we want to default the Config state values
// 348 if ( zgReadStartupOptions() & ZCD_STARTOPT_DEFAULT_CONFIG_STATE )
; Setup parameters for call to function zgReadStartupOptions
MOV DPTR,#(zgReadStartupOptions & 0xffff)
MOV A,#((zgReadStartupOptions >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
MOV C,0xE0 /* A */.0
JNC ??zgInit_0
// 349 {
// 350 setDefault = TRUE;
MOV ?V0 + 2,#0x1
// 351 }
// 352
// 353 #if 0
// 354 // Enable this section if you need to track the number of resets
// 355 // This section is normally disabled to minimize "wear" on NV memory
// 356 uint16 bootCnt = 0;
// 357
// 358 // Update the Boot Counter
// 359 if ( osal_nv_item_init( ZCD_NV_BOOTCOUNTER, sizeof(bootCnt), &bootCnt ) == ZSUCCESS )
// 360 {
// 361 // Get the old value from NV memory
// 362 osal_nv_read( ZCD_NV_BOOTCOUNTER, 0, sizeof(bootCnt), &bootCnt );
// 363 }
// 364
// 365 // Increment the Boot Counter and store it into NV memory
// 366 if ( setDefault )
// 367 bootCnt = 0;
// 368 else
// 369 bootCnt++;
// 370 osal_nv_write( ZCD_NV_BOOTCOUNTER, 0, sizeof(bootCnt), &bootCnt );
// 371 #endif
// 372
// 373 // Initialize the Extended PAN ID as my own extended address
// 374 ZMacGetReq( ZMacExtAddr, zgExtendedPANID );
??zgInit_0:
; Setup parameters for call to function ZMacGetReq
MOV R2,#(zgExtendedPANID & 0xff)
MOV R3,#((zgExtendedPANID >> 8) & 0xff)
MOV R1,#-0x1e
LCALL ZMacGetReq & 0xFFFF
// 375
// 376 #ifndef NONWK
// 377 // Initialize the Pre-Configured Key to the default key
// 378 osal_memcpy( zgPreConfigKey, defaultKey, SEC_KEY_LEN ); // Do NOT Change!!!
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 4,#(defaultKey & 0xff)
MOV ?V0 + 5,#((defaultKey >> 8) & 0xff)
MOV ?V0 + 6,#-0x80
MOV R0,#?V0 + 4
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 18)
MOV R4,#0x10
MOV R5,#0x0
MOV R2,#(zgPreConfigKey & 0xff)
MOV R3,#((zgPreConfigKey >> 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, 15)
SJMP ??zgInit_1
// 379 #endif // NONWK
// 380
// 381 while ( zgItemTable[i].id != 0x00 )
// 382 {
??zgInit_2:
; Setup parameters for call to function osal_nv_read
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 17)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 19)
MOV R4,#0x0
MOV R5,#0x0
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_nv_read & 0xffff)
MOV A,#((osal_nv_read >> 16) & 0xff)
??zgInit_3:
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 15)
// 383 // Initialize the item
// 384 zgItemInit( zgItemTable[i].id, zgItemTable[i].len, zgItemTable[i].buf, setDefault );
// 385
// 386 // Move on to the next item
// 387 i++;
??zgInit_4:
INC ?V0 + 3
??zgInit_1:
MOV A,?V0 + 3
MOV B,#0x6
MUL AB
MOV R0,A
MOV R2,B
MOV A,R2
MOV R1,A
MOV A,R0
ADD A,#(??zgItemTable & 0xff)
MOV DPL,A
MOV A,R1
ADDC A,#((??zgItemTable >> 8) & 0xff)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R0,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV R1,A
MOV A,R0
JNZ ??zgInit_5
MOV A,R1
??zgInit_5:
JNZ $+5
LJMP ??zgInit_6 & 0xFFFF
MOV A,?V0 + 3
MOV B,#0x6
MUL AB
MOV R0,A
MOV A,R2
MOV R1,A
MOV A,R0
ADD A,#(??zgItemTable & 0xff)
MOV R0,A
MOV A,R1
ADDC A,#((??zgItemTable >> 8) & 0xff)
MOV R1,A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV ?V0 + 4,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV ?V0 + 5,A
MOV DPL,R0
MOV DPH,R1
INC DPTR
INC DPTR
CLR A
MOVC A,@A+DPTR
PUSH A
MOV A,#0x1
MOVC A,@A+DPTR
MOV DPH,A
POP DPL
MOV ?V0 + 0,DPL
MOV ?V0 + 1,DPH
MOV DPL,R0
MOV DPH,R1
CLR A
MOVC A,@A+DPTR
PUSH A
MOV A,#0x1
MOVC A,@A+DPTR
MOV DPH,A
POP DPL
MOV R6,DPL
MOV R7,DPH
; Setup parameters for call to function osal_nv_item_init
MOV R0,#?V0 + 4
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 17)
MOV R4,?V0 + 0
MOV R5,?V0 + 1
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_nv_item_init & 0xffff)
MOV A,#((osal_nv_item_init >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 15)
MOV A,R1
JZ $+5
LJMP ??zgInit_4 & 0xFFFF
MOV A,?V0 + 2
MOV R0,#?V0 + 4
JNZ $+5
LJMP ??zgInit_2 & 0xFFFF
; Setup parameters for call to function osal_nv_write
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 17)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 19)
MOV R4,#0x0
MOV R5,#0x0
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_nv_write & 0xffff)
MOV A,#((osal_nv_write >> 16) & 0xff)
LJMP ??zgInit_3 & 0xFFFF
CFI CFA_XSP16 add(XSP16, 15)
// 388 }
// 389
// 390 // Clear the Config State default
// 391 if ( setDefault )
??zgInit_6:
MOV A,?V0 + 2
JZ ??zgInit_7
// 392 {
// 393 zgWriteStartupOptions( ZG_STARTUP_CLEAR, ZCD_STARTOPT_DEFAULT_CONFIG_STATE );
; Setup parameters for call to function zgWriteStartupOptions
MOV R2,#0x1
MOV R1,#0x0
MOV DPTR,#(zgWriteStartupOptions & 0xffff)
MOV A,#((zgWriteStartupOptions >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 394 }
// 395
// 396 return ( ZSUCCESS );
??zgInit_7:
MOV R1,#0x0
MOV R7,#0x7
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock0
// 397 }
// 398
// 399 /*********************************************************************
// 400 * @fn zgReadStartupOptions
// 401 *
// 402 * @brief Reads the ZCD_NV_STARTUP_OPTION NV Item.
// 403 *
// 404 * @param none
// 405 *
// 406 * @return the ZCD_NV_STARTUP_OPTION NV item
// 407 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 408 uint8 zgReadStartupOptions( void )
zgReadStartupOptions:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function zgReadStartupOptions
// 409 {
FUNCALL zgReadStartupOptions, osal_nv_item_init
LOCFRAME XSTACK, 13, STACK
ARGFRAME XSTACK, 13, STACK
FUNCALL zgReadStartupOptions, osal_nv_read
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, 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: 1
MOV A,#-0x1
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
// 410 // Default to Use Config State and Use Network State
// 411 uint8 startupOption = 0;
LCALL ?Subroutine0 & 0xFFFF
// 412
// 413 // This should have been done in ZMain.c, but just in case.
// 414 if ( osal_nv_item_init( ZCD_NV_STARTUP_OPTION,
// 415 sizeof(startupOption),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -