aboutsummaryrefslogtreecommitdiff
path: root/spaghetti-monster
diff options
context:
space:
mode:
Diffstat (limited to 'spaghetti-monster')
-rw-r--r--spaghetti-monster/anduril/anduril.c67
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);
If you find this content useful please consider a small donation via bitcoin: bitcoin:1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2?amount=0.001&message=Donation Scraping git contents via cgit is very resource intensive. The continued hosting of these git repositories is entirely financed by your bitcoin contributions. For donations of a least 1 mBTC you include your IP address in the message of your bitcoin donation. This will remove this message in the future for requests from your IP, which will significantly reduce token usage. In any case, any contributions to bitcoin address 1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2 are very welcome. Thanks in advance for you contribution to a self-sustaining ecosystem.