From 261ac91eb4bfab9a0c234321c2558a19c7e92772 Mon Sep 17 00:00:00 2001 From: Thomas Arthofer Date: Wed, 22 Aug 2018 22:10:35 +0200 Subject: Fix Change-Aux-LED Pattern, Fix Strobe Modes --- spaghetti-monster/anduril/anduril.c | 392 +++++++++++++++++++++++------------- 1 file changed, 250 insertions(+), 142 deletions(-) mode change 100644 => 100755 spaghetti-monster/anduril/anduril.c diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c old mode 100644 new mode 100755 index 71b4b9a..67b02c9 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -48,9 +48,14 @@ //#define BATTCHECK_8bars // FIXME: breaks build //#define BATTCHECK_4bars // FIXME: breaks build -// enable/disable various modes +// enable/disable various strobe modes +#define USE_BIKE_FLASHER_MODE +#define USE_PARTY_STROBE_MODE +#define USE_TACTICAL_STROBE_MODE #define USE_LIGHTNING_MODE #define USE_CANDLE_MODE + +//Muggle mode for easy UI #define USE_MUGGLE_MODE #define GOODNIGHT_TIME 60 // minutes (approximately) @@ -146,19 +151,6 @@ #if defined(USE_LIGHTNING_MODE) || defined(USE_CANDLE_MODE) #define USE_PSEUDO_RAND #endif -// count the strobe modes (seems like there should be an easier way to do this) -#define NUM_STROBES_BASE 3 -#ifdef USE_LIGHTNING_MODE -#define ADD_LIGHTNING_STROBE 1 -#else -#define ADD_LIGHTNING_STROBE 0 -#endif -#ifdef USE_CANDLE_MODE -#define ADD_CANDLE_MODE 1 -#else -#define ADD_CANDLE_MODE 0 -#endif -#define NUM_STROBES (NUM_STROBES_BASE+ADD_LIGHTNING_STROBE+ADD_CANDLE_MODE) #include "spaghetti-monster.h" @@ -270,14 +262,29 @@ uint8_t nearest_level(int16_t target); uint8_t target_level = 0; #endif +typedef enum { + #ifdef USE_BIKE_FLASHER_MODE + bike_flasher_e, + #endif + #ifdef USE_PARTY_STROBE_MODE + party_strobe_e, + #endif + #ifdef USE_TACTICAL_STROBE_MODE + tactial_strobe_e, + #endif + #ifdef USE_LIGHTNING_MODE + lightening_storm_e, + #endif + #ifdef USE_CANDLE_MODE + candle_mode_e, + #endif + strobe_mode_END +} strobe_mode_te ; + +const int NUM_STROBES = strobe_mode_END; // strobe timing volatile uint8_t strobe_delays[] = { 40, 67 }; // party strobe, tactical strobe -// 0 == bike flasher -// 1 == party strobe -// 2 == tactical strobe -// 3 == lightning storm -// 4 == candle mode -volatile uint8_t strobe_type = 4; +volatile strobe_mode_te strobe_type = 0u; // bike mode config options volatile uint8_t bike_flasher_brightness = MAX_1x7135; @@ -719,7 +726,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { uint8_t strobe_state(EventPtr event, uint16_t arg) { // 'st' reduces ROM size by avoiding access to a volatile var // (maybe I should just make it nonvolatile?) - uint8_t st = strobe_type; + strobe_mode_te st = strobe_type; #ifdef USE_CANDLE_MODE // FIXME: make candle variance magnitude a compile-time option, // since 20 is sometimes too much or too little, @@ -762,53 +769,121 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // hold: change speed (go faster) // or change brightness (brighter) else if (event == EV_click1_hold) { - // biking mode brighter - if (st == 0) { - if (bike_flasher_brightness < MAX_BIKING_LEVEL) - bike_flasher_brightness ++; - set_level(bike_flasher_brightness); - } - // strobe faster - else if (st < 3) { - if ((arg & 1) == 0) { - if (strobe_delays[st-1] > 8) strobe_delays[st-1] --; - } - } - // lightning has no adjustments - // else if (st == 3) {} - #ifdef USE_CANDLE_MODE - // candle mode brighter - else if (st == 4) { - if (candle_mode_brightness < MAX_CANDLE_LEVEL) - candle_mode_brightness ++; - } - #endif + switch(st) { + /* biking mode brighter */ + #ifdef USE_BIKE_FLASHER_MODE + case bike_flasher_e: + { + if (bike_flasher_brightness < MAX_BIKING_LEVEL) + { + bike_flasher_brightness ++; + } + set_level(bike_flasher_brightness); + break; + } + #endif + + /* party / tactial mode faster */ + #ifdef USE_PARTY_STROBE_MODE + case party_strobe_e: + #endif + #ifdef USE_TACTICAL_STROBE_MODE + case tactial_strobe_e: + #endif + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + { + if ((arg & 0x01u) == 0u) + { + if (strobe_delays[st-1] > 8) + { + strobe_delays[st-1] --; + } + } + break; + } + #endif + + /* lightening mode has no settings */ + + /* candle mode brighter */ + #ifdef USE_CANDLE_MODE + case candle_mode_e: + { + if (candle_mode_brightness < MAX_CANDLE_LEVEL) + { + candle_mode_brightness ++; + } + break; + } + #endif + + case strobe_mode_END: + default: + { + /* Nothing */ + break; + } + } return MISCHIEF_MANAGED; } // click, hold: change speed (go slower) // or change brightness (dimmer) else if (event == EV_click2_hold) { - // biking mode dimmer - if (st == 0) { - if (bike_flasher_brightness > 2) - bike_flasher_brightness --; - set_level(bike_flasher_brightness); - } - // strobe slower - else if (st < 3) { - if ((arg & 1) == 0) { - if (strobe_delays[st-1] < 255) strobe_delays[st-1] ++; - } - } - // lightning has no adjustments - // else if (st == 3) {} - #ifdef USE_CANDLE_MODE - // candle mode dimmer - else if (st == 4) { - if (candle_mode_brightness > 1) - candle_mode_brightness --; - } - #endif + switch(st) { + /* biking mode dimmer */ + #ifdef USE_BIKE_FLASHER_MODE + case bike_flasher_e: + { + if (bike_flasher_brightness > 2) + { + bike_flasher_brightness--; + } + set_level(bike_flasher_brightness); + break; + } + #endif + + /* party / tactial mode slower */ + #ifdef USE_PARTY_STROBE_MODE + case party_strobe_e: + #endif + #ifdef USE_TACTICAL_STROBE_MODE + case tactial_strobe_e: + #endif + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + { + if ((arg & 0x01u) == 0u) + { + if (strobe_delays[st-1] < 255) + { + strobe_delays[st-1] ++; + } + } + break; + } + #endif + + /* lightening mode has no settings */ + + /* candle mode brighter */ + #ifdef USE_CANDLE_MODE + case candle_mode_e: + { + if (candle_mode_brightness > 1) + { + candle_mode_brightness --; + } + break; + } + #endif + + case strobe_mode_END: + default: + { + /* Nothing */ + break; + } + } return MISCHIEF_MANAGED; } // release hold: save new strobe settings @@ -821,7 +896,7 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // 3 clicks: add 30m to candle timer else if (event == EV_3clicks) { // candle mode only - if (st == 4) { + if (st == candle_mode_e) { if (candle_mode_timer < (255 - MINUTES_PER_CANDLE_HALFHOUR)) { // add 30m to the timer candle_mode_timer += MINUTES_PER_CANDLE_HALFHOUR; @@ -840,7 +915,7 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { pseudo_rand_seed += arg; #endif #ifdef USE_CANDLE_MODE - if (st == 4) { + if (st == candle_mode_e) { // self-timer dims the light during the final minute uint8_t subtract = 0; if (candle_mode_timer == 1) { @@ -1007,12 +1082,10 @@ uint8_t lockout_state(EventPtr event, uint16_t arg) { // momentary(ish) moon mode during lockout // not all presses will be counted; // it depends on what is in the master event_sequences table - // FIXME: maybe do this only if arg == 0? - // (so it'll only get turned on once, instead of every frame) uint8_t last = 0; for(uint8_t i=0; pgm_read_byte(event + i) && (i MAX_LEVEL) burst = MAX_LEVEL; - for(uint8_t i=0; i<4; i++) { - set_level(burst); - if (! nice_delay_ms(5)) return; - set_level(bike_flasher_brightness); - if (! nice_delay_ms(65)) return; - } - nice_delay_ms(720); // no return check necessary on final delay - } - // party / tactical strobe - else if (st < 3) { - uint8_t del = strobe_delays[st-1]; - // TODO: make tac strobe brightness configurable? - set_level(STROBE_BRIGHTNESS); - CLKPR = 1<> 1); - } - set_level(0); - nice_delay_ms(del); // no return check necessary on final delay - } - #ifdef USE_LIGHTNING_MODE - // lightning storm - else if (st == 3) { - int16_t brightness; - uint16_t rand_time; - - // turn the emitter on at a random level, - // for a random amount of time between 1ms and 32ms - //rand_time = 1 << (pseudo_rand() % 7); - rand_time = pseudo_rand() & 63; - brightness = 1 << (pseudo_rand() % 7); // 1, 2, 4, 8, 16, 32, 64 - brightness += 1 << (pseudo_rand() & 0x03); // 2 to 80 now - 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; - - // 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; - brightness -= stepdown; - if (brightness < 0) brightness = 0; - set_level(brightness); - /* - if ((brightness < MAX_LEVEL/2) && (! (pseudo_rand() & 15))) { - brightness <<= 1; - set_level(brightness); - } - */ - if (! (pseudo_rand() & 3)) { - if (! nice_delay_ms(rand_time)) return; - set_level(brightness>>1); - } - } - - // turn the emitter off, - // for a random amount of time between 1ms and 8192ms - // (with a low bias) - rand_time = 1 << (pseudo_rand() % 13); - rand_time += pseudo_rand() % rand_time; - set_level(0); - nice_delay_ms(rand_time); // no return check necessary on final delay - - } - #endif + + switch(st) { + /* bike flasher */ + #ifdef USE_BIKE_FLASHER_MODE + case bike_flasher_e: + { + uint8_t burst = bike_flasher_brightness << 1; + if (burst > MAX_LEVEL) burst = MAX_LEVEL; + for(uint8_t i=0; i<4; i++) { + set_level(burst); + if (! nice_delay_ms(5)) return; + set_level(bike_flasher_brightness); + if (! nice_delay_ms(65)) return; + } + nice_delay_ms(720); // no return check necessary on final delay + break; + } + #endif + + /* party / tactial strobe */ + #ifdef USE_PARTY_STROBE_MODE + case party_strobe_e: + #endif + #ifdef USE_TACTICAL_STROBE_MODE + case tactial_strobe_e: + #endif + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + { + uint8_t del = strobe_delays[st-1]; + // TODO: make tac strobe brightness configurable? + set_level(STROBE_BRIGHTNESS); + CLKPR = 1<> 1); + } + set_level(0); + nice_delay_ms(del); // no return check necessary on final delay + break; + } + #endif + + /* lightening mode has no settings */ + #ifdef USE_LIGHTNING_MODE + case lightening_storm_e: + { + int16_t brightness; + uint16_t rand_time; + + // turn the emitter on at a random level, + // for a random amount of time between 1ms and 32ms + //rand_time = 1 << (pseudo_rand() % 7); + rand_time = pseudo_rand() & 63; + brightness = 1 << (pseudo_rand() % 7); // 1, 2, 4, 8, 16, 32, 64 + brightness += 1 << (pseudo_rand() & 0x03); // 2 to 80 now + 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; + + // 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; + brightness -= stepdown; + if (brightness < 0) brightness = 0; + set_level(brightness); + /* + if ((brightness < MAX_LEVEL/2) && (! (pseudo_rand() & 15))) { + brightness <<= 1; + set_level(brightness); + } + */ + if (! (pseudo_rand() & 3)) { + if (! nice_delay_ms(rand_time)) return; + set_level(brightness>>1); + } + } + + // turn the emitter off, + // for a random amount of time between 1ms and 8192ms + // (with a low bias) + rand_time = 1 << (pseudo_rand() % 13); + rand_time += pseudo_rand() % rand_time; + set_level(0); + nice_delay_ms(rand_time); // no return check necessary on final delay + break; + } + #endif + + /* candle mode brighter */ + #ifdef USE_CANDLE_MODE + case candle_mode_e: + { + /* Nothing */ + break; + } + #endif + + case strobe_mode_END: + default: + { + /* Nothing */ + break; + } + } } #ifdef USE_BATTCHECK -- cgit v1.2.3 From c730d0e7984432f5f53b068b4dd071cd08ba04ca Mon Sep 17 00:00:00 2001 From: Thomas Arthofer Date: Wed, 22 Aug 2018 22:37:41 +0200 Subject: Also remove FIXME hint for aux-led pattern change --- spaghetti-monster/anduril/anduril.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index 67b02c9..c2a598e 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -1147,8 +1147,6 @@ uint8_t lockout_state(EventPtr event, uint16_t arg) { else if (event == EV_click3_hold) { #ifndef USE_INDICATOR_LED_WHILE_RAMPING // if main LED obscures aux LEDs, turn it off - // FIXME: might not work, since it was turned on just a few clock - // cycles ago at beginning of this function set_level(0); #endif #ifdef TICK_DURING_STANDBY -- cgit v1.2.3 From 6c4e4180517981a2b9b651da176ed99f0d95f87c Mon Sep 17 00:00:00 2001 From: Thomas Arthofer Date: Wed, 22 Aug 2018 22:58:36 +0200 Subject: New IDE, replace tabs with spaces to match existing code --- spaghetti-monster/anduril/anduril.c | 472 ++++++++++++++++++------------------ 1 file changed, 236 insertions(+), 236 deletions(-) diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index c2a598e..fe5f268 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -52,7 +52,7 @@ #define USE_BIKE_FLASHER_MODE #define USE_PARTY_STROBE_MODE #define USE_TACTICAL_STROBE_MODE -#define USE_LIGHTNING_MODE +//#define USE_LIGHTNING_MODE #define USE_CANDLE_MODE //Muggle mode for easy UI @@ -263,22 +263,22 @@ uint8_t target_level = 0; #endif typedef enum { - #ifdef USE_BIKE_FLASHER_MODE - bike_flasher_e, - #endif - #ifdef USE_PARTY_STROBE_MODE - party_strobe_e, - #endif - #ifdef USE_TACTICAL_STROBE_MODE - tactial_strobe_e, - #endif - #ifdef USE_LIGHTNING_MODE - lightening_storm_e, - #endif - #ifdef USE_CANDLE_MODE - candle_mode_e, - #endif - strobe_mode_END + #ifdef USE_BIKE_FLASHER_MODE + bike_flasher_e, + #endif + #ifdef USE_PARTY_STROBE_MODE + party_strobe_e, + #endif + #ifdef USE_TACTICAL_STROBE_MODE + tactial_strobe_e, + #endif + #ifdef USE_LIGHTNING_MODE + lightening_storm_e, + #endif + #ifdef USE_CANDLE_MODE + candle_mode_e, + #endif + strobe_mode_END } strobe_mode_te ; const int NUM_STROBES = strobe_mode_END; @@ -462,7 +462,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { return MISCHIEF_MANAGED; } // 3 clicks: toggle smooth vs discrete ramping - else if (event == EV_3clicks) { + /*else if (event == EV_3clicks) { ramp_style = !ramp_style; memorized_level = nearest_level(memorized_level); #ifdef USE_THERMAL_REGULATION @@ -479,7 +479,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { delay_4ms(20/4); set_level(memorized_level); return MISCHIEF_MANAGED; - } + }*/ // 4 clicks: configure this ramp mode else if (event == EV_4clicks) { push_state(ramp_config_state, 0); @@ -769,121 +769,121 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // hold: change speed (go faster) // or change brightness (brighter) else if (event == EV_click1_hold) { - switch(st) { - /* biking mode brighter */ - #ifdef USE_BIKE_FLASHER_MODE - case bike_flasher_e: - { - if (bike_flasher_brightness < MAX_BIKING_LEVEL) - { - bike_flasher_brightness ++; - } - set_level(bike_flasher_brightness); - break; - } - #endif - - /* party / tactial mode faster */ - #ifdef USE_PARTY_STROBE_MODE - case party_strobe_e: - #endif - #ifdef USE_TACTICAL_STROBE_MODE - case tactial_strobe_e: - #endif - #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - { - if ((arg & 0x01u) == 0u) - { - if (strobe_delays[st-1] > 8) - { - strobe_delays[st-1] --; - } - } - break; - } - #endif - - /* lightening mode has no settings */ - - /* candle mode brighter */ - #ifdef USE_CANDLE_MODE - case candle_mode_e: - { - if (candle_mode_brightness < MAX_CANDLE_LEVEL) - { - candle_mode_brightness ++; - } + switch(st) { + /* biking mode brighter */ + #ifdef USE_BIKE_FLASHER_MODE + case bike_flasher_e: + { + if (bike_flasher_brightness < MAX_BIKING_LEVEL) + { + bike_flasher_brightness ++; + } + set_level(bike_flasher_brightness); break; - } - #endif - - case strobe_mode_END: - default: - { - /* Nothing */ - break; - } - } + } + #endif + + /* party / tactial mode faster */ + #ifdef USE_PARTY_STROBE_MODE + case party_strobe_e: + #endif + #ifdef USE_TACTICAL_STROBE_MODE + case tactial_strobe_e: + #endif + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + { + if ((arg & 0x01u) == 0u) + { + if (strobe_delays[st-1] > 8) + { + strobe_delays[st-1] --; + } + } + break; + } + #endif + + /* lightening mode has no settings */ + + /* candle mode brighter */ + #ifdef USE_CANDLE_MODE + case candle_mode_e: + { + if (candle_mode_brightness < MAX_CANDLE_LEVEL) + { + candle_mode_brightness ++; + } + break; + } + #endif + + case strobe_mode_END: + default: + { + /* Nothing */ + break; + } + } return MISCHIEF_MANAGED; } // click, hold: change speed (go slower) // or change brightness (dimmer) else if (event == EV_click2_hold) { - switch(st) { - /* biking mode dimmer */ - #ifdef USE_BIKE_FLASHER_MODE - case bike_flasher_e: - { - if (bike_flasher_brightness > 2) - { - bike_flasher_brightness--; - } - set_level(bike_flasher_brightness); - break; - } - #endif - - /* party / tactial mode slower */ - #ifdef USE_PARTY_STROBE_MODE - case party_strobe_e: - #endif - #ifdef USE_TACTICAL_STROBE_MODE - case tactial_strobe_e: - #endif - #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - { - if ((arg & 0x01u) == 0u) - { - if (strobe_delays[st-1] < 255) - { - strobe_delays[st-1] ++; - } - } - break; - } - #endif - - /* lightening mode has no settings */ - - /* candle mode brighter */ - #ifdef USE_CANDLE_MODE - case candle_mode_e: - { - if (candle_mode_brightness > 1) - { - candle_mode_brightness --; - } + switch(st) { + /* biking mode dimmer */ + #ifdef USE_BIKE_FLASHER_MODE + case bike_flasher_e: + { + if (bike_flasher_brightness > 2) + { + bike_flasher_brightness--; + } + set_level(bike_flasher_brightness); + break; + } + #endif + + /* party / tactial mode slower */ + #ifdef USE_PARTY_STROBE_MODE + case party_strobe_e: + #endif + #ifdef USE_TACTICAL_STROBE_MODE + case tactial_strobe_e: + #endif + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + { + if ((arg & 0x01u) == 0u) + { + if (strobe_delays[st-1] < 255) + { + strobe_delays[st-1] ++; + } + } break; - } - #endif - - case strobe_mode_END: - default: - { - /* Nothing */ - break; - } - } + } + #endif + + /* lightening mode has no settings */ + + /* candle mode brighter */ + #ifdef USE_CANDLE_MODE + case candle_mode_e: + { + if (candle_mode_brightness > 1) + { + candle_mode_brightness --; + } + break; + } + #endif + + case strobe_mode_END: + default: + { + /* Nothing */ + break; + } + } return MISCHIEF_MANAGED; } // release hold: save new strobe settings @@ -1769,115 +1769,115 @@ void loop() { if (state == strobe_state) { uint8_t st = strobe_type; - - switch(st) { - /* bike flasher */ - #ifdef USE_BIKE_FLASHER_MODE - case bike_flasher_e: - { - uint8_t burst = bike_flasher_brightness << 1; - if (burst > MAX_LEVEL) burst = MAX_LEVEL; - for(uint8_t i=0; i<4; i++) { - set_level(burst); - if (! nice_delay_ms(5)) return; - set_level(bike_flasher_brightness); - if (! nice_delay_ms(65)) return; - } - nice_delay_ms(720); // no return check necessary on final delay - break; - } - #endif - - /* party / tactial strobe */ - #ifdef USE_PARTY_STROBE_MODE - case party_strobe_e: - #endif - #ifdef USE_TACTICAL_STROBE_MODE - case tactial_strobe_e: - #endif - #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - { - uint8_t del = strobe_delays[st-1]; - // TODO: make tac strobe brightness configurable? - set_level(STROBE_BRIGHTNESS); - CLKPR = 1<> 1); - } - set_level(0); - nice_delay_ms(del); // no return check necessary on final delay - break; - } - #endif - - /* lightening mode has no settings */ - #ifdef USE_LIGHTNING_MODE - case lightening_storm_e: - { - int16_t brightness; - uint16_t rand_time; - - // turn the emitter on at a random level, - // for a random amount of time between 1ms and 32ms - //rand_time = 1 << (pseudo_rand() % 7); - rand_time = pseudo_rand() & 63; - brightness = 1 << (pseudo_rand() % 7); // 1, 2, 4, 8, 16, 32, 64 - brightness += 1 << (pseudo_rand() & 0x03); // 2 to 80 now - 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; - - // 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; - brightness -= stepdown; - if (brightness < 0) brightness = 0; - set_level(brightness); - /* - if ((brightness < MAX_LEVEL/2) && (! (pseudo_rand() & 15))) { - brightness <<= 1; - set_level(brightness); - } - */ - if (! (pseudo_rand() & 3)) { - if (! nice_delay_ms(rand_time)) return; - set_level(brightness>>1); - } - } - - // turn the emitter off, - // for a random amount of time between 1ms and 8192ms - // (with a low bias) - rand_time = 1 << (pseudo_rand() % 13); - rand_time += pseudo_rand() % rand_time; - set_level(0); - nice_delay_ms(rand_time); // no return check necessary on final delay - break; - } - #endif - - /* candle mode brighter */ - #ifdef USE_CANDLE_MODE - case candle_mode_e: - { - /* Nothing */ - break; - } - #endif - - case strobe_mode_END: - default: - { - /* Nothing */ - break; - } - } + + switch(st) { + /* bike flasher */ + #ifdef USE_BIKE_FLASHER_MODE + case bike_flasher_e: + { + uint8_t burst = bike_flasher_brightness << 1; + if (burst > MAX_LEVEL) burst = MAX_LEVEL; + for(uint8_t i=0; i<4; i++) { + set_level(burst); + if (! nice_delay_ms(5)) return; + set_level(bike_flasher_brightness); + if (! nice_delay_ms(65)) return; + } + nice_delay_ms(720); // no return check necessary on final delay + break; + } + #endif + + /* party / tactial strobe */ + #ifdef USE_PARTY_STROBE_MODE + case party_strobe_e: + #endif + #ifdef USE_TACTICAL_STROBE_MODE + case tactial_strobe_e: + #endif + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + { + uint8_t del = strobe_delays[st-1]; + // TODO: make tac strobe brightness configurable? + set_level(STROBE_BRIGHTNESS); + CLKPR = 1<> 1); + } + set_level(0); + nice_delay_ms(del); // no return check necessary on final delay + break; + } + #endif + + /* lightening mode has no settings */ + #ifdef USE_LIGHTNING_MODE + case lightening_storm_e: + { + int16_t brightness; + uint16_t rand_time; + + // turn the emitter on at a random level, + // for a random amount of time between 1ms and 32ms + //rand_time = 1 << (pseudo_rand() % 7); + rand_time = pseudo_rand() & 63; + brightness = 1 << (pseudo_rand() % 7); // 1, 2, 4, 8, 16, 32, 64 + brightness += 1 << (pseudo_rand() & 0x03); // 2 to 80 now + 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; + + // 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; + brightness -= stepdown; + if (brightness < 0) brightness = 0; + set_level(brightness); + /* + if ((brightness < MAX_LEVEL/2) && (! (pseudo_rand() & 15))) { + brightness <<= 1; + set_level(brightness); + } + */ + if (! (pseudo_rand() & 3)) { + if (! nice_delay_ms(rand_time)) return; + set_level(brightness>>1); + } + } + + // turn the emitter off, + // for a random amount of time between 1ms and 8192ms + // (with a low bias) + rand_time = 1 << (pseudo_rand() % 13); + rand_time += pseudo_rand() % rand_time; + set_level(0); + nice_delay_ms(rand_time); // no return check necessary on final delay + break; + } + #endif + + /* candle mode brighter */ + #ifdef USE_CANDLE_MODE + case candle_mode_e: + { + /* Nothing */ + break; + } + #endif + + case strobe_mode_END: + default: + { + /* Nothing */ + break; + } + } } #ifdef USE_BATTCHECK -- cgit v1.2.3 From 699d2859a4fdc8cc02478372084fc30fa93b0a05 Mon Sep 17 00:00:00 2001 From: Thomas Arthofer Date: Wed, 22 Aug 2018 23:00:39 +0200 Subject: should stop coding for today, undo custom changes not to be commited --- spaghetti-monster/anduril/anduril.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index fe5f268..5e1b4e1 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -52,7 +52,7 @@ #define USE_BIKE_FLASHER_MODE #define USE_PARTY_STROBE_MODE #define USE_TACTICAL_STROBE_MODE -//#define USE_LIGHTNING_MODE +#define USE_LIGHTNING_MODE #define USE_CANDLE_MODE //Muggle mode for easy UI @@ -462,7 +462,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { return MISCHIEF_MANAGED; } // 3 clicks: toggle smooth vs discrete ramping - /*else if (event == EV_3clicks) { + else if (event == EV_3clicks) { ramp_style = !ramp_style; memorized_level = nearest_level(memorized_level); #ifdef USE_THERMAL_REGULATION @@ -479,7 +479,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { delay_4ms(20/4); set_level(memorized_level); return MISCHIEF_MANAGED; - }*/ + } // 4 clicks: configure this ramp mode else if (event == EV_4clicks) { push_state(ramp_config_state, 0); -- cgit v1.2.3 From cdadf7454342e841fdadd44fb5fe29ed78135af6 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 22 Aug 2018 17:46:28 -0600 Subject: Reduced ROM size back to pre-branch levels (aside from 6 extra bytes to fix interaction between aux LEDs and lockout moon). Fixed typos: lightening, tactial. Replaced new switch/case clauses with if/else clauses, to reduce ROM size. Added -fshort-enums to gcc options to reduce ROM size. --- bin/build-25.sh | 2 +- bin/build-85.sh | 2 +- bin/build.sh | 2 +- spaghetti-monster/anduril/anduril.c | 383 +++++++++++++++--------------------- 4 files changed, 161 insertions(+), 228 deletions(-) diff --git a/bin/build-25.sh b/bin/build-25.sh index 2be8269..a775a0f 100755 --- a/bin/build-25.sh +++ b/bin/build-25.sh @@ -8,7 +8,7 @@ export ATTINY=25 export MCU=attiny$ATTINY export CC=avr-gcc export OBJCOPY=avr-objcopy -export CFLAGS="-Wall -g -Os -mmcu=$MCU -c -std=gnu99 -DATTINY=$ATTINY -I.. -I../.. -I../../.." +export CFLAGS="-Wall -g -Os -mmcu=$MCU -c -std=gnu99 -DATTINY=$ATTINY -I.. -I../.. -I../../.. -fshort-enums" export OFLAGS="-Wall -g -Os -mmcu=$MCU" export LDFLAGS= export OBJCOPYFLAGS='--set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex' diff --git a/bin/build-85.sh b/bin/build-85.sh index 8e3704b..f0cf1b9 100755 --- a/bin/build-85.sh +++ b/bin/build-85.sh @@ -8,7 +8,7 @@ export ATTINY=85 export MCU=attiny$ATTINY export CC=avr-gcc export OBJCOPY=avr-objcopy -export CFLAGS="-Wall -g -Os -mmcu=$MCU -c -std=gnu99 -DATTINY=$ATTINY -I.. -I../.. -I../../.." +export CFLAGS="-Wall -g -Os -mmcu=$MCU -c -std=gnu99 -DATTINY=$ATTINY -I.. -I../.. -I../../.. -fshort-enums" export OFLAGS="-Wall -g -Os -mmcu=$MCU" export LDFLAGS= export OBJCOPYFLAGS='--set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex' diff --git a/bin/build.sh b/bin/build.sh index 86afd1d..c1f0446 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -8,7 +8,7 @@ export ATTINY=13 export MCU=attiny$ATTINY export CC=avr-gcc export OBJCOPY=avr-objcopy -export CFLAGS="-Wall -g -Os -mmcu=$MCU -c -std=gnu99 -DATTINY=$ATTINY -I.. -I../.. -I../../.." +export CFLAGS="-Wall -g -Os -mmcu=$MCU -c -std=gnu99 -DATTINY=$ATTINY -I.. -I../.. -I../../.. -fshort-enums" export OFLAGS="-Wall -g -Os -mmcu=$MCU" export LDFLAGS= export OBJCOPYFLAGS='--set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex' diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index 5e1b4e1..3a84765 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -262,6 +262,7 @@ uint8_t nearest_level(int16_t target); uint8_t target_level = 0; #endif +// internal numbering for strobe modes typedef enum { #ifdef USE_BIKE_FLASHER_MODE bike_flasher_e, @@ -270,10 +271,10 @@ typedef enum { party_strobe_e, #endif #ifdef USE_TACTICAL_STROBE_MODE - tactial_strobe_e, + tactical_strobe_e, #endif #ifdef USE_LIGHTNING_MODE - lightening_storm_e, + lightning_storm_e, #endif #ifdef USE_CANDLE_MODE candle_mode_e, @@ -284,7 +285,7 @@ typedef enum { const int NUM_STROBES = strobe_mode_END; // strobe timing volatile uint8_t strobe_delays[] = { 40, 67 }; // party strobe, tactical strobe -volatile strobe_mode_te strobe_type = 0u; +volatile strobe_mode_te strobe_type = 0; // bike mode config options volatile uint8_t bike_flasher_brightness = MAX_1x7135; @@ -769,121 +770,72 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // hold: change speed (go faster) // or change brightness (brighter) else if (event == EV_click1_hold) { - switch(st) { - /* biking mode brighter */ - #ifdef USE_BIKE_FLASHER_MODE - case bike_flasher_e: - { - if (bike_flasher_brightness < MAX_BIKING_LEVEL) - { - bike_flasher_brightness ++; - } - set_level(bike_flasher_brightness); - break; - } - #endif - - /* party / tactial mode faster */ - #ifdef USE_PARTY_STROBE_MODE - case party_strobe_e: - #endif - #ifdef USE_TACTICAL_STROBE_MODE - case tactial_strobe_e: - #endif - #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - { - if ((arg & 0x01u) == 0u) - { - if (strobe_delays[st-1] > 8) - { - strobe_delays[st-1] --; - } - } - break; - } - #endif - - /* lightening mode has no settings */ - - /* candle mode brighter */ - #ifdef USE_CANDLE_MODE - case candle_mode_e: - { - if (candle_mode_brightness < MAX_CANDLE_LEVEL) - { - candle_mode_brightness ++; - } - break; - } - #endif - - case strobe_mode_END: - default: - { - /* Nothing */ - break; + if (0) {} // placeholder + + // biking mode brighter + #ifdef USE_BIKE_FLASHER_MODE + else if (st == bike_flasher_e) { + if (bike_flasher_brightness < MAX_BIKING_LEVEL) + bike_flasher_brightness ++; + set_level(bike_flasher_brightness); + } + #endif + + // party / tactical strobe faster + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + else if (st <= tactical_strobe_e) { + if ((arg & 1) == 0) { + if (strobe_delays[st-1] > 8) strobe_delays[st-1] --; } } + #endif + + // lightning has no adjustments + //else if (st == lightning_storm_e) {} + + // candle mode brighter + #ifdef USE_CANDLE_MODE + else if (st == candle_mode_e) { + if (candle_mode_brightness < MAX_CANDLE_LEVEL) + candle_mode_brightness ++; + } + #endif return MISCHIEF_MANAGED; } // click, hold: change speed (go slower) // or change brightness (dimmer) else if (event == EV_click2_hold) { - switch(st) { - /* biking mode dimmer */ - #ifdef USE_BIKE_FLASHER_MODE - case bike_flasher_e: - { - if (bike_flasher_brightness > 2) - { - bike_flasher_brightness--; - } - set_level(bike_flasher_brightness); - break; - } - #endif - - /* party / tactial mode slower */ - #ifdef USE_PARTY_STROBE_MODE - case party_strobe_e: - #endif - #ifdef USE_TACTICAL_STROBE_MODE - case tactial_strobe_e: - #endif - #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - { - if ((arg & 0x01u) == 0u) - { - if (strobe_delays[st-1] < 255) - { - strobe_delays[st-1] ++; - } - } - break; - } - #endif - - /* lightening mode has no settings */ - - /* candle mode brighter */ - #ifdef USE_CANDLE_MODE - case candle_mode_e: - { - if (candle_mode_brightness > 1) - { - candle_mode_brightness --; - } - break; - } - #endif - - case strobe_mode_END: - default: - { - /* Nothing */ - break; + if (0) {} // placeholder + + // biking mode dimmer + #ifdef USE_BIKE_FLASHER_MODE + else if (st == bike_flasher_e) { + if (bike_flasher_brightness > 2) + bike_flasher_brightness --; + set_level(bike_flasher_brightness); + } + #endif + + // party / tactical strobe slower + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + else if (st <= tactical_strobe_e) { + if ((arg & 1) == 0) { + if (strobe_delays[st-1] < 255) strobe_delays[st-1] ++; } } + #endif + + // lightning has no adjustments + //else if (st == lightning_storm_e) {} + + // candle mode dimmer + #ifdef USE_CANDLE_MODE + else if (st == candle_mode_e) { + if (candle_mode_brightness > 1) + candle_mode_brightness --; + } + #endif + return MISCHIEF_MANAGED; } // release hold: save new strobe settings @@ -1085,20 +1037,22 @@ uint8_t lockout_state(EventPtr event, uint16_t arg) { uint8_t last = 0; for(uint8_t i=0; pgm_read_byte(event + i) && (i MAX_LEVEL) burst = MAX_LEVEL; - for(uint8_t i=0; i<4; i++) { - set_level(burst); - if (! nice_delay_ms(5)) return; - set_level(bike_flasher_brightness); - if (! nice_delay_ms(65)) return; - } - nice_delay_ms(720); // no return check necessary on final delay - break; + + if (0) {} // placeholder + + // bike flasher + #ifdef USE_BIKE_FLASHER_MODE + else if (st == bike_flasher_e) { + uint8_t burst = bike_flasher_brightness << 1; + if (burst > MAX_LEVEL) burst = MAX_LEVEL; + for(uint8_t i=0; i<4; i++) { + set_level(burst); + if (! nice_delay_ms(5)) return; + set_level(bike_flasher_brightness); + if (! nice_delay_ms(65)) return; } - #endif - - /* party / tactial strobe */ - #ifdef USE_PARTY_STROBE_MODE - case party_strobe_e: - #endif - #ifdef USE_TACTICAL_STROBE_MODE - case tactial_strobe_e: - #endif - #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - { - uint8_t del = strobe_delays[st-1]; - // TODO: make tac strobe brightness configurable? - set_level(STROBE_BRIGHTNESS); - CLKPR = 1<> 1); - } - set_level(0); - nice_delay_ms(del); // no return check necessary on final delay - break; + nice_delay_ms(720); // no return check necessary on final delay + } + #endif + + // party / tactial strobe + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + else if (st <= tactical_strobe_e) { + uint8_t del = strobe_delays[st-1]; + // TODO: make tac strobe brightness configurable? + set_level(STROBE_BRIGHTNESS); + CLKPR = 1<> 1); } - #endif - - /* lightening mode has no settings */ - #ifdef USE_LIGHTNING_MODE - case lightening_storm_e: - { - int16_t brightness; - uint16_t rand_time; - - // turn the emitter on at a random level, - // for a random amount of time between 1ms and 32ms - //rand_time = 1 << (pseudo_rand() % 7); - rand_time = pseudo_rand() & 63; - brightness = 1 << (pseudo_rand() % 7); // 1, 2, 4, 8, 16, 32, 64 - brightness += 1 << (pseudo_rand() & 0x03); // 2 to 80 now - 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; + set_level(0); + nice_delay_ms(del); // no return check necessary on final delay + } + #endif - // 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; - brightness -= stepdown; - if (brightness < 0) brightness = 0; + // lightning storm + #ifdef USE_LIGHTNING_MODE + else if (st == lightning_storm_e) { + int16_t brightness; + uint16_t rand_time; + + // turn the emitter on at a random level, + // for a random amount of time between 1ms and 32ms + //rand_time = 1 << (pseudo_rand() % 7); + rand_time = pseudo_rand() & 63; + brightness = 1 << (pseudo_rand() % 7); // 1, 2, 4, 8, 16, 32, 64 + brightness += 1 << (pseudo_rand() & 0x03); // 2 to 80 now + 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; + + // 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; + brightness -= stepdown; + if (brightness < 0) brightness = 0; + set_level(brightness); + /* + if ((brightness < MAX_LEVEL/2) && (! (pseudo_rand() & 15))) { + brightness <<= 1; set_level(brightness); - /* - if ((brightness < MAX_LEVEL/2) && (! (pseudo_rand() & 15))) { - brightness <<= 1; - set_level(brightness); - } - */ - if (! (pseudo_rand() & 3)) { - if (! nice_delay_ms(rand_time)) return; - set_level(brightness>>1); - } } - - // turn the emitter off, - // for a random amount of time between 1ms and 8192ms - // (with a low bias) - rand_time = 1 << (pseudo_rand() % 13); - rand_time += pseudo_rand() % rand_time; - set_level(0); - nice_delay_ms(rand_time); // no return check necessary on final delay - break; - } - #endif - - /* candle mode brighter */ - #ifdef USE_CANDLE_MODE - case candle_mode_e: - { - /* Nothing */ - break; - } - #endif - - case strobe_mode_END: - default: - { - /* Nothing */ - break; + */ + if (! (pseudo_rand() & 3)) { + if (! nice_delay_ms(rand_time)) return; + set_level(brightness>>1); + } } + + // turn the emitter off, + // for a random amount of time between 1ms and 8192ms + // (with a low bias) + rand_time = 1 << (pseudo_rand() % 13); + rand_time += pseudo_rand() % rand_time; + set_level(0); + nice_delay_ms(rand_time); // no return check necessary on final delay } + #endif + + // candle mode + #ifdef USE_CANDLE_MODE + //else if (st == candle_mode_e) {} + #endif + } #ifdef USE_BATTCHECK -- cgit v1.2.3 From 49bf669c96d5668959f53e853fd29a94ae9ca9dd Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 22 Aug 2018 18:14:15 -0600 Subject: Reduced ROM size another 20 bytes by moving candle mode to index 0. Made it possible to disable all strobe-group modes. --- spaghetti-monster/anduril/anduril.c | 101 +++++++++++++++++++++++++----------- 1 file changed, 72 insertions(+), 29 deletions(-) diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index 3a84765..5f0182d 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -167,7 +167,10 @@ uint8_t config_state_values[MAX_CONFIG_VALUES]; uint8_t steady_state(EventPtr event, uint16_t arg); uint8_t ramp_config_state(EventPtr event, uint16_t arg); // party and tactical strobes +#if defined(USE_CANDLE_MODE) || defined(USE_BIKE_FLASHER_MODE) || defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) || defined(USE_LIGHTNING_MODE) +#define USE_STROBE_STATE uint8_t strobe_state(EventPtr event, uint16_t arg); +#endif #ifdef USE_BATTCHECK uint8_t battcheck_state(EventPtr event, uint16_t arg); #endif @@ -263,7 +266,11 @@ uint8_t target_level = 0; #endif // internal numbering for strobe modes +#ifdef USE_STROBE_STATE typedef enum { + #ifdef USE_CANDLE_MODE + candle_mode_e, + #endif #ifdef USE_BIKE_FLASHER_MODE bike_flasher_e, #endif @@ -276,19 +283,24 @@ typedef enum { #ifdef USE_LIGHTNING_MODE lightning_storm_e, #endif - #ifdef USE_CANDLE_MODE - candle_mode_e, - #endif strobe_mode_END } strobe_mode_te ; const int NUM_STROBES = strobe_mode_END; -// strobe timing -volatile uint8_t strobe_delays[] = { 40, 67 }; // party strobe, tactical strobe + +// which strobe mode is active? volatile strobe_mode_te strobe_type = 0; +#endif + +#if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) +// party / tactical strobe timing +volatile uint8_t strobe_delays[] = { 40, 67 }; // party strobe, tactical strobe +#endif // bike mode config options +#ifdef USE_BIKE_FLASHER_MODE volatile uint8_t bike_flasher_brightness = MAX_1x7135; +#endif #ifdef USE_CANDLE_MODE uint8_t triangle_wave(uint8_t phase); @@ -380,10 +392,12 @@ uint8_t off_state(EventPtr event, uint16_t arg) { } #endif // click, click, long-click: strobe mode + #ifdef USE_STROBE_STATE else if (event == EV_click3_hold) { set_state(strobe_state, 0); return MISCHIEF_MANAGED; } + #endif // 4 clicks: soft lockout else if (event == EV_4clicks) { blink_confirm(2); @@ -724,6 +738,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { } +#ifdef USE_STROBE_STATE uint8_t strobe_state(EventPtr event, uint16_t arg) { // 'st' reduces ROM size by avoiding access to a volatile var // (maybe I should just make it nonvolatile?) @@ -772,6 +787,14 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { else if (event == EV_click1_hold) { if (0) {} // placeholder + // candle mode brighter + #ifdef USE_CANDLE_MODE + else if (st == candle_mode_e) { + if (candle_mode_brightness < MAX_CANDLE_LEVEL) + candle_mode_brightness ++; + } + #endif + // biking mode brighter #ifdef USE_BIKE_FLASHER_MODE else if (st == bike_flasher_e) { @@ -783,7 +806,11 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // party / tactical strobe faster #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + #ifdef USE_TACTICAL_STROBE_MODE else if (st <= tactical_strobe_e) { + #else + else if (st == party_strobe_e) { + #endif if ((arg & 1) == 0) { if (strobe_delays[st-1] > 8) strobe_delays[st-1] --; } @@ -793,13 +820,6 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // lightning has no adjustments //else if (st == lightning_storm_e) {} - // candle mode brighter - #ifdef USE_CANDLE_MODE - else if (st == candle_mode_e) { - if (candle_mode_brightness < MAX_CANDLE_LEVEL) - candle_mode_brightness ++; - } - #endif return MISCHIEF_MANAGED; } // click, hold: change speed (go slower) @@ -807,6 +827,14 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { else if (event == EV_click2_hold) { if (0) {} // placeholder + // candle mode dimmer + #ifdef USE_CANDLE_MODE + else if (st == candle_mode_e) { + if (candle_mode_brightness > 1) + candle_mode_brightness --; + } + #endif + // biking mode dimmer #ifdef USE_BIKE_FLASHER_MODE else if (st == bike_flasher_e) { @@ -818,7 +846,11 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // party / tactical strobe slower #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + #ifdef USE_TACTICAL_STROBE_MODE else if (st <= tactical_strobe_e) { + #else + else if (st == party_strobe_e) { + #endif if ((arg & 1) == 0) { if (strobe_delays[st-1] < 255) strobe_delays[st-1] ++; } @@ -828,14 +860,6 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // lightning has no adjustments //else if (st == lightning_storm_e) {} - // candle mode dimmer - #ifdef USE_CANDLE_MODE - else if (st == candle_mode_e) { - if (candle_mode_brightness > 1) - candle_mode_brightness --; - } - #endif - return MISCHIEF_MANAGED; } // release hold: save new strobe settings @@ -861,11 +885,10 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { } #endif #if defined(USE_LIGHTNING_MODE) || defined(USE_CANDLE_MODE) - // clock tick: bump the random seed + // clock tick: bump the random seed, adjust candle brightness else if (event == EV_tick) { - #ifdef USE_LIGHTNING_MODE pseudo_rand_seed += arg; - #endif + #ifdef USE_CANDLE_MODE if (st == candle_mode_e) { // self-timer dims the light during the final minute @@ -925,6 +948,7 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { #endif return EVENT_NOT_HANDLED; } +#endif // ifdef USE_STROBE_STATE #ifdef USE_BATTCHECK @@ -1586,10 +1610,14 @@ void load_config() { ramp_discrete_floor = eeprom[3]; ramp_discrete_ceil = eeprom[4]; ramp_discrete_steps = eeprom[5]; + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) strobe_type = eeprom[6]; // TODO: move this to eeprom_wl? strobe_delays[0] = eeprom[7]; strobe_delays[1] = eeprom[8]; + #endif + #ifdef USE_BIKE_FLASHER_MODE bike_flasher_brightness = eeprom[9]; + #endif beacon_seconds = eeprom[10]; #ifdef USE_MUGGLE_MODE muggle_mode_active = eeprom[11]; @@ -1616,10 +1644,14 @@ void save_config() { eeprom[3] = ramp_discrete_floor; eeprom[4] = ramp_discrete_ceil; eeprom[5] = ramp_discrete_steps; + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) eeprom[6] = strobe_type; // TODO: move this to eeprom_wl? eeprom[7] = strobe_delays[0]; eeprom[8] = strobe_delays[1]; + #endif + #ifdef USE_BIKE_FLASHER_MODE eeprom[9] = bike_flasher_brightness; + #endif eeprom[10] = beacon_seconds; #ifdef USE_MUGGLE_MODE eeprom[11] = muggle_mode_active; @@ -1645,10 +1677,15 @@ void save_config_wl() { void low_voltage() { StatePtr state = current_state; + if (0) {} // placeholder + + #ifdef USE_STROBE_STATE // "step down" from strobe to something low - if (state == strobe_state) { + else if (state == strobe_state) { set_state(steady_state, RAMP_SIZE/6); } + #endif + // in normal or muggle mode, step down or turn off //else if ((state == steady_state) || (state == muggle_state)) { else if (state == steady_state) { @@ -1721,11 +1758,17 @@ void loop() { #endif if (0) {} + #ifdef USE_STROBE_STATE if (state == strobe_state) { uint8_t st = strobe_type; if (0) {} // placeholder + // candle mode + #ifdef USE_CANDLE_MODE + //else if (st == candle_mode_e) {} + #endif + // bike flasher #ifdef USE_BIKE_FLASHER_MODE else if (st == bike_flasher_e) { @@ -1743,7 +1786,11 @@ void loop() { // party / tactial strobe #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + #ifdef USE_TACTICAL_STROBE_MODE else if (st <= tactical_strobe_e) { + #else + else if (st == party_strobe_e) { + #endif uint8_t del = strobe_delays[st-1]; // TODO: make tac strobe brightness configurable? set_level(STROBE_BRIGHTNESS); @@ -1806,12 +1853,8 @@ void loop() { } #endif - // candle mode - #ifdef USE_CANDLE_MODE - //else if (st == candle_mode_e) {} - #endif - } + #endif // #ifdef USE_STROBE_STATE #ifdef USE_BATTCHECK else if (state == battcheck_state) { -- cgit v1.2.3 From f59f0512646ea2056535814273fd17331b6a1f4c Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 22 Aug 2018 18:44:06 -0600 Subject: Replaced hardcoded eeprom index values with auto-calculated enums. --- spaghetti-monster/anduril/anduril.c | 111 ++++++++++++++++++++++-------------- spaghetti-monster/fsm-eeprom.c | 4 +- spaghetti-monster/fsm-eeprom.h | 4 +- 3 files changed, 73 insertions(+), 46 deletions(-) diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index 5f0182d..ccb42ab 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -132,16 +132,44 @@ #define STROBE_BRIGHTNESS MAX_LEVEL #endif -// try to auto-detect how many eeprom bytes -// FIXME: detect this better, and assign offsets better, for various configs -#define USE_EEPROM -#ifdef USE_INDICATOR_LED -#define EEPROM_BYTES 15 -#elif defined(USE_THERMAL_REGULATION) -#define EEPROM_BYTES 14 -#else -#define EEPROM_BYTES 12 +#if defined(USE_CANDLE_MODE) || defined(USE_BIKE_FLASHER_MODE) || defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) || defined(USE_LIGHTNING_MODE) +#define USE_STROBE_STATE #endif + +// auto-detect how many eeprom bytes +#define USE_EEPROM +typedef enum { + ramp_style_e, + ramp_smooth_floor_e, + ramp_smooth_ceil_e, + ramp_discrete_floor_e, + ramp_discrete_ceil_e, + ramp_discrete_steps_e, + #ifdef USE_STROBE_STATE + strobe_type_e, + #endif + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + strobe_delays_0_e, + strobe_delays_1_e, + #endif + #ifdef USE_BIKE_FLASHER_MODE + bike_flasher_brightness_e, + #endif + beacon_seconds_e, + #ifdef USE_MUGGLE_MODE + muggle_mode_active_e, + #endif + #ifdef USE_THERMAL_REGULATION + therm_ceil_e, + therm_cal_offset_e, + #endif + #ifdef USE_INDICATOR_LED + indicator_led_mode_e, + #endif + eeprom_indexes_e_END +} eeprom_indexes_e; +#define EEPROM_BYTES eeprom_indexes_e_END + #ifdef START_AT_MEMORIZED_LEVEL #define USE_EEPROM_WL #define EEPROM_WL_BYTES 1 @@ -167,8 +195,7 @@ uint8_t config_state_values[MAX_CONFIG_VALUES]; uint8_t steady_state(EventPtr event, uint16_t arg); uint8_t ramp_config_state(EventPtr event, uint16_t arg); // party and tactical strobes -#if defined(USE_CANDLE_MODE) || defined(USE_BIKE_FLASHER_MODE) || defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) || defined(USE_LIGHTNING_MODE) -#define USE_STROBE_STATE +#ifdef USE_STROBE_STATE uint8_t strobe_state(EventPtr event, uint16_t arg); #endif #ifdef USE_BATTCHECK @@ -284,7 +311,7 @@ typedef enum { lightning_storm_e, #endif strobe_mode_END -} strobe_mode_te ; +} strobe_mode_te; const int NUM_STROBES = strobe_mode_END; @@ -1604,30 +1631,30 @@ uint8_t triangle_wave(uint8_t phase) { void load_config() { if (load_eeprom()) { - ramp_style = eeprom[0]; - ramp_smooth_floor = eeprom[1]; - ramp_smooth_ceil = eeprom[2]; - ramp_discrete_floor = eeprom[3]; - ramp_discrete_ceil = eeprom[4]; - ramp_discrete_steps = eeprom[5]; + ramp_style = eeprom[ramp_style_e]; + ramp_smooth_floor = eeprom[ramp_smooth_floor_e]; + ramp_smooth_ceil = eeprom[ramp_smooth_ceil_e]; + ramp_discrete_floor = eeprom[ramp_discrete_floor_e]; + ramp_discrete_ceil = eeprom[ramp_discrete_ceil_e]; + ramp_discrete_steps = eeprom[ramp_discrete_steps_e]; #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - strobe_type = eeprom[6]; // TODO: move this to eeprom_wl? - strobe_delays[0] = eeprom[7]; - strobe_delays[1] = eeprom[8]; + strobe_type = eeprom[strobe_type_e]; // TODO: move this to eeprom_wl? + strobe_delays[0] = eeprom[strobe_delays_0_e]; + strobe_delays[1] = eeprom[strobe_delays_1_e]; #endif #ifdef USE_BIKE_FLASHER_MODE - bike_flasher_brightness = eeprom[9]; + bike_flasher_brightness = eeprom[bike_flasher_brightness_e]; #endif - beacon_seconds = eeprom[10]; + beacon_seconds = eeprom[beacon_seconds_e]; #ifdef USE_MUGGLE_MODE - muggle_mode_active = eeprom[11]; + muggle_mode_active = eeprom[muggle_mode_active_e]; #endif #ifdef USE_THERMAL_REGULATION - therm_ceil = eeprom[12]; - therm_cal_offset = eeprom[13]; + therm_ceil = eeprom[therm_ceil_e]; + therm_cal_offset = eeprom[therm_cal_offset_e]; #endif #ifdef USE_INDICATOR_LED - indicator_led_mode = eeprom[14]; + indicator_led_mode = eeprom[indicator_led_mode_e]; #endif } #ifdef START_AT_MEMORIZED_LEVEL @@ -1638,30 +1665,30 @@ void load_config() { } void save_config() { - eeprom[0] = ramp_style; - eeprom[1] = ramp_smooth_floor; - eeprom[2] = ramp_smooth_ceil; - eeprom[3] = ramp_discrete_floor; - eeprom[4] = ramp_discrete_ceil; - eeprom[5] = ramp_discrete_steps; + eeprom[ramp_style_e] = ramp_style; + eeprom[ramp_smooth_floor_e] = ramp_smooth_floor; + eeprom[ramp_smooth_ceil_e] = ramp_smooth_ceil; + eeprom[ramp_discrete_floor_e] = ramp_discrete_floor; + eeprom[ramp_discrete_ceil_e] = ramp_discrete_ceil; + eeprom[ramp_discrete_steps_e] = ramp_discrete_steps; #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - eeprom[6] = strobe_type; // TODO: move this to eeprom_wl? - eeprom[7] = strobe_delays[0]; - eeprom[8] = strobe_delays[1]; + eeprom[strobe_type_e] = strobe_type; // TODO: move this to eeprom_wl? + eeprom[strobe_delays_0_e] = strobe_delays[0]; + eeprom[strobe_delays_1_e] = strobe_delays[1]; #endif #ifdef USE_BIKE_FLASHER_MODE - eeprom[9] = bike_flasher_brightness; + eeprom[bike_flasher_brightness_e] = bike_flasher_brightness; #endif - eeprom[10] = beacon_seconds; + eeprom[beacon_seconds_e] = beacon_seconds; #ifdef USE_MUGGLE_MODE - eeprom[11] = muggle_mode_active; + eeprom[muggle_mode_active_e] = muggle_mode_active; #endif #ifdef USE_THERMAL_REGULATION - eeprom[12] = therm_ceil; - eeprom[13] = therm_cal_offset; + eeprom[therm_ceil_e] = therm_ceil; + eeprom[therm_cal_offset_e] = therm_cal_offset; #endif #ifdef USE_INDICATOR_LED - eeprom[14] = indicator_led_mode; + eeprom[indicator_led_mode_e] = indicator_led_mode; #endif save_eeprom(); diff --git a/spaghetti-monster/fsm-eeprom.c b/spaghetti-monster/fsm-eeprom.c index bb63c7e..277e2b2 100644 --- a/spaghetti-monster/fsm-eeprom.c +++ b/spaghetti-monster/fsm-eeprom.c @@ -22,7 +22,7 @@ #include "fsm-eeprom.h" -#if EEPROM_BYTES > 0 +#ifdef USE_EEPROM #ifdef EEPROM_OVERRIDE uint8_t *eeprom; #else @@ -57,7 +57,7 @@ void save_eeprom() { } #endif -#if EEPROM_WL_BYTES > 0 +#ifdef USE_EEPROM_WL uint8_t eeprom_wl[EEPROM_WL_BYTES]; EEP_OFFSET_T eep_wl_prev_offset; diff --git a/spaghetti-monster/fsm-eeprom.h b/spaghetti-monster/fsm-eeprom.h index a668588..3621106 100644 --- a/spaghetti-monster/fsm-eeprom.h +++ b/spaghetti-monster/fsm-eeprom.h @@ -32,7 +32,7 @@ #define EEPROM_WL_BYTES 0 #endif -#if EEPROM_BYTES > 0 +#ifdef USE_EEPROM #if EEPROM_BYTES >= (EEPSIZE/2) #error Requested EEPROM_BYTES too big. #endif @@ -46,7 +46,7 @@ void save_eeprom(); #define EEP_START (EEPSIZE/2) #endif -#if EEPROM_WL_BYTES > 0 +#ifdef USE_EEPROM_WL #if EEPROM_WL_BYTES >= (EEPSIZE/4) #error Requested EEPROM_WL_BYTES too big. #endif -- cgit v1.2.3 From e2a07531ebe03e65f1c546b1d3dccde66d387c75 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 22 Aug 2018 22:59:48 -0600 Subject: Rearranged strobe group mode order, fixed party strobe. Was broken due to some remaining hardcoded stuff about the mode numbers. Lost the 20 bytes saved earlier, but that was only reduced due to accidentally compiling out the party strobe code. --- spaghetti-monster/anduril/anduril.c | 111 +++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 53 deletions(-) diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index ccb42ab..3637c3d 100755 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -295,12 +295,6 @@ uint8_t target_level = 0; // internal numbering for strobe modes #ifdef USE_STROBE_STATE typedef enum { - #ifdef USE_CANDLE_MODE - candle_mode_e, - #endif - #ifdef USE_BIKE_FLASHER_MODE - bike_flasher_e, - #endif #ifdef USE_PARTY_STROBE_MODE party_strobe_e, #endif @@ -310,14 +304,24 @@ typedef enum { #ifdef USE_LIGHTNING_MODE lightning_storm_e, #endif + #ifdef USE_CANDLE_MODE + candle_mode_e, + #endif + #ifdef USE_BIKE_FLASHER_MODE + bike_flasher_e, + #endif strobe_mode_END } strobe_mode_te; const int NUM_STROBES = strobe_mode_END; // which strobe mode is active? +#ifdef USE_CANDLE_MODE +volatile strobe_mode_te strobe_type = candle_mode_e; +#else volatile strobe_mode_te strobe_type = 0; #endif +#endif #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) // party / tactical strobe timing @@ -814,6 +818,22 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { else if (event == EV_click1_hold) { if (0) {} // placeholder + // party / tactical strobe faster + #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) + #ifdef USE_TACTICAL_STROBE_MODE + else if (st <= tactical_strobe_e) { + #else + else if (st == party_strobe_e) { + #endif + if ((arg & 1) == 0) { + if (strobe_delays[st] > 8) strobe_delays[st] --; + } + } + #endif + + // lightning has no adjustments + //else if (st == lightning_storm_e) {} + // candle mode brighter #ifdef USE_CANDLE_MODE else if (st == candle_mode_e) { @@ -831,7 +851,14 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { } #endif - // party / tactical strobe faster + return MISCHIEF_MANAGED; + } + // click, hold: change speed (go slower) + // or change brightness (dimmer) + else if (event == EV_click2_hold) { + if (0) {} // placeholder + + // party / tactical strobe slower #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) #ifdef USE_TACTICAL_STROBE_MODE else if (st <= tactical_strobe_e) { @@ -839,7 +866,7 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { else if (st == party_strobe_e) { #endif if ((arg & 1) == 0) { - if (strobe_delays[st-1] > 8) strobe_delays[st-1] --; + if (strobe_delays[st] < 255) strobe_delays[st] ++; } } #endif @@ -847,13 +874,6 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { // lightning has no adjustments //else if (st == lightning_storm_e) {} - return MISCHIEF_MANAGED; - } - // click, hold: change speed (go slower) - // or change brightness (dimmer) - else if (event == EV_click2_hold) { - if (0) {} // placeholder - // candle mode dimmer #ifdef USE_CANDLE_MODE else if (st == candle_mode_e) { @@ -871,22 +891,6 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { } #endif - // party / tactical strobe slower - #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) - #ifdef USE_TACTICAL_STROBE_MODE - else if (st <= tactical_strobe_e) { - #else - else if (st == party_strobe_e) { - #endif - if ((arg & 1) == 0) { - if (strobe_delays[st-1] < 255) strobe_delays[st-1] ++; - } - } - #endif - - // lightning has no adjustments - //else if (st == lightning_storm_e) {} - return MISCHIEF_MANAGED; } // release hold: save new strobe settings @@ -1791,26 +1795,6 @@ void loop() { if (0) {} // placeholder - // candle mode - #ifdef USE_CANDLE_MODE - //else if (st == candle_mode_e) {} - #endif - - // bike flasher - #ifdef USE_BIKE_FLASHER_MODE - else if (st == bike_flasher_e) { - uint8_t burst = bike_flasher_brightness << 1; - if (burst > MAX_LEVEL) burst = MAX_LEVEL; - for(uint8_t i=0; i<4; i++) { - set_level(burst); - if (! nice_delay_ms(5)) return; - set_level(bike_flasher_brightness); - if (! nice_delay_ms(65)) return; - } - nice_delay_ms(720); // no return check necessary on final delay - } - #endif - // party / tactial strobe #if defined(USE_PARTY_STROBE_MODE) || defined(USE_TACTICAL_STROBE_MODE) #ifdef USE_TACTICAL_STROBE_MODE @@ -1818,11 +1802,11 @@ void loop() { #else else if (st == party_strobe_e) { #endif - uint8_t del = strobe_delays[st-1]; + uint8_t del = strobe_delays[st]; // TODO: make tac strobe brightness configurable? set_level(STROBE_BRIGHTNESS); CLKPR = 1< MAX_LEVEL) burst = MAX_LEVEL; + for(uint8_t i=0; i<4; i++) { + set_level(burst); + if (! nice_delay_ms(5)) return; + set_level(bike_flasher_brightness); + if (! nice_delay_ms(65)) return; + } + nice_delay_ms(720); // no return check necessary on final delay + } + #endif + } #endif // #ifdef USE_STROBE_STATE -- cgit v1.2.3 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 From d8fad0c66eba831cf852d746a1e0cfcd1431d4de Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 22 Aug 2018 23:40:20 -0600 Subject: Made anduril.c no longer executable. --- spaghetti-monster/anduril/anduril.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 spaghetti-monster/anduril/anduril.c diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c old mode 100755 new mode 100644 -- cgit v1.2.3