diff options
Diffstat (limited to 'fsm')
| -rw-r--r-- | fsm/chan-aux.c | 2 | ||||
| -rw-r--r-- | fsm/chan-rgbaux.c | 14 | ||||
| -rw-r--r-- | fsm/ramping.c | 5 | ||||
| -rw-r--r-- | fsm/ramping.h | 3 |
4 files changed, 16 insertions, 8 deletions
diff --git a/fsm/chan-aux.c b/fsm/chan-aux.c index e04e6a2..239316a 100644 --- a/fsm/chan-aux.c +++ b/fsm/chan-aux.c @@ -4,7 +4,7 @@ #pragma once void set_level_aux(uint8_t level) { - indicator_led(!(!(level)) << 1); // high (or off) + indicator_led((!(!(level)) << 1) + 1); // high (level > 0) or low } bool gradual_tick_null(uint8_t gt) { return true; } // do nothing diff --git a/fsm/chan-rgbaux.c b/fsm/chan-rgbaux.c index 19d18a6..a66c29e 100644 --- a/fsm/chan-rgbaux.c +++ b/fsm/chan-rgbaux.c @@ -4,31 +4,31 @@ #pragma once void set_level_auxred(uint8_t level) { - rgb_led_set(!(!(level)) * 0b000010); // red, high (or off) + rgb_led_set(0b000001 << !(!(level))); // red, high (level > 0) or low } void set_level_auxyel(uint8_t level) { - rgb_led_set(!(!(level)) * 0b001010); // red+green, high (or off) + rgb_led_set(0b000101 << !(!(level))); // red+green, high (level > 0) or low } void set_level_auxgrn(uint8_t level) { - rgb_led_set(!(!(level)) * 0b001000); // green, high (or off) + rgb_led_set(0b000100 << !(!(level))); // green, high (level > 0) or low } void set_level_auxcyn(uint8_t level) { - rgb_led_set(!(!(level)) * 0b101000); // green+blue, high (or off) + rgb_led_set(0b010100 << !(!(level))); // green+blue, high (level > 0) or low } void set_level_auxblu(uint8_t level) { - rgb_led_set(!(!(level)) * 0b100000); // blue, high (or off) + rgb_led_set(0b010000 << !(!(level))); // blue, high (level > 0) or low } void set_level_auxprp(uint8_t level) { - rgb_led_set(!(!(level)) * 0b100010); // red+blue, high (or off) + rgb_led_set(0b010001 << !(!(level))); // red+blue, high (level > 0) or low } void set_level_auxwht(uint8_t level) { - rgb_led_set(!(!(level)) * 0b101010); // red+green+blue, high (or off) + rgb_led_set(0b010101 << !(!(level))); // red+green+blue, high (level > 0) or low } bool gradual_tick_null(uint8_t gt) { return true; } // do nothing diff --git a/fsm/ramping.c b/fsm/ramping.c index b3b3b23..e0c391a 100644 --- a/fsm/ramping.c +++ b/fsm/ramping.c @@ -64,6 +64,11 @@ inline void set_level_aux_rgb_leds(uint8_t level) { void set_level(uint8_t level) { + #ifdef USE_RAMP_LEVEL_HARD_LIMIT + if (ramp_level_hard_limit && (level > ramp_level_hard_limit)) + level = ramp_level_hard_limit; + #endif + #ifdef USE_JUMP_START // maybe "jump start" the engine, if it's prone to slow starts // (pulse the output high for a moment to wake up the power regulator) diff --git a/fsm/ramping.h b/fsm/ramping.h index c4b7d48..f542bd2 100644 --- a/fsm/ramping.h +++ b/fsm/ramping.h @@ -10,6 +10,9 @@ uint8_t actual_level = 0; // the level used before actual uint8_t prev_level = 0; +#ifdef USE_RAMP_LEVEL_HARD_LIMIT +uint8_t ramp_level_hard_limit = 0; +#endif void set_level(uint8_t level); //void set_level_smooth(uint8_t level); |
