From e37c6e05d8c3d7441844e5d6b14c33a3e88f399a Mon Sep 17 00:00:00 2001 From: whowe Date: Sun, 30 Apr 2023 12:38:36 +0800 Subject: [PATCH] TT led as key color setting indicator --- Production/Firmware/iidx_pico.uf2 | Bin 86016 -> 104448 bytes firmware/src/main.c | 9 +++ firmware/src/rgb.c | 15 ++--- firmware/src/setup.c | 96 +++++++++++++++++------------- firmware/src/usb_descriptors.h | 6 +- 5 files changed, 72 insertions(+), 54 deletions(-) diff --git a/Production/Firmware/iidx_pico.uf2 b/Production/Firmware/iidx_pico.uf2 index 1464c0240f7292b4ad6ad87ea28cd5830744fc01..9587b7d6ff770cc7e849bbe8b811b874e693b6dc 100644 GIT binary patch literal 104448 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 Pkoe9!q7JKDivRxsIm2!6 literal 86016 zcmd?S33wD$)<1lzm-L#XlK|-@gkAz<1404_1f|jyDoIy>uqlwBoq*VaN&`BR8Jw{N zM%iYDq*0S}a6!jGab7VJ$Aye>85J0{I)RylxHJlBmvN>?XUv}d&aLW%_Kn~B{-6Kz zJfT$otIqG7bI(2Z+*@ndT=h*WHarSuAe#;-;Rwg^aAWx3WoXXjEatV& zI+w(nbTr$XZ{PRbp^bm@?N4p~7B?^{{;cA7e3WhR~c| z!(9|PGwU}S@j4r?$)6lc&g!KsN_(H5)MdgNz_QM1EHM>RLS0|uU5^WOB=(XLlS(E; za;Vdg4m=bk7AKV`oznL_-zoPgi=@rzt=Bqku>W!>oMz9g>gL0rzWsXN_Oi!8cQ@{H zB%nL|q%jC)3-VITd-o$R>58TlgA3AU`D33Nhp>;n(ir@a76g1r6#j94feZ-`p~T+4 zAj+l#%n+d7sId?F4JG@EMt1nqP>?!9z1d(NXm=M8y0!wC-&273-rr-LATyI)IM?Ah z*>Q6hX^Q2c+FmI7=XY{XYm>VOAR>c2xz{rv%roYLZmA4(lNW&QrW*lbU}f2f7oDqI zkAjYzKae7oR7cKNTaO*xi|2Ao|K!$xyU6eLHn*~}VmYU4-eZ^YG7hqUuPf5Ekow6^ zo+GAMQKB*))SZbxqt`W;=%UM!{PDVt!CxxkFU1!gk^g8q>6#U#wra>y`NKUI!g8dg zgqIbg&U~G++1$F8YL!S&a~)!U6o)LNWQklT5$^d*Sl80Z5?bDiySTnkm~mEKIFqp*ePW+%jc=3Ozqa&84u+jKMs7f<8YL`hG|TX{yUj z5c)&^X*a`OW(M6^_AmVqdU2pTcrVsN>cXc8g?p*_typfTR|e8zS*SBCu}JYz>xx?0 zHFo5~W>x55pEC5&0EC|Jr9wN0sn8$75Rwj1q4A16d9N|}qnr`>mto!r{?i8`^eNH} zLLc?Y@&Bb>%9;e!q97wZX$|;4v$URd*y`ArkPZ=e z7Jrip-9H4X`S(A&hG*p1uy8YsYs_hLM zj%{CR^;KBm^X*ETGPJ$#LJ-VTJ<3oS-XZs=ox{|xrjgF zJc_?ay_J34!B+Mj#IO}*>Im+KaVIhcW_OXhS#~@HJ-ev>0gso%s+$XFL{}X;_V8Iq>hO~MXronUvTh1ESFl_5vb?hp3 z@=es7bdZMf`s5aJ>_YzIZO_uCn1(9K0#=gtWp8Zu=l(^f53}{`G4=%8i+VX}%4MvBu{xKZAT-U%Te5-z+6`S4dKCCIPSI2rg@-e!tvWYf4Vfm?-?gW^rgOiH5BO=4FyvsnxIsCN(nzu7b2wP;KH-=@{ zpoA@MMizQ)SPnERo;MGpRWnP&Q**E#$=Sr*$^O)IbbeCUKz*mkJbMQ5r6C*jmrQ3MC*f5wEk5Tt?&E4q_qao%_#O*Ld|kWcVy2k zkw{%Bl2tAZTAQ+*36;OHfA6<(Q(Q&1fr>^}l9kWfZ9^511~W9g$C_HQQo_0Ppre!Q z{eEhWvhq3m_gxGrF~h)bWT|N$ODerJ70iw7gyo42tQ}yc1anNrt|lK0u1$;l7A5@F zKR@zVm1)-${z?&lWfcC(A5wLZvJ$et_lH_K;)zl>myvb=Er~K0>e^5<%l?&J&bBto z)N<`xO_!VM*xe_;X@cxDUJqF)o!<_fYgz|q^d%6s#lt#ds_8bSlu1*knC@ckU>2)$ z6F)U&S!`;Wt-)477P>gJjcIMVK`l$q?MUG~U|Rban=YFv$zjqN$;p(6#t*e{tX?K( z!nXNPhdKYk7F{n{#mX7IES>oZuV%<5V{SS$GG^v8axIz6q{BQ}4%0=-%2r`YI-_UK z3uX0qp2K_)%(>R&UnSzNio!pJ*yzp}&gk-jPcL`)pk42Ckseely9qJ(q$3l^iJdJ2 zNoaGw$+60H&_1(cCbk3yFgPr9i9NwxsWjkmh5HHNSmVAV9Q|&KilirOuN00ewm%^p zYqnn!j{fZywUED~QvDR3*|2Q6eZ>y%4qZ!#RN-*z59#n&_nZll&JaogL zBxLOeo6Od~WGl;OfcZS`k3T>m zCC2YIru|1E0=}{uUwOp-4pi*)$HD};K%Ne;m#16(7&oN-+d*ui5qW

