From afcacfb02c59b2ce2c9a9eeb6ec38aa08588f6dd Mon Sep 17 00:00:00 2001 From: SiteRelEnby Date: Fri, 2 Feb 2024 18:06:03 -0600 Subject: Bugfix: Tactical mode has a dependency on momentary mode Use case 1: Updating a t85 light, where tactical mode is useful but takes some squeezing, and momentary is less useful Use case 2: Custom builds for people who don't like/want momentary mode --- ui/anduril/anduril.c | 4 ++-- ui/anduril/strobe-modes.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'ui') diff --git a/ui/anduril/anduril.c b/ui/anduril/anduril.c index 1cdb8d0..7557bf7 100644 --- a/ui/anduril/anduril.c +++ b/ui/anduril/anduril.c @@ -121,7 +121,7 @@ #include "anduril/lockout-mode.h" #endif -#ifdef USE_MOMENTARY_MODE +#if (defined(USE_MOMENTARY_MODE) || defined(USE_TACTICAL_MODE)) #include "anduril/momentary-mode.h" #endif @@ -189,7 +189,7 @@ #include "anduril/lockout-mode.c" #endif -#ifdef USE_MOMENTARY_MODE +#if (defined(USE_MOMENTARY_MODE) || defined(USE_TACTICAL_MODE)) #include "anduril/momentary-mode.c" #endif diff --git a/ui/anduril/strobe-modes.c b/ui/anduril/strobe-modes.c index ccc4aa0..38e4dca 100644 --- a/ui/anduril/strobe-modes.c +++ b/ui/anduril/strobe-modes.c @@ -13,7 +13,7 @@ uint8_t strobe_state(Event event, uint16_t arg) { // 'st' reduces ROM size slightly strobe_mode_te st = current_strobe_type; - #ifdef USE_MOMENTARY_MODE + #if defined(USE_MOMENTARY_MODE) || defined(USE_TACTICAL_MODE) momentary_mode = 1; // 0 = ramping, 1 = strobes #endif -- cgit v1.2.3 From cc16e398a990ab8a086095ef42a72c268b5fa474 Mon Sep 17 00:00:00 2001 From: SiteRelEnby Date: Wed, 14 Feb 2024 14:33:46 -0600 Subject: Bugfix: Prevent switching channel modes when in tactical mode Fixes issue https://github.com/ToyKeeper/anduril/issues/40 --- ui/anduril/tactical-mode.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'ui') diff --git a/ui/anduril/tactical-mode.c b/ui/anduril/tactical-mode.c index 5acd902..002f917 100644 --- a/ui/anduril/tactical-mode.c +++ b/ui/anduril/tactical-mode.c @@ -68,6 +68,11 @@ uint8_t tactical_state(Event event, uint16_t arg) { return lockout_state(event, arg); } + // handle 3C here to prevent changing channel modes unintentionally + if (event == EV_3clicks) { + return EVENT_HANDLED; + } + // 6 clicks: exit and turn off else if (event == EV_6clicks) { blink_once(); -- cgit v1.2.3 From a87812f436e08b14a7cede83e30306d779774872 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Mon, 25 Mar 2024 04:25:43 -0600 Subject: dammit, got alkaline detection half working and then my flashing adapter died (saving progress here so I can work on a different branch) --- ui/anduril/anduril.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'ui') diff --git a/ui/anduril/anduril.c b/ui/anduril/anduril.c index 1cdb8d0..f50f8d2 100644 --- a/ui/anduril/anduril.c +++ b/ui/anduril/anduril.c @@ -225,8 +225,16 @@ void setup() { // regular e-switch light, no hard clicky power button - // blink at power-on to let user know power is connected - blink_once(); + #ifdef USE_WEAK_BATTERY_PROTECTION + // try to measure the battery strength + // (must be done *before* factory reset, + // because reset tries to use full power, + // and a weak battery can't do that) + detect_weak_battery(); + #else + // blink at power-on to let user know power is connected + blink_once(); + #endif #ifdef USE_FACTORY_RESET if (button_is_pressed()) -- cgit v1.2.3 From 7b49797be1da97f54e9df3a1b0342ab20d7f02d5 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 27 Mar 2024 07:13:26 -0600 Subject: increased voltage precision from 0.025V to 0.02V (so 0 to 255 now goes from 0.00V to 5.10V) --- ui/anduril/aux-leds.c | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) (limited to 'ui') diff --git a/ui/anduril/aux-leds.c b/ui/anduril/aux-leds.c index fd184fc..7356666 100644 --- a/ui/anduril/aux-leds.c +++ b/ui/anduril/aux-leds.c @@ -58,27 +58,27 @@ void indicator_led_update(uint8_t mode, uint8_t tick) { uint8_t voltage_to_rgb() { static const uint8_t levels[] = { // voltage, color - 0, 0, // black + 0, 0, // black #ifdef DUAL_VOLTAGE_FLOOR // AA / NiMH voltages - 4* 9, 1, // R - 4*10, 2, // R+G - 4*11, 3, // G - 4*12, 4, // G+B - 4*13, 5, // B - 4*14, 6, // R + B - 4*16, 7, // R+G+B - 4*20, 0, // black + 9*dV, 1, // R + 10*dV, 2, // R+G + 11*dV, 3, // G + 12*dV, 4, // G+B + 13*dV, 5, // B + 14*dV, 6, // R + B + 16*dV, 7, // R+G+B + 20*dV, 0, // black #endif // li-ion voltages - 4*29, 1, // R - 4*33, 2, // R+G - 4*35, 3, // G - 4*37, 4, // G+B - 4*39, 5, // B - 4*41, 6, // R + B - 4*44, 7, // R+G+B // skip; looks too similar to G+B - 255, 7, // R+G+B + 29*dV, 1, // R + 33*dV, 2, // R+G + 35*dV, 3, // G + 37*dV, 4, // G+B + 39*dV, 5, // B + 41*dV, 6, // R + B + 44*dV, 7, // R+G+B // skip; looks too similar to G+B + 255, 7, // R+G+B }; uint8_t volts = voltage; //if (volts < VOLTAGE_LOW) return 0; @@ -151,11 +151,8 @@ void rgb_led_update(uint8_t mode, uint16_t arg) { else { // voltage // show actual voltage while asleep... if (go_to_standby) { - actual_color = voltage_to_rgb(); // choose a color based on battery voltage - //if (volts >= 38) actual_color = pgm_read_byte(colors + 4); - //else if (volts >= 33) actual_color = pgm_read_byte(colors + 2); - //else actual_color = pgm_read_byte(colors + 0); + actual_color = voltage_to_rgb(); } // ... but during preview, cycle colors quickly else { -- cgit v1.2.3 From 3cabd5acdddb7ace17b12fe1df9b6281f63b7905 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Thu, 28 Mar 2024 08:19:17 -0600 Subject: fixed Tactical Mode's strobes when Momentary Mode not enabled --- ui/anduril/anduril.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'ui') diff --git a/ui/anduril/anduril.c b/ui/anduril/anduril.c index 7557bf7..4378816 100644 --- a/ui/anduril/anduril.c +++ b/ui/anduril/anduril.c @@ -293,10 +293,12 @@ void loop() { #ifdef USE_STROBE_STATE else if ((state == strobe_state) - #ifdef USE_MOMENTARY_MODE + #if defined(USE_MOMENTARY_MODE) || defined(USE_TACTICAL_MODE) // also handle momentary strobes - || (( - (state == momentary_state) + || ((0 + #ifdef USE_MOMENTARY_MODE + || (state == momentary_state) + #endif #ifdef USE_TACTICAL_MODE || (state == tactical_state) #endif -- cgit v1.2.3 From cc228bd519d95a24a4ca17f491885f5539b6630b Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Fri, 29 Mar 2024 07:54:24 -0600 Subject: use smooth steps in lockout mode, if enabled Based on [SammysHP's patch](https://github.com/ToyKeeper/anduril/pull/18), but only for lockout mode, not tactical. --- ui/anduril/lockout-mode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ui') diff --git a/ui/anduril/lockout-mode.c b/ui/anduril/lockout-mode.c index 6f85ca9..c3f82ea 100644 --- a/ui/anduril/lockout-mode.c +++ b/ui/anduril/lockout-mode.c @@ -26,11 +26,11 @@ uint8_t lockout_state(Event event, uint16_t arg) { if (cfg.manual_memory) lvl = cfg.manual_memory; #endif } - set_level(lvl); + off_state_set_level(lvl); } // button was released else if ((event & (B_CLICK | B_PRESS)) == (B_CLICK)) { - set_level(0); + off_state_set_level(0); } #endif // ifdef USE_MOON_DURING_LOCKOUT_MODE -- cgit v1.2.3 From 4f7f90df760f1bd215ce1b2ec671d62b332690c6 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Sun, 4 Aug 2024 06:03:38 -0600 Subject: removed "Off -> 3H" strobe/mood mode access from Extended Simple UI fixes #85 The Simple UI is meant to be relatively child-safe, and the strobe modes are not. Users who want unsafe features enabled should use the full UI instead... and the strobe + mood modes should also have some safety features added, on drivers which have enough ROM to hold extra code. --- ui/anduril/off-mode.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'ui') diff --git a/ui/anduril/off-mode.c b/ui/anduril/off-mode.c index 36d771c..f699c89 100644 --- a/ui/anduril/off-mode.c +++ b/ui/anduril/off-mode.c @@ -264,19 +264,6 @@ uint8_t off_state(Event event, uint16_t arg) { #endif // ifndef USE_EXTENDED_SIMPLE_UI #endif // ifdef USE_SIMPLE_UI - // click, click, long-click: strobe mode - #ifdef USE_STROBE_STATE - else if (event == EV_click3_hold) { - set_state(strobe_state, 0); - return EVENT_HANDLED; - } - #elif defined(USE_BORING_STROBE_STATE) - else if (event == EV_click3_hold) { - set_state(boring_strobe_state, 0); - return EVENT_HANDLED; - } - #endif - #ifdef USE_INDICATOR_LED // 7 clicks: change indicator LED mode else if (event == EV_7clicks) { @@ -334,6 +321,19 @@ uint8_t off_state(Event event, uint16_t arg) { } #endif // ifdef USE_EXTENDED_SIMPLE_UI + // click, click, long-click: strobe mode + #ifdef USE_STROBE_STATE + else if (event == EV_click3_hold) { + set_state(strobe_state, 0); + return EVENT_HANDLED; + } + #elif defined(USE_BORING_STROBE_STATE) + else if (event == EV_click3_hold) { + set_state(boring_strobe_state, 0); + return EVENT_HANDLED; + } + #endif + // 10 clicks: enable simple UI else if (event == EV_10clicks) { blink_once(); -- cgit v1.2.3