diff --git a/bootloader/config.c b/bootloader/config.c index 7c216ef..59dcdd3 100644 --- a/bootloader/config.c +++ b/bootloader/config.c @@ -23,7 +23,8 @@ struct CONFIG default_config = { METRIC, //metric units 120, //2 minute timeout false, //no bluetooth module - false //normal display style (not compact) + false, //normal display style (not compact) + false //don't discard measurements by default }; struct CONFIG config; @@ -78,3 +79,8 @@ void config_set_timeout(int32_t timeout) { config.timeout = timeout; config_save(); } + +void config_set_discard(int32_t on) { + config.discard = on; + config_save(); +} diff --git a/bootloader/config.h b/bootloader/config.h index c4bd269..db78f68 100644 --- a/bootloader/config.h +++ b/bootloader/config.h @@ -51,6 +51,7 @@ struct __attribute__((aligned(8))) CONFIG { uint16_t timeout; unsigned dummy :1; unsigned compact :1; + unsigned discard :1; }; /* Note it is important to keep this as a union to ensure that no other data/ program @@ -76,6 +77,7 @@ void config_set_units(int32_t units); void config_set_style(int32_t style); void config_set_compact(int32_t on); void config_set_timeout(int32_t timeout); +void config_set_discard(int32_t on); #endif #ifdef TEST diff --git a/firmware/config.c b/firmware/config.c index 400bdcf..b725c8d 100644 --- a/firmware/config.c +++ b/firmware/config.c @@ -24,7 +24,8 @@ struct CONFIG default_config = { METRIC, //metric units 120, //2 minute timeout false, //no bluetooth module - false //normal display style (not compact) + false, //normal display style (not compact) + false //don't discard measurements by default }; struct CONFIG config; @@ -80,3 +81,8 @@ void config_set_timeout(int32_t timeout) { config.timeout = timeout; config_save(); } + +void config_set_discard(int32_t on) { + config.discard = on; + config_save(); +} diff --git a/firmware/config.h b/firmware/config.h index cbcb117..7d4dd93 100644 --- a/firmware/config.h +++ b/firmware/config.h @@ -51,6 +51,7 @@ struct __attribute__((aligned(8))) CONFIG { uint16_t timeout; unsigned dummy :1; unsigned compact :1; + unsigned discard :1; }; /* Note it is important to keep this as a union to ensure that no other data/ program @@ -76,6 +77,7 @@ void config_set_units(int32_t units); void config_set_style(int32_t style); void config_set_compact(int32_t on); void config_set_timeout(int32_t timeout); +void config_set_discard(int32_t on); #endif #ifdef TEST diff --git a/firmware/interface.c b/firmware/interface.c index f648d94..494e374 100644 --- a/firmware/interface.c +++ b/firmware/interface.c @@ -53,6 +53,12 @@ DECLARE_MENU(style_menu, { {"Back", Back, {NULL}, 0} }); +DECLARE_MENU(discard_menu, { + {"Show Menu", Action, {config_set_discard}, 0}, + {"Discard", Action, {config_set_discard}, 1}, + {"Back", Back, {NULL}, 0} +}); + DECLARE_MENU(units_menu, { {"Metric", Action, {config_set_units}, METRIC}, {"Imperial", Action, {config_set_units}, IMPERIAL}, @@ -64,6 +70,7 @@ DECLARE_MENU(settings_menu, { /* settings menu */ {"Style >", SubMenu, .submenu = &style_menu, 0}, {"Display >", SubMenu, .submenu = &display_menu, 0}, {"Timeout >", SubMenu, .submenu = &timeout_menu, 0}, + {"Post-shot >", SubMenu, .submenu = &discard_menu, 0}, {"Set Date", Action, {datetime_set_date}, 0}, {"Set Time", Action, {datetime_set_time}, 0}, {"Back", Back, {NULL}, 0}, diff --git a/firmware/measure.c b/firmware/measure.c index 22a0490..4c2636b 100644 --- a/firmware/measure.c +++ b/firmware/measure.c @@ -237,6 +237,12 @@ void measure_show_reading(void) { // set up menus if (bt_present) bt_send_measurement(); menu_clear(&measure_menu); + if (config.discard) { + laser_off(); + wdt_clear(); + delay_ms(50); + return; + } if (config.display_style==CARTESIAN) { add_cartesian_entries_to_menu(&measure_menu); } else {