From 4b8fef64d036336e329b8b7871a42440cdc38766 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Sat, 26 Aug 2017 03:47:44 -0600 Subject: Made DarkHorse always start at low when holding the button, like a real ZebraLight does. (previously ramped up one mode instead of resetting to low each time) --- spaghetti-monster/darkhorse.c | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) (limited to 'spaghetti-monster') diff --git a/spaghetti-monster/darkhorse.c b/spaghetti-monster/darkhorse.c index 03cd5e7..1244864 100644 --- a/spaghetti-monster/darkhorse.c +++ b/spaghetti-monster/darkhorse.c @@ -168,6 +168,22 @@ uint8_t any_mode_state(EventPtr event, uint16_t arg, uint8_t *primary, uint8_t * set_state(off_state, 0); return MISCHIEF_MANAGED; } + // hold: change brightness (low, med, hi, always starting at low) + else if (event == EV_click1_hold) { + uint8_t which = arg % (HOLD_TIMEOUT * 3) / HOLD_TIMEOUT; + switch(which) { + case 0: + set_state(low_mode_state, 0); + break; + case 1: + set_state(med_mode_state, 0); + break; + case 2: + set_state(hi_mode_state, 0); + break; + } + return MISCHIEF_MANAGED; + } // 2 clicks: toggle primary/secondary level else if (event == EV_2clicks) { *primary ^= 1; @@ -210,36 +226,15 @@ uint8_t any_mode_state(EventPtr event, uint16_t arg, uint8_t *primary, uint8_t * } uint8_t low_mode_state(EventPtr event, uint16_t arg) { - // hold: change brightness (brighter) - if (event == EV_click1_hold) { - if (arg % HOLD_TIMEOUT == 0) { - set_state(med_mode_state, 0); - } - return MISCHIEF_MANAGED; - } - else return any_mode_state(event, arg, &L1, &L2, low_modes); + return any_mode_state(event, arg, &L1, &L2, low_modes); } uint8_t med_mode_state(EventPtr event, uint16_t arg) { - // hold: change brightness (brighter) - if (event == EV_click1_hold) { - if (arg % HOLD_TIMEOUT == 0) { - set_state(hi_mode_state, 0); - } - return MISCHIEF_MANAGED; - } - else return any_mode_state(event, arg, &M1, &M2, med_modes); + return any_mode_state(event, arg, &M1, &M2, med_modes); } uint8_t hi_mode_state(EventPtr event, uint16_t arg) { - // hold: change brightness (brighter) - if (event == EV_click1_hold) { - if (arg % HOLD_TIMEOUT == 0) { - set_state(low_mode_state, 0); - } - return MISCHIEF_MANAGED; - } - else return any_mode_state(event, arg, &H1, &H2, hi_modes); + return any_mode_state(event, arg, &H1, &H2, hi_modes); } -- cgit v1.2.3