added support for handler in persistent settings - not sure if it's the right semantic - changed enabling flag to USE_PERSISTENT_SETTINGS

This commit is contained in:
Antoine Drouin
2011-03-25 18:16:24 +01:00
parent 925e85e915
commit 7da4b519af
5 changed files with 15 additions and 10 deletions
@@ -770,3 +770,4 @@ test_settings.srcs += $(SRC_ARCH)/mcu_periph/uart_arch.c
test_settings.CFLAGS += -DDATALINK=PPRZ -DPPRZ_UART=$(MODEM_PORT)
test_settings.srcs += subsystems/settings.c
test_settings.srcs += $(SRC_ARCH)/subsystems/settings_arch.c
test_settings.CFLAGS += -DUSE_PERSISTENT_SETTINGS
+1 -1
View File
@@ -7,7 +7,7 @@
<dl_setting var="setting_a" min="0" step="1" max="42" shortname ="a" module="test/subsystems/test_settings"/>
<dl_setting var="setting_b" min="0" step="1" max="42" shortname ="b" persistent="true"/>
<dl_setting var="setting_c" min="0" step="1" max="42" shortname ="c" persistent="true"/>
<dl_setting var="setting_d" min="0" step="1" max="42" shortname ="d"/>
<dl_setting var="setting_d" min="0" step="1" max="42" shortname ="d" persistent="true" module="test/subsystems/test_settings" handler="SetD"/>
<dl_setting var="settings_store_now" min="0" step="1" max="1" shortname ="store" handler="StoreSettings" module="subsystems/settings"/>
</dl_settings>
+1 -1
View File
@@ -6,7 +6,7 @@ bool_t settings_store_now;
void settings_init(void) {
#ifdef USE_PERMANENT_SETTINGS
#ifdef USE_PERSISTENT_SETTINGS
if (persistent_read((uint32_t)&pers_settings, sizeof(struct PersistentSettings)))
return; // return -1 ?
persitent_settings_load();
+1 -6
View File
@@ -8,12 +8,7 @@ extern void settings_store(void);
extern bool_t settings_store_now;
#define settings_StoreSettings(_v) { \
if (_v) { \
settings_store(); \
settings_store_now = FALSE; \
} \
}
#define settings_StoreSettings(_v) { settings_store_now = _v; settings_store(); }
#include "generated/settings.h"
+11 -2
View File
@@ -168,7 +168,7 @@ let print_persistent_settings = fun settings ->
lprintf "pers_settings.s_%d = %s;\n" !idx v; incr idx)
pers_settings;
left();
lprintf "};\n\n";
lprintf "}\n\n";
(* Inline function to load persistent settings *)
idx := 0;
lprintf "static inline void persitent_settings_load( void ) {\n";
@@ -176,7 +176,16 @@ let print_persistent_settings = fun settings ->
List.iter
(fun s ->
let v = ExtXml.attrib s "var" in
lprintf "%s = pers_settings.s_%d;\n" v !idx; incr idx)
begin
try
let h = ExtXml.attrib s "handler" and
m = ExtXml.attrib s "module" in
lprintf "%s_%s( pers_settings.s_%d );\n" (Filename.basename m) h !idx ;
(* lprintf "%s = pers_settings.s_%d;\n" v !idx *) (* do we want to set the value too or just call the handler ? *)
with
ExtXml.Error e -> lprintf "%s = pers_settings.s_%d;\n" v !idx
end;
incr idx)
pers_settings;
left();
lprintf "};\n"