diff options
| -rw-r--r-- | spaghetti-monster/anduril/anduril.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index 9d7e0d8..6323679 100644 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -32,6 +32,7 @@ #define BLINK_AT_CHANNEL_BOUNDARIES //#define BLINK_AT_RAMP_FLOOR #define BLINK_AT_RAMP_CEILING +//#define BLINK_AT_STEPS #define BATTCHECK_VpT #define USE_LIGHTNING_MODE #define USE_CANDLE_MODE @@ -426,6 +427,21 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { delay_4ms(8/4); } #endif + #if defined(BLINK_AT_STEPS) + uint8_t foo = ramp_style; + ramp_style = 1; + uint8_t nearest = nearest_level((int16_t)actual_level); + ramp_style = foo; + // only blink once for each threshold + if ((memorized_level != actual_level) && + (ramp_style == 0) && + (memorized_level == nearest) + ) + { + set_level(0); + delay_4ms(8/4); + } + #endif set_level(memorized_level); return MISCHIEF_MANAGED; } @@ -473,6 +489,21 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { delay_4ms(8/4); } #endif + #if defined(BLINK_AT_STEPS) + uint8_t foo = ramp_style; + ramp_style = 1; + uint8_t nearest = nearest_level((int16_t)actual_level); + ramp_style = foo; + // only blink once for each threshold + if ((memorized_level != actual_level) && + (ramp_style == 0) && + (memorized_level == nearest) + ) + { + set_level(0); + delay_4ms(8/4); + } + #endif set_level(memorized_level); return MISCHIEF_MANAGED; } @@ -564,7 +595,8 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { uint8_t strobe_state(EventPtr event, uint16_t arg) { - // FIXME: re-order the strobes so candle and lightning are adjacent + // 'st' reduces ROM size by avoiding access to a volatile var + // (maybe I should just make it nonvolatile?) uint8_t st = strobe_type; #ifdef USE_CANDLE_MODE //#define MAX_CANDLE_LEVEL (RAMP_SIZE-8-6-4) @@ -890,6 +922,7 @@ uint8_t momentary_state(EventPtr event, uint16_t arg) { set_level(0); empty_event_sequence(); // don't attempt to parse multiple clicks //go_to_standby = 1; // sleep while light is off + // TODO: lighted button should use lockout config? return MISCHIEF_MANAGED; } @@ -1298,7 +1331,7 @@ void low_voltage() { if (state == strobe_state) { set_state(steady_state, RAMP_SIZE/6); } - // in normal or muggle mode, step down by half or turn off + // in normal or muggle mode, step down or turn off else if ((state == steady_state) || (state == muggle_state)) { if (actual_level > 1) { uint8_t lvl = (actual_level >> 1) + (actual_level >> 2); |
