NVDS

NVDS is the abbreviation of Non-Volitale Data Storage. BLE SDK make use of NVDS APIs to get or set Device Address, Bonding information and System configuration parameters. NVDS gets and sets data according to a 1-byte tag. Tags are divided into read-only and read-write.

Read-Only Tags

TAG Where is the TAG stored ?
NVDS_TAG_BD_ADDRESS Flash Information Page
NVDS_TAG_DEVICE_NAME Hardcoded in Firmware
NVDS_TAG_EXT_WAKEUP_TIME Hardcoded in Firmware
NVDS_TAG_OSC_WAKEUP_TIME Hardcoded in Firmware
NVDS_TAG_RM_WAKEUP_TIME Hardcoded in Firmware
NVDS_TAG_SLEEP_ENABLE Hardcoded in Firmware
NVDS_TAG_EXT_WAKEUP_ENABLE Hardcoded in Firmware
NVDS_TAG_LPCLK_DRIFT Hardcoded in Firmware

Read-Write Tags

Except Read-Only tags, all others tags are Read-Write. NVDS operations to Read-Write tags are implemented based on BXFS. At nvds_init(), a directory for NVDS is made under BXFS root directory. All NVDS operations to a Read-Write tag map to corresponding operations of BXFS to the record under NVDS directory. For example:

nvds_get(0xa0)  --->    bxfs_read(nvds_dir,0xa0)
nvds_put(0xa0)  --->    bxfs_write(nvds_dir,0xa0)
nvds_del(0xa0)  --->    bxfs_del_record(nvds_dir,0xa0)

Becasue of data caching feature of BXFS, it’s also necessary to validate your changes by nvds_write_through().