aboutsummaryrefslogtreecommitdiff
path: root/spaghetti-monster
diff options
context:
space:
mode:
authorSelene ToyKeeper2020-08-05 20:51:36 -0600
committerSelene ToyKeeper2020-08-05 20:51:36 -0600
commit3c46926f5685e9c2b8dea39d176322905e2015b5 (patch)
treeeec837ad82624c7a2e08f98885687c7a023dd2fe /spaghetti-monster
parentreduced ROM 10 bytes by cleaning up blink_confirm() calls (diff)
downloadanduril-3c46926f5685e9c2b8dea39d176322905e2015b5.tar.gz
anduril-3c46926f5685e9c2b8dea39d176322905e2015b5.tar.bz2
anduril-3c46926f5685e9c2b8dea39d176322905e2015b5.zip
reduced rom 34 bytes by merging ramp-up code with ramp-down code
(also removed USE_REVERSING option)
Diffstat (limited to 'spaghetti-monster')
-rw-r--r--spaghetti-monster/anduril/config-default.h5
-rw-r--r--spaghetti-monster/anduril/ramp-mode.c84
2 files changed, 10 insertions, 79 deletions
diff --git a/spaghetti-monster/anduril/config-default.h b/spaghetti-monster/anduril/config-default.h
index 0957a29..21e345b 100644
--- a/spaghetti-monster/anduril/config-default.h
+++ b/spaghetti-monster/anduril/config-default.h
@@ -59,11 +59,6 @@
#define BLINK_AT_RAMP_CEIL
//#define BLINK_AT_STEPS // whenever a discrete ramp mode is passed in smooth mode
-// ramp down via regular button hold if a ramp-up ended <1s ago
-// ("hold, release, hold" ramps down instead of up)
-// TODO: remove this setting; nobody ever changes it)
-#define USE_REVERSING
-
// Include a simplified UI for non-enthusiasts?
#define USE_SIMPLE_UI
diff --git a/spaghetti-monster/anduril/ramp-mode.c b/spaghetti-monster/anduril/ramp-mode.c
index 23f2ad4..7ca63cf 100644
--- a/spaghetti-monster/anduril/ramp-mode.c
+++ b/spaghetti-monster/anduril/ramp-mode.c
@@ -27,9 +27,7 @@
#endif
uint8_t steady_state(Event event, uint16_t arg) {
- #ifdef USE_REVERSING
static int8_t ramp_direction = 1;
- #endif
#if (B_TIMING_OFF == B_RELEASE_T)
// if the user double clicks, we need to abort turning off,
// and this stores the level to return to
@@ -79,9 +77,7 @@ uint8_t steady_state(Event event, uint16_t arg) {
// use the requested level even if not memorized
arg = nearest_level(arg);
set_level_and_therm_target(arg);
- #ifdef USE_REVERSING
ramp_direction = 1;
- #endif
return MISCHIEF_MANAGED;
}
#if (B_TIMING_OFF == B_RELEASE_T)
@@ -123,13 +119,14 @@ uint8_t steady_state(Event event, uint16_t arg) {
#endif
return MISCHIEF_MANAGED;
}
- // hold: change brightness (brighter)
- else if (event == EV_click1_hold) {
+
+ // hold: change brightness (brighter, dimmer)
+ // click, hold: change brightness (dimmer)
+ else if ((event == EV_click1_hold) || (event == EV_click2_hold)) {
// ramp slower in discrete mode
if (ramp_style && (arg % HOLD_TIMEOUT != 0)) {
return MISCHIEF_MANAGED;
}
- #ifdef USE_REVERSING
// fix ramp direction on first frame if necessary
if (!arg) {
// make it ramp down instead, if already at max
@@ -137,6 +134,8 @@ uint8_t steady_state(Event event, uint16_t arg) {
// make it ramp up if already at min
// (off->hold->stepped_min->release causes this state)
else if (actual_level <= mode_min) { ramp_direction = 1; }
+ // click, hold should always go down if possible
+ else if (event == EV_click2_hold) { ramp_direction = -1; }
}
// if the button is stuck, err on the side of safety and ramp down
else if ((arg > TICKS_PER_SECOND * 5) && (actual_level >= mode_max)) {
@@ -145,15 +144,12 @@ uint8_t steady_state(Event event, uint16_t arg) {
#ifdef USE_LOCKOUT_MODE
// if the button is still stuck, lock the light
else if ((arg > TICKS_PER_SECOND * 10) && (actual_level <= mode_min)) {
- blip();
+ blink_once();
set_state(lockout_state, 0);
}
#endif
memorized_level = nearest_level((int16_t)actual_level \
+ (step_size * ramp_direction));
- #else
- memorized_level = nearest_level((int16_t)actual_level + step_size);
- #endif
#if defined(BLINK_AT_RAMP_CEIL) || defined(BLINK_AT_RAMP_MIDDLE)
// only blink once for each threshold
if ((memorized_level != actual_level) && (
@@ -167,7 +163,7 @@ uint8_t steady_state(Event event, uint16_t arg) {
#ifdef BLINK_AT_RAMP_CEIL
|| (memorized_level == mode_max)
#endif
- #if defined(USE_REVERSING) && defined(BLINK_AT_RAMP_FLOOR)
+ #ifdef BLINK_AT_RAMP_FLOOR
|| (memorized_level == mode_min)
#endif
)) {
@@ -194,73 +190,15 @@ uint8_t steady_state(Event event, uint16_t arg) {
#endif
return MISCHIEF_MANAGED;
}
- #if defined(USE_REVERSING) || defined(START_AT_MEMORIZED_LEVEL)
// reverse ramp direction on hold release
- else if (event == EV_click1_hold_release) {
- #ifdef USE_REVERSING
+ else if ((event == EV_click1_hold_release)
+ || (event == EV_click2_hold_release)) {
ramp_direction = -ramp_direction;
- #endif
#ifdef START_AT_MEMORIZED_LEVEL
save_config_wl();
#endif
return MISCHIEF_MANAGED;
}
- #endif
- // click, hold: change brightness (dimmer)
- else if (event == EV_click2_hold) {
- #ifdef USE_REVERSING
- ramp_direction = 1;
- #endif
- // ramp slower in discrete mode
- if (ramp_style && (arg % HOLD_TIMEOUT != 0)) {
- return MISCHIEF_MANAGED;
- }
- // TODO? make it ramp up instead, if already at min?
- memorized_level = nearest_level((int16_t)actual_level - step_size);
- #if defined(BLINK_AT_RAMP_FLOOR) || defined(BLINK_AT_RAMP_MIDDLE)
- // only blink once for each threshold
- if ((memorized_level != actual_level) && (
- 0 // for easier syntax below
- #ifdef BLINK_AT_RAMP_MIDDLE_1
- || (memorized_level == BLINK_AT_RAMP_MIDDLE_1)
- #endif
- #ifdef BLINK_AT_RAMP_MIDDLE_2
- || (memorized_level == BLINK_AT_RAMP_MIDDLE_2)
- #endif
- #ifdef BLINK_AT_RAMP_FLOOR
- || (memorized_level == mode_min)
- #endif
- )) {
- blip();
- }
- #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)
- )
- {
- blip();
- }
- #endif
- set_level_and_therm_target(memorized_level);
- #ifdef USE_SUNSET_TIMER
- timer_orig_level = actual_level;
- #endif
- return MISCHIEF_MANAGED;
- }
- #ifdef START_AT_MEMORIZED_LEVEL
- // click, release, hold, release: save new ramp level (if necessary)
- else if (event == EV_click2_hold_release) {
- save_config_wl();
- return MISCHIEF_MANAGED;
- }
- #endif
else if (event == EV_tick) {
#ifdef USE_SUNSET_TIMER
@@ -276,10 +214,8 @@ uint8_t steady_state(Event event, uint16_t arg) {
#endif
}
#endif
- #ifdef USE_REVERSING
// un-reverse after 1 second
if (arg == TICKS_PER_SECOND) ramp_direction = 1;
- #endif
#ifdef USE_SET_LEVEL_GRADUALLY
int16_t diff = gradual_target - actual_level;
static uint16_t ticks_since_adjust = 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.