Contiki 3.x
|
The settings manager is an EEPROM-based key-value store. More...
Macros | |
#define | TCC(a, b) ((a)+(b)*256) |
Two-character constant macro. | |
#define | SETTINGS_KEY_EUI64 TCC('E','8') |
EUI64 Address, 8 bytes. | |
#define | SETTINGS_KEY_EUI48 TCC('E','6') |
#define | SETTINGS_KEY_CHANNEL TCC('C','H') |
#define | SETTINGS_KEY_TXPOWER TCC('T','P') |
#define | SETTINGS_KEY_PAN_ID TCC('P','N') |
#define | SETTINGS_KEY_PAN_ADDR TCC('P','A') |
#define | SETTINGS_KEY_AES128KEY TCC('S','K') |
#define | SETTINGS_KEY_AES128ENABLED TCC('S','E') |
#define | SETTINGS_KEY_HOSTNAME TCC('H','N') |
#define | SETTINGS_KEY_DOMAINNAME TCC('D','N') |
#define | SETTINGS_KEY_RDC_INDEX TCC('R','D') |
#define | SETTINGS_KEY_CHANNEL_MASK TCC('C','M') |
#define | SETTINGS_LAST_INDEX 0xFF |
Use this when you want to retrieve the last item. | |
#define | SETTINGS_INVALID_KEY 0xFFFF |
Returned when key is invalid. More... | |
#define | SETTINGS_INVALID_ITER EEPROM_NULL |
Returned if no (further) element was found. More... | |
Functions | |
settings_status_t | settings_get (settings_key_t key, uint8_t index, uint8_t *value, settings_length_t *value_size) |
Fetches the value associated with the given key. More... | |
settings_status_t | settings_add (settings_key_t key, const uint8_t *value, settings_length_t value_size) |
Adds the given key-value pair to the end of the settings store. More... | |
uint8_t | settings_check (settings_key_t key, uint8_t index) |
Checks to see if the given key exists. More... | |
void | settings_wipe (void) |
Reinitializes all of the EEPROM used by settings. More... | |
settings_status_t | settings_set (settings_key_t key, const uint8_t *value, settings_length_t value_size) |
Sets the value for the given key. More... | |
settings_status_t | settings_delete (settings_key_t key, uint8_t index) |
Removes the given key (at the given index) from the settings store. More... | |
settings_iter_t | settings_iter_begin () |
Will return SETTINGS_INVALID_ITER if the settings store is empty. More... | |
settings_iter_t | settings_iter_next (settings_iter_t iter) |
Will return SETTINGS_INVALID_ITER if at the end of settings list. More... | |
The settings manager is an EEPROM-based key-value store.
Keys are 16-bit integers and values may be up to 16,383 bytes long. It is intended to be used to store configuration-related information, like network settings, radio channels, etc.
The format was inspired by OLPC manufacturing data, as described here: http://wiki.laptop.org/go/Manufacturing_data
Since the beginning of EEPROM often contains application-specific information, the best place to store settings is at the end of EEPROM. Because we are starting at the end of EEPROM, it makes sense to grow the list of key-value pairs downward, toward the start of EEPROM.
Each key-value pair is stored in memory in the following format:
Order | Size | Name | Description |
---|---|---|---|
0 | 2 | key | |
-2 | 1 | size_check | One's-complement of next byte |
-3 | 1 or 2 | size | The size of the value, in bytes |
-4 or -5 | variable | value |
The end of the key-value pairs is denoted by the first invalid entry. An invalid entry has any of the following attributes:
#define SETTINGS_INVALID_ITER EEPROM_NULL |
Returned if no (further) element was found.
Definition at line 142 of file settings.h.
#define SETTINGS_INVALID_KEY 0xFFFF |
Returned when key is invalid.
Definition at line 140 of file settings.h.
#define SETTINGS_KEY_AES128ENABLED TCC('S','E') |
AES128 enabled, bool
Definition at line 124 of file settings.h.
#define SETTINGS_KEY_AES128KEY TCC('S','K') |
AES128 key, 16 bytes
Definition at line 123 of file settings.h.
#define SETTINGS_KEY_CHANNEL TCC('C','H') |
#define SETTINGS_KEY_CHANNEL_MASK TCC('C','M') |
Channel mask, uint16_t
Definition at line 132 of file settings.h.
#define SETTINGS_KEY_DOMAINNAME TCC('D','N') |
Domainname, C-String
Definition at line 126 of file settings.h.
#define SETTINGS_KEY_EUI48 TCC('E','6') |
MAC Address, 6 bytes
Definition at line 118 of file settings.h.
#define SETTINGS_KEY_HOSTNAME TCC('H','N') |
Hostname, C-String
Definition at line 125 of file settings.h.
#define SETTINGS_KEY_PAN_ADDR TCC('P','A') |
PAN address, uint16_t
Definition at line 122 of file settings.h.
#define SETTINGS_KEY_PAN_ID TCC('P','N') |
PAN ID, uint16_t
Definition at line 121 of file settings.h.
#define SETTINGS_KEY_RDC_INDEX TCC('R','D') |
RDC index, uint8_t
Definition at line 131 of file settings.h.
#define SETTINGS_KEY_TXPOWER TCC('T','P') |
settings_status_t settings_add | ( | settings_key_t | key, |
const uint8_t * | value, | ||
settings_length_t | value_size | ||
) |
Adds the given key-value pair to the end of the settings store.
uint8_t settings_check | ( | settings_key_t | key, |
uint8_t | index | ||
) |
Checks to see if the given key exists.
settings_status_t settings_delete | ( | settings_key_t | key, |
uint8_t | index | ||
) |
Removes the given key (at the given index) from the settings store.
settings_status_t settings_get | ( | settings_key_t | key, |
uint8_t | index, | ||
uint8_t * | value, | ||
settings_length_t * | value_size | ||
) |
Fetches the value associated with the given key.
settings_iter_t settings_iter_begin | ( | ) |
Will return SETTINGS_INVALID_ITER if the settings store is empty.
settings_iter_t settings_iter_next | ( | settings_iter_t | iter | ) |
Will return SETTINGS_INVALID_ITER if at the end of settings list.
settings_status_t settings_set | ( | settings_key_t | key, |
const uint8_t * | value, | ||
settings_length_t | value_size | ||
) |
Sets the value for the given key.
If the key already exists in the settings store, then its value will be replaced.
void settings_wipe | ( | void | ) |
Reinitializes all of the EEPROM used by settings.