Contiki-Inga 3.x
|
Settings Manager. More...
Go to the source code of this file.
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. | |
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 extern SETTINGS_INVALID_ITER if the settings store is empty. More... | |
settings_iter_t | settings_iter_next (settings_iter_t iter) |
Will return extern SETTINGS_INVALID_ITER if at the end of settings list. More... | |
Settings Manager.
The settings manager is a 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:
Definition in file settings.h.
#define SETTINGS_KEY_AES128ENABLED TCC('S','E') |
AES128 enabled, bool
Definition at line 121 of file settings.h.
#define SETTINGS_KEY_AES128KEY TCC('S','K') |
AES128 key, 16 bytes
Definition at line 120 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 129 of file settings.h.
#define SETTINGS_KEY_DOMAINNAME TCC('D','N') |
Domainname, C-String
Definition at line 123 of file settings.h.
#define SETTINGS_KEY_EUI48 TCC('E','6') |
MAC Address, 6 bytes
Definition at line 115 of file settings.h.
#define SETTINGS_KEY_HOSTNAME TCC('H','N') |
Hostname, C-String
Definition at line 122 of file settings.h.
#define SETTINGS_KEY_PAN_ADDR TCC('P','A') |
PAN address, uint16_t
Definition at line 119 of file settings.h.
#define SETTINGS_KEY_PAN_ID TCC('P','N') |
PAN ID, uint16_t
Definition at line 118 of file settings.h.
#define SETTINGS_KEY_RDC_INDEX TCC('R','D') |
RDC index, uint8_t
Definition at line 128 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.
0 | not found |
1 | found |
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 extern SETTINGS_INVALID_ITER if the settings store is empty.
settings_iter_t settings_iter_next | ( | settings_iter_t | iter | ) |
Will return extern 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.