dLZIBe 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 4; if (setup_run(buttons, angle)) { rgb_force_display(setup_led_button, setup_led_tt); diff --git a/firmware/src/rgb.c b/firmware/src/rgb.c index 3b42590..695dbe7 100644 --- a/firmware/src/rgb.c +++ b/firmware/src/rgb.c @@ -24,8 +24,7 @@ #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) static const uint8_t button_rgb_map[BUTTON_RGB_NUM] = BUTTON_RGB_MAP; -static const uint8_t level_val[] = {0, 32, 64, 96, 128, 160, 192, 224, 255}; -uint32_t rgb_level = 0; +uint32_t rgb_max_level = 255; static void trap() {} static tt_effect_t effects[10] = { {trap, trap, trap, trap, 0} }; @@ -42,9 +41,9 @@ static size_t current_effect = 0; static inline uint32_t _rgb32(uint32_t c1, uint32_t c2, uint32_t c3, bool gamma_fix) { - c1 = c1 * level_val[rgb_level] / 255; - c2 = c2 * level_val[rgb_level] / 255; - c3 = c3 * level_val[rgb_level] / 255; + c1 = c1 * rgb_max_level / 255; + c2 = c2 * rgb_max_level / 255; + c3 = c3 * rgb_max_level / 255; if (gamma_fix) { c1 = ((c1 + 1) * (c1 + 1) - 1) >> 8; @@ -80,10 +79,10 @@ uint8_t rgb_button_num() void rgb_set_level(uint8_t level) { - if (rgb_level == level) { + if (rgb_max_level == level) { return; } - rgb_level = level; + rgb_max_level = level; effects[current_effect].set_level(level); } @@ -257,8 +256,6 @@ void rgb_init() ws2812_program_init(pio0, 0, pio0_offset, BUTTON_RGB_PIN, 800000, false); /* We don't start the tt LED program yet */ - - rgb_set_level(8); set_effect(1); } diff --git a/firmware/src/setup.c b/firmware/src/setup.c index c32b79e..b1edc4c 100644 --- a/firmware/src/setup.c +++ b/firmware/src/setup.c @@ -24,8 +24,8 @@ static uint64_t setup_tick_ms = 0; #define TVAR(line) CONCAT(a, line) #define RUN_EVERY_N_MS(a, ms) { static uint64_t TVAR(__LINE__) = 0; \ if (setup_tick_ms - TVAR(__LINE__) >= ms) { a; TVAR(__LINE__) = setup_tick_ms; } } -static uint32_t blink_fast = 0xffffff; -static uint32_t blink_slow = 0xffffff; +static uint32_t blink_fast = 0xffffffff; +static uint32_t blink_slow = 0xffffffff; uint32_t setup_led_tt[128]; uint32_t setup_led_button[BUTTON_RGB_NUM]; @@ -59,10 +59,10 @@ static struct { #define KEY_5 0x0010 #define KEY_6 0x0020 #define KEY_7 0x0040 -#define E1 0x0080 -#define E2 0x0100 -#define E3 0x0200 -#define E4 0x0400 +#define E1 0x0080 +#define E2 0x0100 +#define E3 0x0200 +#define E4 0x0400 #define AUX_NO 0x0800 #define AUX_YES 0x1000 @@ -89,6 +89,12 @@ static struct { #define YELLOW button_rgb32(99, 99, 0, false) #define SILVER button_rgb32(60, 60, 60, false) +#define TT_RED tt_rgb32(99, 0, 0, false) +#define TT_GREEN tt_rgb32(0, 99, 0, false) +#define TT_CYAN tt_rgb32(0, 40, 99, false) +#define TT_YELLOW tt_rgb32(99, 99, 0, false) +#define TT_SILVER tt_rgb32(60, 60, 60, false) + typedef void (*mode_func)(); static void join_mode(setup_mode_t new_mode); @@ -112,10 +118,6 @@ static void none_loop() static bool escaped = false; static uint64_t escape_time = 0; - if (PRESSED_ALL(AUX_NO | AUX_YES | KEY_1 | KEY_7)) { - reset_usb_boot(0, 2); // usb boot to flash - } - if (PRESSED_ALL(AUX_YES | AUX_NO)) { if (!escaped) { escaped = true; @@ -273,7 +275,7 @@ static void tt_loop() static struct { uint8_t channel; /* 0:E1(Start), 1:E2(Effect), 2:E3(VEFX), 3:E4 */ - uint8_t *value; + volatile uint8_t *value; int16_t start_angle; } analog_ctx; @@ -342,40 +344,33 @@ static uint32_t scale_color(uint32_t color, uint8_t value, uint8_t factor) static void analog_loop() { - setup_led_button[LED_E1] = RED; - setup_led_button[LED_E2] = GREEN; - setup_led_button[LED_E3] = CYAN; - setup_led_button[LED_E4] = YELLOW; + uint32_t colors[4] = { RED, GREEN, CYAN, YELLOW}; + uint32_t tt_colors[4] = { TT_RED, TT_GREEN, TT_CYAN, TT_YELLOW }; - uint32_t color; - if (analog_ctx.channel == 1) { - color = GREEN; - setup_led_button[LED_E2] &= blink_fast; - } else if (analog_ctx.channel == 2) { - color = CYAN; - setup_led_button[LED_E3] &= blink_fast; - } else if (analog_ctx.channel == 3) { - color = YELLOW; - setup_led_button[LED_E4] &= blink_fast; - } else { - color = RED; - setup_led_button[LED_E1] &= blink_fast; + for (int i = 0; i < 4; i++) { + uint32_t color = colors[i]; + if (analog_ctx.channel == i) { + color &= blink_fast; + } + setup_led_button[LED_E1 + i] = color; } int tt_split = (int)*analog_ctx.value * iidx_cfg->tt_led.num / 255; for (int i = 1; i < iidx_cfg->tt_led.num - 1; i++) { - setup_led_tt[i] = i < tt_split ? color : 0; + setup_led_tt[i] = i < tt_split ? tt_colors[analog_ctx.channel] : 0; } int button_split = *analog_ctx.value / 37; int scale = *analog_ctx.value % 37; for (int i = 0; i < 7; i++) { + uint32_t color = colors[analog_ctx.channel]; if (i == button_split) { - setup_led_button[LED_KEY_1 + i] = scale_color(color, scale, 37); - } else { - setup_led_button[LED_KEY_1 + i] = i < button_split ? color : 0; + color = scale_color(color, scale, 37); + } else if (i > button_split) { + color = 0; } + setup_led_button[LED_KEY_1 + i] = color; } } @@ -427,33 +422,50 @@ static void key_rotate() { int16_t new_value = *key_ctx.value; new_value += input.rotate; - if (new_value < 0) { - new_value = 0; - } else if (new_value > 255) { - new_value = 255; + if (key_ctx.phase > 0) { + if (new_value < 0) { + new_value = 0; + } else if (new_value > 255) { + new_value = 255; + } } - *key_ctx.value = new_value; + *key_ctx.value = (uint8_t)new_value; } static void key_loop() { for (int i = 0; i < 11; i ++) { - if (key_ctx.keys & (1 << i)) { + if (key_ctx.keys == 0) { setup_led_button[i] = rgb32_from_hsv(key_ctx.hsv) & blink_slow; + } else if (key_ctx.keys & (1 << i)) { + setup_led_button[i] = rgb32_from_hsv(key_ctx.hsv); } else { - setup_led_button[i] = rgb32_from_hsv(key_ctx.leds[i]); + setup_led_button[i] = 0; } } + + for (unsigned i = 0; i < iidx_cfg->tt_led.num; i++) { + hsv_t hsv = key_ctx.hsv; + unsigned pos = iidx_cfg->tt_led.mode ? i : iidx_cfg->tt_led.num - i - 1; + if (key_ctx.phase == 0) { + hsv.h += pos * 255 / iidx_cfg->tt_led.num; + } else if (key_ctx.phase == 1) { + hsv.s += pos * 255 / iidx_cfg->tt_led.num; + } else { + hsv.v += pos * 255 / iidx_cfg->tt_led.num; + } + setup_led_tt[i] = rgb32_from_hsv(hsv); + } } static void key_enter() { key_ctx = (typeof(key_ctx)) { .phase = 0, - .hsv = { .h = 200, .s = 255, .v = 80 }, + .hsv = { .h = 200, .s = 255, .v = 128 }, .value = &key_ctx.hsv.h, .start_angle = input.angle, - .keys = 0x7f, + .keys = 0, .leds = iidx_cfg->key_on, }; @@ -527,7 +539,7 @@ bool setup_run(uint16_t keys, uint16_t angle) mode_defs[current_mode].key_change(); } - RUN_EVERY_N_MS(blink_fast = ~blink_fast, 50); + RUN_EVERY_N_MS(blink_fast = ~blink_fast, 100); RUN_EVERY_N_MS(blink_slow = ~blink_slow, 500); mode_defs[current_mode].loop(); diff --git a/firmware/src/usb_descriptors.h b/firmware/src/usb_descriptors.h index 7b95188..a6efd8d 100644 --- a/firmware/src/usb_descriptors.h +++ b/firmware/src/usb_descriptors.h @@ -26,10 +26,10 @@ enum { HID_USAGE(HID_USAGE_DESKTOP_JOYSTICK), \ HID_COLLECTION(HID_COLLECTION_APPLICATION), \ __VA_ARGS__ HID_USAGE_PAGE(HID_USAGE_PAGE_BUTTON), HID_USAGE_MIN(1), \ - HID_USAGE_MAX(11), \ - HID_LOGICAL_MIN(0), HID_LOGICAL_MAX(1), HID_REPORT_COUNT(11), \ + HID_USAGE_MAX(13), \ + HID_LOGICAL_MIN(0), HID_LOGICAL_MAX(1), HID_REPORT_COUNT(13), \ HID_REPORT_SIZE(1), HID_INPUT(HID_DATA | HID_VARIABLE | HID_ABSOLUTE), \ - HID_REPORT_COUNT(1), HID_REPORT_SIZE(16 - 11), /*Padding*/ \ + HID_REPORT_COUNT(1), HID_REPORT_SIZE(16 - 13), /*Padding*/ \ HID_INPUT(HID_CONSTANT | HID_VARIABLE | HID_ABSOLUTE), \ HID_USAGE_PAGE(HID_USAGE_PAGE_DESKTOP), HID_LOGICAL_MIN(0x00), \ HID_LOGICAL_MAX_N(0x00ff, 2), /* Below is Joystick/analog */ \