mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-25 06:15:43 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user