Commit Graph

109 Commits

Author SHA1 Message Date
Robert Quattlebaum
535e90343c Merge pull request #144 from darconeous/pull-requests/settings-for-all-targets
core/lib/settings: Generalized settings manager to work on any platform
2013-05-18 12:03:09 -07:00
Robert Quattlebaum
28a1e40ebd core/lib/settings: Generalized Settings Manager to work on any platform
This commit moves the Settings Manager from the AVR codebase
into the Contiki core library. Any platform that implements
the Contiki EEPROM API can now use the Settings Manager's
key-value store for storing their persistent configuration info.

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.

 * Robust data format which requires no initialization.
 * Supports multiple values with the same key.
 * Data can be appended without erasing EEPROM.
 * Max size of settings data can be easily increased in the future,
   as long as it doesn't overlap with application data.

The format was inspired by the [OLPC manufacturing data format][].

Since the beginning of EEPROM often contains application-specific
information, the best place to store settings is at the end of EEPROM
(the "top"). 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`        | 16-bit key
      -2 |        1 | `size_check` | One's-complement of next byte
      -3 |   1 or 2 | `size`       | The size of `value`, in bytes
-4 or -5 | variable | `value`      | Value associated with `key`

The end of the key-value pairs is denoted by the first invalid entry.
An invalid entry has any of the following attributes:

 * The `size_check` byte doesn't match the one's compliment of the
   `size` byte (or `size_low` byte).
 * The key has a value of 0x0000.

[OLPC manufacturing data format]: http://wiki.laptop.org/go/Manufacturing_data
2013-03-20 11:57:13 -07:00
Adam Dunkels
277a348f60 Changed the name of the IPv6 number of route entries configuration from UIP_CONF_DS6_ROUTE_NBU to UIP_CONF_MAX_ROUTES. 2013-03-18 11:12:44 +01:00
Adam Dunkels
99f541e8fd Updated to the latest uip-ds6-route API 2012-11-27 23:04:34 +01:00
Adam Dunkels
ec8c7e9be0 Cleanup of the node-id.h files. The node-id.h file contains
declarations of functions for setting and getting a node ID number, a
functionality that exists on many platforms. Since this functionality
was not considered part of the Contiki core, each platform defined its
own node-id.h file. This commit attempts to clean this up by
collecting the node-id.h into a core/sys/node-id.h file that replaces
the old node-id.h files from the platform directories.
2012-11-20 19:59:46 +01:00
Adam Dunkels
944537fccf Removed all old RCS tags in the Contiki source tree. Those RCS tags are not used any more, as we are now using git to manage the Contiki source tree 2012-10-26 15:54:49 +02:00
Ivan Delamer
b43dad00b0 Cleaned up RF230BB, and refactored FRAME_RETRIES and CSMA_RETRIES
#defines.
2012-09-04 11:12:18 -06:00
David Kopf
37c407b177 Patch from Landon Fuller adds const to PROGMEM, required for newer avr-gcc 2012-06-10 12:54:11 -04:00
David Kopf
cac4e9a222 Add clock_delay_us and clock_set_seconds to clock.h. Modify clock_wait to use clock_time_t.
Remove the troublesome avr/dev/delay.* files.
Add PLATFORM_NAME and combine the confusing *_REVISION defines into a single PLATFORM_TYPE
2012-04-09 15:49:53 -04:00
David Kopf
6e45dfe5ff PROGMEM changes needed for newer avr-gcc compiler 2012-02-21 11:10:57 -05:00
Nicholas J Humfrey
680225e99d Converted u8_t to uint8_t and u16_t to uint16_t in the platforms directory.
Added "These names are deprecated, use C99 names" warnings the contiki-conf.h files that were missing it.
2012-02-21 08:33:25 -05:00
David Kopf
58298f59db Add F_CPU=0x800000 option with phase lock to external 32768 Hz crystal
Add MCU_CONF_LOW_WEAR option to avoid eeprom writes during development.
2012-01-10 12:42:27 -05:00
David Kopf
fb977cb9ef Better fix for hardware FCS error on JTAG reset
Correct silly error introduced by trying to save two bytes.
2011-11-15 13:24:58 -05:00
David Kopf
3612fdff5b Add params.c to Raven and sync with 128rfa1 contiki-conf.h
Contikimac works with mcu sleep on both platforms.
2011-11-14 11:56:34 -05:00
David Kopf
bdd164e003 Reverse node_id bytes, patch from Geog von Zengen 2011-11-08 12:23:29 -05:00
David Kopf
f721f646fa Adjust sleep time by ticks instead of seconds, proposed by Ivan Delamer 2011-09-10 12:44:49 -04:00
David Kopf
d2aece89ef Add settings manager with program flash defaults, random routine, periodic prints with ENERGEST, node-id. 2011-08-28 16:22:39 -04:00
David Kopf
83e3b99d54 Let RPL examples enable platform RPL 2011-08-15 14:45:44 -04:00
David Kopf
50d1086553 Add changes needed for contikimac 2011-08-13 11:38:38 -04:00
David Kopf
f36c97a9a4 Get random seed from noisy ADC conversion at startup. 2011-08-13 11:31:20 -04:00
David Kopf
c9b19ce655 Change timer setups for arbitrary CLOCK_CONF_SECOND
Change raven to 128 ticks and enable 32KHz crystal as default.
2011-08-05 15:14:35 -04:00
David Kopf
44f4ee9315 Use PROCESS_NAME_STRING macro to handle NO_PROCESS_NAMES 2011-08-03 11:08:40 -04:00
David Kopf
0774fef827 Add explicit RADIOSTATS to platform contiki-conf.h 2011-07-25 15:12:12 -04:00
David Kopf
0bb585fd60 Replace WEBSERVER by AVR_WEBSERVER 2011-07-24 11:43:17 -04:00
dak664
d6db9e4e86 Add project-conf.h to platform contiki-conf.h files.
Fix jackdaw comments.
2011-06-08 09:12:57 -04:00
dak664
e4fcd7ebd7 Add files needed for slip rpl-border-router build. 2011-03-11 14:16:27 -05:00
dak664
02091b083a MAC address to EEMEM, not PROGMEM
Sync atmega128rfa1 main routine to the raven (timed route prints, etc.)
2011-03-11 13:47:47 -05:00
dak664
69da4c8cfa Fix unresolved references when built without webserver and/or tcp. Changes suggested by Harald Pichler. 2011-03-10 10:57:43 -05:00
dak664
ad67c573de Fix unused variable warning 2011-03-10 10:37:15 -05:00
dak664
de7bcda99f avrdude and makefile changes suggested by Georg von Zengen 2011-03-08 13:07:00 -05:00
dak664
1e7479f8e4 Add periodic print of stack monitor and neighbors/routes.
Refactor PRINTFs.
2011-02-28 16:26:28 -05:00
dak664
bbcd43a9aa Merge branch 'master' of github.com:adamdunkels/contiki-2.x 2011-02-07 15:14:54 -05:00
dak664
71612fd6a4 Replace file, some problem with my local master line endings. 2011-02-07 15:12:54 -05:00
dak664
574feaa866 Test web-based commit, see if it fixes the line endings. 2011-02-07 11:25:07 -08:00
dak664
574927c776 Delete obsolete file 2011-02-07 14:07:37 -05:00
dak664
519cce0019 Add comments, bugfixes, merge avr-atmega128rfa1 platform changes to avr-raven 2011-02-07 14:06:53 -05:00
David Kopf
ceea35f7a8 Test TortoiseGit commit from Vista laptop 2011-02-04 10:41:18 -05:00
David Kopf
16df31b143 Merge branch 'master' of https://github.com/adamdunkels/contiki-2.x 2011-02-04 10:39:34 -05:00
dak664
0b23116c30 Test TortoiseGit commit from windows 7 2011-02-04 09:03:03 -05:00
David Kopf
c18d12e8a4 Test git commit 2011-02-03 18:29:17 -05:00
dak664
90a6d768ea Keep track of sleeptime and display on status web page. 2010-12-23 19:41:07 +00:00
dak664
013c3ac2f8 Remove contitional on clock updating, it should always be done after a sleep! 2010-12-22 17:09:03 +00:00
dak664
44a2e34005 Resolve TIMER2 conflict between sleep and possible clock usage. 2010-12-22 16:50:30 +00:00
dak664
7b7ad4336e Send text following ? in GET to Raven LCD 2010-12-20 20:06:06 +00:00
dak664
d378d891c8 Add working cx-mac configuration values. 2010-12-18 20:46:14 +00:00
dak664
89d0ffffd2 Save radio ontime when webwser displays current cpu ontime for later display of corresponding value after possible TCP delays. 2010-12-18 20:44:02 +00:00
dak664
8586643d14 Implement SLEEP and DOZE commands from the 3290p menu.
Define serial commands the same as the 3290p for grepping.
2010-12-18 20:40:45 +00:00
dak664
1d2a5ca671 Minor format and comment changes 2010-12-14 22:51:04 +00:00
dak664
d8fe44645c Refactor, tune, add SICSLOWPAN_CONF_ACK_ALL defines for testing radio acks 2010-12-14 22:39:38 +00:00
dak664
a9dedfee4f Refactor contiki-conf files, remove obsolete defines. 2010-12-13 23:31:13 +00:00