diff options
| author | Selene ToyKeeper | 2018-09-29 17:51:45 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2018-09-29 17:51:45 -0600 |
| commit | a39a879bf43efb3c90dc6f9d7e86c02b2516400f (patch) | |
| tree | 845bc3f523fe8bcabfd43687fd047eaf1d1241de /spaghetti-monster/rampingios/rampingiosv3.c | |
| parent | Calibrated ROT66-219b build better. (diff) | |
| parent | Applied recent Anduril updates to RampingIOS V3: (diff) | |
| download | anduril-a39a879bf43efb3c90dc6f9d7e86c02b2516400f.tar.gz anduril-a39a879bf43efb3c90dc6f9d7e86c02b2516400f.tar.bz2 anduril-a39a879bf43efb3c90dc6f9d7e86c02b2516400f.zip | |
merged updates from fsm branch
Diffstat (limited to 'spaghetti-monster/rampingios/rampingiosv3.c')
| -rw-r--r-- | spaghetti-monster/rampingios/rampingiosv3.c | 61 |
1 files changed, 45 insertions, 16 deletions
diff --git a/spaghetti-monster/rampingios/rampingiosv3.c b/spaghetti-monster/rampingios/rampingiosv3.c index 8dbd08f..5c8f7ea 100644 --- a/spaghetti-monster/rampingios/rampingiosv3.c +++ b/spaghetti-monster/rampingios/rampingiosv3.c @@ -19,13 +19,17 @@ /********* User-configurable options *********/ // Physical driver type (uncomment one of the following or define it at the gcc command line) +//#define FSM_BLF_GT_DRIVER +//#define FSM_BLF_GT_MINI_DRIVER +//#define FSM_BLF_Q8_DRIVER +//#define FSM_EMISAR_D1_DRIVER +//#define FSM_EMISAR_D1S_DRIVER //#define FSM_EMISAR_D4_DRIVER +//#define FSM_EMISAR_D4_219C_DRIVER //#define FSM_EMISAR_D4S_DRIVER -//#define FSM_EMISAR_D4S_219c_DRIVER -//#define FSM_BLF_Q8_DRIVER +//#define FSM_EMISAR_D4S_219C_DRIVER +//#define FSM_FF_ROT66_DRIVER //#define FSM_FW3A_DRIVER -//#define FSM_BLF_GT_DRIVER -//#define FSM_BLF_GT_MINI_DRIVER #define USE_LVP // FIXME: won't build when this option is turned off @@ -33,6 +37,10 @@ #define USE_THERMAL_REGULATION #define DEFAULT_THERM_CEIL 45 // try not to get hotter than this +// short blip when crossing from "click" to "hold" from off +// (helps the user hit moon mode exactly, instead of holding too long +// or too short) +#define MOON_TIMING_HINT // short blips while ramping #define BLINK_AT_CHANNEL_BOUNDARIES //#define BLINK_AT_RAMP_FLOOR @@ -64,15 +72,21 @@ #elif defined(FSM_EMISAR_D1S_DRIVER) #include "cfg-emisar-d1s.h" +#elif defined(FSM_EMISAR_D4_219C_DRIVER) +#include "cfg-emisar-d4-219c.h" + #elif defined(FSM_EMISAR_D4_DRIVER) #include "cfg-emisar-d4.h" -#elif defined(FSM_EMISAR_D4S_219c_DRIVER) +#elif defined(FSM_EMISAR_D4S_219C_DRIVER) #include "cfg-emisar-d4s-219c.h" #elif defined(FSM_EMISAR_D4S_DRIVER) #include "cfg-emisar-d4s.h" +#elif defined(FSM_FF_ROT66_DRIVER) +#include "cfg-ff-rot66.h" + #elif defined(FSM_FW3A_DRIVER) #include "cfg-fw3a.h" @@ -203,15 +217,19 @@ volatile uint8_t ramp_discrete_steps = RAMP_DISCRETE_STEPS; uint8_t ramp_discrete_step_size; // don't set this #ifdef USE_INDICATOR_LED -// bits 2-3 control lockout mode -// bits 0-1 control "off" mode -// modes are: 0=off, 1=low, 2=high, 3=blinking (if TICK_DURING_STANDBY enabled) -#ifdef USE_INDICATOR_LED_WHILE_RAMPING -//uint8_t indicator_led_mode = (1<<2) + 2; -uint8_t indicator_led_mode = (2<<2) + 1; -#else -uint8_t indicator_led_mode = (3<<2) + 1; -#endif + // bits 2-3 control lockout mode + // bits 0-1 control "off" mode + // modes are: 0=off, 1=low, 2=high, 3=blinking (if TICK_DURING_STANDBY enabled) + #ifdef INDICATOR_LED_DEFAULT_MODE + uint8_t indicator_led_mode = INDICATOR_LED_DEFAULT_MODE; + #else + #ifdef USE_INDICATOR_LED_WHILE_RAMPING + //uint8_t indicator_led_mode = (1<<2) + 2; + uint8_t indicator_led_mode = (2<<2) + 1; + #else + uint8_t indicator_led_mode = (3<<2) + 1; + #endif + #endif #endif // calculate the nearest ramp level which would be valid at the moment @@ -265,9 +283,19 @@ uint8_t off_state(EventPtr event, uint16_t arg) { } // hold: go to lowest level else if (event == EV_click1_hold) { + #ifdef MOON_TIMING_HINT + if (arg == 0) { + // let the user know they can let go now to stay at moon + uint8_t temp = actual_level; + set_level(0); + delay_4ms(2); + set_level(temp); + } else + #endif // don't start ramping immediately; // give the user time to release at moon level - if (arg >= HOLD_TIMEOUT) { + //if (arg >= HOLD_TIMEOUT) { // smaller + if (arg >= (!ramp_style) * HOLD_TIMEOUT) { // more consistent set_state(steady_state, 1); } return MISCHIEF_MANAGED; @@ -400,7 +428,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { // 3 clicks: toggle smooth vs discrete ramping else if (event == EV_3clicks) { ramp_style = !ramp_style; - memorized_level = nearest_level(memorized_level); + memorized_level = nearest_level(actual_level); #ifdef USE_THERMAL_REGULATION target_level = memorized_level; #ifdef USE_SET_LEVEL_GRADUALLY @@ -605,6 +633,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { #else set_level(THERM_FASTER_LEVEL); #endif + target_level = THERM_FASTER_LEVEL; } else #endif if (actual_level > MIN_THERM_STEPDOWN) { |
