aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spaghetti-monster/anduril/anduril.c40
1 files changed, 35 insertions, 5 deletions
diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c
index 4915b39..40809af 100644
--- a/spaghetti-monster/anduril/anduril.c
+++ b/spaghetti-monster/anduril/anduril.c
@@ -359,6 +359,12 @@ uint8_t steady_state(EventPtr event, uint16_t arg) {
else if (event == EV_3clicks) {
ramp_style ^= 1;
memorized_level = nearest_level(memorized_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();
@@ -482,7 +488,15 @@ uint8_t steady_state(EventPtr event, uint16_t arg) {
+ 8 - log2(actual_level);
}
*/
- if (!(arg & 7)) gradual_tick();
+ uint8_t diff;
+ if (target_level > actual_level) diff = target_level - actual_level;
+ else diff = actual_level - target_level;
+ if (! diff) diff = 1;
+ uint8_t ticks_per_adjust = (TICKS_PER_SECOND*2) / diff;
+ if (!(arg % ticks_per_adjust)) gradual_tick();
+
+ // adjust every N frames
+ //if (!(arg & 7)) gradual_tick();
//if (!(arg & 3)) gradual_tick();
//gradual_tick();
#endif
@@ -766,7 +780,13 @@ uint8_t lockout_state(EventPtr event, uint16_t arg) {
if ((last == A_PRESS) || (last == A_HOLD)) {
// detect moon level and activate it
uint8_t lvl = ramp_smooth_floor;
+ #ifdef LOCKOUT_MOON_LOWEST
+ // Use lowest moon configured
if (ramp_discrete_floor < lvl) lvl = ramp_discrete_floor;
+ #else
+ // Use moon from current ramp
+ if (ramp_style) lvl = ramp_discrete_floor;
+ #endif
set_level(lvl);
}
else if ((last == A_RELEASE) || (last == A_RELEASE_TIMEOUT)) {
@@ -1226,14 +1246,24 @@ void save_config_wl() {
#endif
void low_voltage() {
+ StatePtr state = current_state;
+
// "step down" from strobe to something low
- if (current_state == strobe_state) {
+ if (state == strobe_state) {
set_state(steady_state, RAMP_SIZE/6);
}
- // in normal mode, step down by half or turn off
- else if (current_state == steady_state) {
+ // in normal or muggle mode, step down by half or turn off
+ else if ((state == steady_state) || (state == muggle_state)) {
if (actual_level > 1) {
- set_level((actual_level >> 1) + (actual_level >> 2));
+ 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
}
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.