📄 zglobals.s51
字号:
// 268
// 269 static uint8 zgItemInit( uint16 id, uint16 len, void *buf, uint8 setDefault );
// 270
// 271
// 272 /*********************************************************************
// 273 * @fn zgItemInit()
// 274 *
// 275 * @brief
// 276 *
// 277 * Initialize a global item. If the item doesn't exist in NV memory,
// 278 * write the system default (value passed in) into NV memory. But if
// 279 * it exists, set the item to the value stored in NV memory.
// 280 *
// 281 * Also, if setDefault is TRUE and the item exists, we will write
// 282 * the default value to NV space.
// 283 *
// 284 * @param id - item id
// 285 * @param len - item len
// 286 * @param buf - pointer to the item
// 287 * @param setDefault - TRUE to set default, not read
// 288 *
// 289 * @return ZSUCCESS if successful, NV_ITEM_UNINIT if item did not
// 290 * exist in NV, NV_OPER_FAILED if failure.
// 291 */
// 292 static uint8 zgItemInit( uint16 id, uint16 len, void *buf, uint8 setDefault )
// 293 {
// 294
// 295 uint8 status;
// 296
// 297 // If the item doesn't exist in NV memory, create and initialize
// 298 // it with the value passed in.
// 299 status = osal_nv_item_init( id, len, buf );
// 300 if ( status == ZSUCCESS )
// 301 {
// 302 if ( setDefault )
// 303 {
// 304 // Write the default value back to NV
// 305 status = osal_nv_write( id, 0, len, buf );
// 306 }
// 307 else
// 308 {
// 309 // The item exists in NV memory, read it from NV memory
// 310 status = osal_nv_read( id, 0, len, buf );
// 311 }
// 312 }
// 313
// 314 return (status);
// 315 }
// 316
// 317 /*********************************************************************
// 318 * API FUNCTIONS
// 319 */
// 320
// 321
// 322 /*********************************************************************
// 323 * @fn zgInit
// 324 *
// 325 * @brief
// 326 *
// 327 * Initialize the Z-Stack Globals. If an item doesn't exist in
// 328 * NV memory, write the system default into NV memory. But if
// 329 * it exists, set the item to the value stored in NV memory.
// 330 *
// 331 * NOTE: The Startup Options (ZCD_NV_STARTUP_OPTION) indicate
// 332 * that the Config state items (zgItemTable) need to be
// 333 * set to defaults (ZCD_STARTOPT_DEFAULT_CONFIG_STATE). The
// 334 *
// 335 *
// 336 * @param none
// 337 *
// 338 * @return ZSUCCESS if successful, NV_ITEM_UNINIT if item did not
// 339 * exist in NV, NV_OPER_FAILED if failure.
// 340 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 341 uint8 zgInit( void )
zgInit:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function zgInit
// 342 {
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
// 343 uint8 i = 0;
MOV ?V0 + 3,#0x0
// 344 uint8 setDefault = FALSE;
MOV ?V0 + 2,#0x0
// 345
// 346 // Do we want to default the Config state values
// 347 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
// 348 {
// 349 setDefault = TRUE;
MOV ?V0 + 2,#0x1
// 350 }
// 351
// 352 #if 0
// 353 // Enable this section if you need to track the number of resets
// 354 // This section is normally disabled to minimize "wear" on NV memory
// 355 uint16 bootCnt = 0;
// 356
// 357 // Update the Boot Counter
// 358 if ( osal_nv_item_init( ZCD_NV_BOOTCOUNTER, sizeof(bootCnt), &bootCnt ) == ZSUCCESS )
// 359 {
// 360 // Get the old value from NV memory
// 361 osal_nv_read( ZCD_NV_BOOTCOUNTER, 0, sizeof(bootCnt), &bootCnt );
// 362 }
// 363
// 364 // Increment the Boot Counter and store it into NV memory
// 365 if ( setDefault )
// 366 bootCnt = 0;
// 367 else
// 368 bootCnt++;
// 369 osal_nv_write( ZCD_NV_BOOTCOUNTER, 0, sizeof(bootCnt), &bootCnt );
// 370 #endif
// 371
// 372 // Initialize the Extended PAN ID as my own extended address
// 373 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
// 374
// 375 #ifndef NONWK
// 376 // Initialize the Pre-Configured Key to the default key
// 377 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
// 378 #endif // NONWK
// 379
// 380 while ( zgItemTable[i].id != 0x00 )
// 381 {
??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)
// 382 // Initialize the item
// 383 zgItemInit( zgItemTable[i].id, zgItemTable[i].len, zgItemTable[i].buf, setDefault );
// 384
// 385 // Move on to the next item
// 386 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)
// 387 }
// 388
// 389 // Clear the Config State default
// 390 if ( setDefault )
??zgInit_6:
MOV A,?V0 + 2
JZ ??zgInit_7
// 391 {
// 392 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()
// 393 }
// 394
// 395 return ( ZSUCCESS );
??zgInit_7:
MOV R1,#0x0
MOV R7,#0x7
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock0
// 396 }
// 397
// 398 /*********************************************************************
// 399 * @fn zgReadStartupOptions
// 400 *
// 401 * @brief Reads the ZCD_NV_STARTUP_OPTION NV Item.
// 402 *
// 403 * @param none
// 404 *
// 405 * @return the ZCD_NV_STARTUP_OPTION NV item
// 406 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 407 uint8 zgReadStartupOptions( void )
zgReadStartupOptions:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function zgReadStartupOptions
// 408 {
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)
// 409 // Default to Use Config State and Use Network State
// 410 uint8 startupOption = 0;
LCALL ?Subroutine0 & 0xFFFF
// 411
// 412 // This should have been done in ZMain.c, but just in case.
// 413 if ( osal_nv_item_init( ZCD_NV_STARTUP_OPTION,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -