From 0499082b50b00d942e00d2d272a0c74b4c5ca1cd Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 22 Aug 2018 23:28:35 -0600 Subject: Reduced ROM size by making successive nice_delay_ms calls collapse any time the user completes an input sequence. All nice delays then get aborted until the next trip through the main() loop. Eliminates the need to wrap nice_delay_ms() calls and handle the exit condition. Also eliminates the risk of getting the UI out of sync with button events. --- spaghetti-monster/anduril/anduril.c | 14 +++++++------- spaghetti-monster/fsm-events.c | 8 +++++++- spaghetti-monster/fsm-main.c | 2 ++ spaghetti-monster/fsm-misc.c | 10 ++++------ 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index 3637c3d..bf16da5 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -809,7 +809,7 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { #ifdef USE_CANDLE_MODE candle_mode_timer = 0; // in case any time was left over from earlier #endif - interrupt_nice_delays(); + //interrupt_nice_delays(); save_config(); return MISCHIEF_MANAGED; } @@ -1832,13 +1832,13 @@ void loop() { brightness += pseudo_rand() % brightness; // 2 to 159 now (w/ low bias) if (brightness > MAX_LEVEL) brightness = MAX_LEVEL; set_level(brightness); - if (! nice_delay_ms(rand_time)) return; + nice_delay_ms(rand_time); // decrease the brightness somewhat more gradually, like lightning uint8_t stepdown = brightness >> 3; if (stepdown < 1) stepdown = 1; while(brightness > 1) { - if (! nice_delay_ms(rand_time)) return; + nice_delay_ms(rand_time); brightness -= stepdown; if (brightness < 0) brightness = 0; set_level(brightness); @@ -1849,7 +1849,7 @@ void loop() { } */ if (! (pseudo_rand() & 3)) { - if (! nice_delay_ms(rand_time)) return; + nice_delay_ms(rand_time); set_level(brightness>>1); } } @@ -1877,9 +1877,9 @@ void loop() { if (burst > MAX_LEVEL) burst = MAX_LEVEL; for(uint8_t i=0; i<4; i++) { set_level(burst); - if (! nice_delay_ms(5)) return; + nice_delay_ms(5); set_level(bike_flasher_brightness); - if (! nice_delay_ms(65)) return; + nice_delay_ms(65); } nice_delay_ms(720); // no return check necessary on final delay } @@ -1903,7 +1903,7 @@ void loop() { else if (state == beacon_state) { set_level(memorized_level); - if (! nice_delay_ms(500)) return; + nice_delay_ms(500); set_level(0); nice_delay_ms(((beacon_seconds) * 1000) - 500); } diff --git a/spaghetti-monster/fsm-events.c b/spaghetti-monster/fsm-events.c index b8e9018..aa5c3d6 100644 --- a/spaghetti-monster/fsm-events.c +++ b/spaghetti-monster/fsm-events.c @@ -39,6 +39,12 @@ uint8_t compare_event_sequences(uint8_t *a, const uint8_t *b) { void empty_event_sequence() { for(uint8_t i=0; i0; num--) { set_level(BLINK_BRIGHTNESS); - if (! nice_delay_ms(ontime)) { return 0; } + nice_delay_ms(ontime); set_level(0); - //if (current_state != old_state) return 0; - if (! nice_delay_ms(400)) return 0; - //if (current_state != old_state) return 0; + nice_delay_ms(400); } return nice_delay_ms(600); } @@ -77,7 +75,7 @@ uint8_t blink_num(uint8_t num) { #if 0 // wait a moment in the dark before starting set_level(0); - if (! nice_delay_ms(200)) return 0; + nice_delay_ms(200); #endif #if 0 @@ -102,7 +100,7 @@ uint8_t blink_num(uint8_t num) { volts = voltage / 10; tenths = voltage % 10; if (! blink(volts)) return; - if (! nice_delay_ms(200)) return; + nice_delay_ms(200); if (! blink(tenths)) return; nice_delay_ms(200); */ -- cgit v1.2.3