diff options
| author | Selene ToyKeeper | 2019-06-04 18:55:42 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2019-06-04 18:55:42 -0600 |
| commit | 2cbd4b971ec838523faa966335e222a5f484400a (patch) | |
| tree | 4e0f8d0fc171b74e8d109319061c6e3993ace3dd /spaghetti-monster | |
| parent | added compile option to configure response timing on 1-click on/off (at press... (diff) | |
| download | anduril-2cbd4b971ec838523faa966335e222a5f484400a.tar.gz anduril-2cbd4b971ec838523faa966335e222a5f484400a.tar.bz2 anduril-2cbd4b971ec838523faa966335e222a5f484400a.zip | |
reduced size by 28 bytes and made code slightly cleaner by moving a common 2-line pattern into its own function
(instead of "target_level = x; set_level(x);", it does "set_level_and_therm_target(x);")
Diffstat (limited to 'spaghetti-monster')
| -rw-r--r-- | spaghetti-monster/anduril/anduril.c | 67 |
1 files changed, 21 insertions, 46 deletions
diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c index dffa981..913a857 100644 --- a/spaghetti-monster/anduril/anduril.c +++ b/spaghetti-monster/anduril/anduril.c @@ -380,6 +380,9 @@ uint8_t nearest_level(int16_t target); #ifdef USE_THERMAL_REGULATION // brightness before thermal step-down uint8_t target_level = 0; +void set_level_and_therm_target(uint8_t level); +#else +#define set_level_and_therm_target(level) set_level(level) #endif // internal numbering for strobe modes @@ -634,10 +637,7 @@ uint8_t steady_state(Event event, uint16_t arg) { memorized_level = arg; // use the requested level even if not memorized arg = nearest_level(arg); - #ifdef USE_THERMAL_REGULATION - target_level = arg; - #endif - set_level(arg); + set_level_and_therm_target(arg); #ifdef USE_REVERSING ramp_direction = 1; #endif @@ -647,18 +647,12 @@ uint8_t steady_state(Event event, uint16_t arg) { // 1 click (early): off, if configured for early response else if (event == EV_click1_release) { level_before_off = actual_level; - #ifdef USE_THERMAL_REGULATION - target_level = 0; - #endif - set_level(0); + set_level_and_therm_target(0); return MISCHIEF_MANAGED; } // 2 clicks (early): abort turning off, if configured for early response else if (event == EV_click2_press) { - #ifdef USE_THERMAL_REGULATION - target_level = level_before_off; - #endif - set_level(level_before_off); + set_level_and_therm_target(level_before_off); return MISCHIEF_MANAGED; } #endif // if (B_TIMING_OFF == B_RELEASE_T) @@ -670,36 +664,24 @@ uint8_t steady_state(Event event, uint16_t arg) { // 2 clicks: go to/from highest level else if (event == EV_2clicks) { if (actual_level < MAX_LEVEL) { - #ifdef USE_THERMAL_REGULATION - target_level = MAX_LEVEL; - #endif // true turbo, not the mode-specific ceiling - set_level(MAX_LEVEL); + set_level_and_therm_target(MAX_LEVEL); } else { - #ifdef USE_THERMAL_REGULATION - target_level = memorized_level; - #endif - set_level(memorized_level); + set_level_and_therm_target(memorized_level); } return MISCHIEF_MANAGED; } // 3 clicks: toggle smooth vs discrete ramping else if (event == EV_3clicks) { ramp_style = !ramp_style; - memorized_level = nearest_level(actual_level); - #ifdef USE_THERMAL_REGULATION - target_level = memorized_level; - #ifdef USE_SET_LEVEL_GRADUALLY - //set_level_gradually(lvl); - #endif - #endif save_config(); #ifdef START_AT_MEMORIZED_LEVEL save_config_wl(); #endif blip(); - set_level(memorized_level); + memorized_level = nearest_level(actual_level); + set_level_and_therm_target(memorized_level); return MISCHIEF_MANAGED; } #ifdef USE_RAMP_CONFIG @@ -729,9 +711,6 @@ uint8_t steady_state(Event event, uint16_t arg) { #else memorized_level = nearest_level((int16_t)actual_level + ramp_step_size); #endif - #ifdef USE_THERMAL_REGULATION - target_level = memorized_level; - #endif #if defined(BLINK_AT_RAMP_CEILING) || defined(BLINK_AT_RAMP_MIDDLE) // only blink once for each threshold if ((memorized_level != actual_level) && ( @@ -766,7 +745,7 @@ uint8_t steady_state(Event event, uint16_t arg) { blip(); } #endif - set_level(memorized_level); + set_level_and_therm_target(memorized_level); return MISCHIEF_MANAGED; } #if defined(USE_REVERSING) || defined(START_AT_MEMORIZED_LEVEL) @@ -792,9 +771,6 @@ uint8_t steady_state(Event event, uint16_t arg) { } // TODO? make it ramp up instead, if already at min? memorized_level = nearest_level((int16_t)actual_level - ramp_step_size); - #ifdef USE_THERMAL_REGULATION - target_level = memorized_level; - #endif #if defined(BLINK_AT_RAMP_FLOOR) || defined(BLINK_AT_RAMP_MIDDLE) // only blink once for each threshold if ((memorized_level != actual_level) && ( @@ -826,7 +802,7 @@ uint8_t steady_state(Event event, uint16_t arg) { blip(); } #endif - set_level(memorized_level); + set_level_and_therm_target(memorized_level); return MISCHIEF_MANAGED; } #ifdef START_AT_MEMORIZED_LEVEL @@ -917,10 +893,10 @@ uint8_t steady_state(Event event, uint16_t arg) { if (actual_level > THERM_FASTER_LEVEL) { #ifdef USE_SET_LEVEL_GRADUALLY set_level_gradually(THERM_FASTER_LEVEL); + target_level = THERM_FASTER_LEVEL; #else - set_level(THERM_FASTER_LEVEL); + set_level_and_therm_target(THERM_FASTER_LEVEL); #endif - target_level = THERM_FASTER_LEVEL; } else #endif if (actual_level > MIN_THERM_STEPDOWN) { @@ -2111,6 +2087,12 @@ uint8_t nearest_level(int16_t target) { return this_level; } +#ifdef USE_THERMAL_REGULATION +void set_level_and_therm_target(uint8_t level) { + target_level = level; + set_level(level); +} +#endif void blink_confirm(uint8_t num) { for (; num>0; num--) { @@ -2266,14 +2248,7 @@ void low_voltage() { else if (state == steady_state) { if (actual_level > 1) { uint8_t lvl = (actual_level >> 1) + (actual_level >> 2); - set_level(lvl); - #ifdef USE_THERMAL_REGULATION - target_level = lvl; - #ifdef USE_SET_LEVEL_GRADUALLY - // not needed? - //set_level_gradually(lvl); - #endif - #endif + set_level_and_therm_target(lvl); } else { set_state(off_state, 0); |
