From a12337d55e6e262d437fd834dd4f3011fd6cd6cf Mon Sep 17 00:00:00 2001 From: whowechina Date: Mon, 6 May 2024 20:31:24 +0800 Subject: [PATCH] Optimize lighting logic --- Production/Firmware/aic_pico.uf2 | Bin 133632 -> 133632 bytes firmware/src/light.c | 22 +++++++++++++--------- firmware/src/main.c | 9 +++++---- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Production/Firmware/aic_pico.uf2 b/Production/Firmware/aic_pico.uf2 index 952c1bbb6c8a9d52ba9e81ea8255dba1fef4f5a3..af9f3195780e8c478b68a11220a4b5165e2980ef 100644 GIT binary patch delta 17113 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 o2=!d*6urFYr)Fg8%>k delta 16728 zcmc(Hdwf$>_V3AnRz*e>opeB_Jj8-X@O|*rw4}}b?j~tZ=FWWP{_g$b=JQ$X zeb!m;z4kt9?{iAkMt#*reVtDe-Ef%*%H=mYG`G-71^os>r0pq0@@T0*h*sjz*%#2~ zfS+qZOp#7`t(8n5ME?V62Fk;EgaRTxe-jbrMHAuJSR(x47DA%Ql(JoKIHn%>k_f#2 zNJ^BZA=IB{e&Lzp=<9$#x8T<(r$_t7=h`JS#xamc5K79}#OPFAIj+js(rB^r(GDv0 zP;4Dhb);T!8%xDzB2ndbUyQP{gD5!x-j|3$ndzgzKYg`LA|@-*C>gE9#PQ30B>jpf zMw!|{($6=>Dj&C!^d25AqtF+teBMfw_`q2&=N;o~@;2DYM-oYKTg^vpsgtNQGIlX> zPf1#8?4cZED5X} z58T<&)(ErGhao&xoi)o!B*$k&$adnNGJwbZP@M*T46qL@O>*`o^eMX8?2IPs^80&; zvaQ2JV$2eW85yTEvoH01?Y$fO*f;0LHEHTR^|PFu`Znjf{PT_G70D~MXn0tY>XKavUG|&@Rxbsd0%;j&xuesfJoN--m=M0zu>`OhFEc`&;6-wg00F; zmA$Q;`C$Y;zLE0b$d6XaFi^r(K9tGrBz<%vAAqB6aqxe$%~wyA-&>7#lD65_!_tG) z+UTHulc=(u-5)!ovZA#*|GP7SWfUPM3c2OJ_q{{Olh#=kG-qAGEY}a-Kub#C1H>o= zrllZ0S?-7H^vdqGXoa*9rQ_mFkEv zJ&FjKFx!RE+{sqQ^&i?8u#h`#8;j^G8s+8yNsnrLviQlOD8=O0Y@wS;twzxYVib+< zarSOp|I*>UbW&{7DBlFKNxp5DHJz~AsEL?0iZ8(P`uRYCZMO3}>i}}CH9J49kzPYQ zKQ@=+&c?t4MOtM+Kx2v`>7;f-pe5ubAJSf8<@CUP@MExlx&6M0n{D^mw*W9W;UPs3 zg|^Ni^@H6bH`{Fk7n2dLvoXqgU@|bjWjD(`8#qcRypS*Qmk^!*AH1$UKFRS z!mRA?F_U@rf{zN`kNPO;{rDP*Bvr*KXId>K6`G8to~Vo^9-2WKtD0lX#FUPiF$;

C<>&Tmh=j@fly3ylU$?YkU=bZ1tvu#? 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 16) & 0xff; unsigned g = (color >> 8) & 0xff; unsigned b = color & 0xff; - r = r * curr_level / 255; - g = g * curr_level / 255; - b = b * curr_level / 255; + r = r * level / 255; + g = g * level / 255; + b = b * level / 255; return r << 16 | g << 8 | b; } +static uint8_t curr_level = 0; +static inline uint32_t apply_level(uint32_t color) +{ + return apply_level_by(color, curr_level); +} + /* 6 segment regular hsv color wheel, better color cycle * https://www.arnevogel.com/rgb-rainbow/ * https://www.instructables.com/How-to-Make-Proper-Rainbow-and-Random-Colors-With-/ @@ -197,7 +201,7 @@ void light_set_color(unsigned index, uint32_t color) void light_set_color_all(uint32_t color) { for (int i = 0; i < RGB_NUM; i++) { - rgb_buf[i] = apply_level(color); + rgb_buf[i] = apply_level_by(color, aic_cfg->light.max); } } @@ -243,6 +247,7 @@ void light_init() } curr_level = aic_cfg->light.min; + generate_color_wheel(); } static bool rainbow = true; @@ -254,9 +259,8 @@ void light_set_rainbow(bool enable) void light_update() { if (rainbow && (time_us_64() > last_hid + 1000000)) { - generate_color_wheel(); rainbow_update(); - rainbow_fade(); } + rainbow_fade(); drive_led(); } diff --git a/firmware/src/main.c b/firmware/src/main.c index 45f2d23..775ee9a 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -51,10 +51,6 @@ void report_hid_cardio() uint64_t now = time_us_64(); - if (memcmp(hid_cardio.current, "\0\0\0\0\0\0\0\0\0", 9) != 0) { - light_stimulate(); - } - if ((memcmp(hid_cardio.current, hid_cardio.reported, 9) != 0) && (now - hid_cardio.report_time > 1000000)) { @@ -106,8 +102,12 @@ static void light_effect() light_set_rainbow(false); light_set_color_all(bana_led_color()); } else { + if (memcmp(hid_cardio.current, "\0\0\0\0\0\0\0\0\0", 9) != 0) { + light_stimulate(); + } light_set_rainbow(true); } + light_update(); } @@ -160,6 +160,7 @@ static void update_cardio(nfc_card_t *card) static void cardio_run() { if (aime_is_active() || bana_is_active()) { + memset(hid_cardio.current, 0, 9); return; }