From 777fffbc3b3703ca52cfa7da5f85e7ca85263197 Mon Sep 17 00:00:00 2001 From: whowechina Date: Tue, 26 Aug 2025 09:41:22 +0800 Subject: [PATCH] Fix and clean-up lights --- Production/Firmware/diva_pico.uf2 | Bin 112640 -> 111616 bytes firmware/src/board_defs.h | 2 +- firmware/src/commands.c | 34 ++++++++++-------------------- firmware/src/config.c | 16 +------------- firmware/src/config.h | 15 ++++--------- firmware/src/main.c | 8 +++---- firmware/src/rgb.c | 6 +++--- 7 files changed, 24 insertions(+), 57 deletions(-) diff --git a/Production/Firmware/diva_pico.uf2 b/Production/Firmware/diva_pico.uf2 index 1a3d99134d2904da18d4fa060718bc9717a12e30..f506af08c8175ab40f2029a15cb1cfeede609f34 100644 GIT binary patch delta 12281 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 UfRS+6eh7cs-w#^*(+7h77mE3ussI20 delta 12674 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 JTKQJc{{X(RV6p%J diff --git a/firmware/src/board_defs.h b/firmware/src/board_defs.h index 1f3b4f2..5d9a1fd 100644 --- a/firmware/src/board_defs.h +++ b/firmware/src/board_defs.h @@ -13,7 +13,7 @@ #define RGB_PIN 2 #define RGB_ORDER GRB // or RGB -#define RGB_BUTTON_MAP { 2, 0, 1, 3, 4 } +#define RGB_BUTTON_MAP { 3, 2, 1, 0, 4 } #define BUTTON_DEF { 12, 11, 10, 9, 13, 1, 0} // Main * 4, Start, Aux * 2 #define NKRO_KEYMAP "awsdz2swx3dec4frv5gtb6hyn7jum8ki90olp,." diff --git a/firmware/src/commands.c b/firmware/src/commands.c index 5971953..e2f6495 100644 --- a/firmware/src/commands.c +++ b/firmware/src/commands.c @@ -17,18 +17,10 @@ #define SENSE_LIMIT_MAX 9 #define SENSE_LIMIT_MIN -9 -static void disp_colors() +static void disp_light() { - printf("[Colors]\n"); - printf(" Key on: %06lx, off: %06lx\n", - diva_cfg->colors.key_on, diva_cfg->colors.key_off); -} - -static void disp_style() -{ - printf("[Style]\n"); - printf(" Key: %d, Level: %d\n", - diva_cfg->style.key, diva_cfg->style.level); + printf("[Light]\n"); + printf(" Level: %d\n", diva_cfg->light.level); } static void disp_sense() @@ -60,32 +52,28 @@ static void disp_hid() void handle_display(int argc, char *argv[]) { - const char *usage = "Usage: display [colors|style|tof|sense|hid]\n"; + const char *usage = "Usage: display [light|sense|hid]\n"; if (argc > 1) { printf(usage); return; } if (argc == 0) { - disp_colors(); - disp_style(); + disp_light(); disp_sense(); disp_hid(); return; } - const char *choices[] = {"colors", "style", "sense", "hid"}; - switch (cli_match_prefix(choices, 5, argv[0])) { + const char *choices[] = {"light", "sense", "hid"}; + switch (cli_match_prefix(choices, count_of(choices), argv[0])) { case 0: - disp_colors(); + disp_light(); break; case 1: - disp_style(); - break; - case 2: disp_sense(); break; - case 3: + case 2: disp_hid(); break; default: @@ -125,9 +113,9 @@ static void handle_level(int argc, char *argv[]) return; } - diva_cfg->style.level = level; + diva_cfg->light.level = level; config_changed(); - disp_style(); + disp_light(); } static void handle_stat(int argc, char *argv[]) diff --git a/firmware/src/config.c b/firmware/src/config.c index 6cb0124..2209129 100644 --- a/firmware/src/config.c +++ b/firmware/src/config.c @@ -12,12 +12,7 @@ diva_cfg_t *diva_cfg; static diva_cfg_t default_cfg = { - .colors = { - .key_on = 0xff0000, - .key_off = 0x000000, - }, - .style = { - .key = 0, + .light = { .level = 127, }, .sense = { @@ -36,15 +31,6 @@ diva_runtime_t *diva_runtime; static void config_loaded() { - if (diva_cfg->style.level > 10) { - diva_cfg->style.level = default_cfg.style.level; - config_changed(); - } - if ((diva_cfg->tof.offset < 40) || - (diva_cfg->tof.pitch < 4) || (diva_cfg->tof.pitch > 50)) { - diva_cfg->tof = default_cfg.tof; - config_changed(); - } if ((diva_cfg->sense.filter & 0x0f) > 3 || ((diva_cfg->sense.filter >> 4) & 0x0f) > 3) { diva_cfg->sense.filter = default_cfg.sense.filter; diff --git a/firmware/src/config.h b/firmware/src/config.h index 59b7349..9285fae 100644 --- a/firmware/src/config.h +++ b/firmware/src/config.h @@ -11,20 +11,13 @@ typedef struct __attribute__((packed)) { struct { - uint32_t key_on; - uint32_t key_off; - uint32_t gap; + uint32_t not_used[3]; } colors; struct { - uint8_t key; - uint8_t gap; - uint8_t tof; + uint8_t not_used[3]; uint8_t level; - } style; - struct { - uint8_t offset; - uint8_t pitch; - } tof; + } light; + uint8_t not_used2[2]; struct { uint8_t filter; int8_t global; diff --git a/firmware/src/main.c b/firmware/src/main.c index b7eb0ba..ca95ee5 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -142,11 +142,11 @@ static void run_lights() { uint64_t now = time_us_64(); uint32_t button_colors[] = { - rgb32(0x70, 0x08, 0x50, false), - rgb32(0x80, 0, 0, false), - rgb32(0, 0, 0x80, false), rgb32(0, 0x80, 0, false), - rgb32(0x10, 0x10, 0x10, false) + rgb32(0x70, 0x08, 0x50, false), + rgb32(0, 0, 0x80, false), + rgb32(0x80, 0, 0, false), + rgb32(0x70, 0x70, 0x00, false) }; uint16_t buttons = button_read(); diff --git a/firmware/src/rgb.c b/firmware/src/rgb.c index 5092ad6..dd2aff4 100644 --- a/firmware/src/rgb.c +++ b/firmware/src/rgb.c @@ -116,9 +116,9 @@ static inline uint32_t apply_level(uint32_t color) unsigned g = (color >> 8) & 0xff; unsigned b = color & 0xff; - r = r * diva_cfg->style.level / 255; - g = g * diva_cfg->style.level / 255; - b = b * diva_cfg->style.level / 255; + r = r * diva_cfg->light.level / 255; + g = g * diva_cfg->light.level / 255; + b = b * diva_cfg->light.level / 255; return r << 16 | g << 8 | b; }