From 25fd7475ae7af3e997ae5568a2ffb7489ab823cf Mon Sep 17 00:00:00 2001 From: whowechina Date: Mon, 23 Dec 2024 19:46:27 +0800 Subject: [PATCH] Tweak option to skip splitter LED --- Production/Firmware/chu_pico.uf2 | Bin 157184 -> 158208 bytes firmware/src/commands.c | 45 +++++++++++++++++++++++++++++-- firmware/src/config.c | 3 +++ firmware/src/config.h | 4 +++ firmware/src/rgb.c | 3 +++ 5 files changed, 53 insertions(+), 2 deletions(-) diff --git a/Production/Firmware/chu_pico.uf2 b/Production/Firmware/chu_pico.uf2 index af03b0f296754be73b60c2d1199dd952afe6b400..a7955af2aadaa9a2bd4c0fe5eef64a592f4225c0 100644 GIT binary patch delta 19432 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 Uf64`h{2(Uoqn6~{@Jhu011NS3IsgCw delta 18832 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 ogcbb*&(aXxk diff --git a/firmware/src/commands.c b/firmware/src/commands.c index fc7da84..0c3644f 100644 --- a/firmware/src/commands.c +++ b/firmware/src/commands.c @@ -97,9 +97,15 @@ static void disp_aime() printf(" Mode: %d\n", chu_cfg->aime.mode); } +static void disp_tweak() +{ + printf("[Tweak]\n"); + printf(" Skip Splitter LED: %s\n", chu_cfg->tweak.skip_split_led ? "ON" : "OFF"); +} + void handle_display(int argc, char *argv[]) { - const char *usage = "Usage: display [colors|style|tof|ir|sense|hid|aime]\n"; + const char *usage = "Usage: display [colors|style|tof|ir|sense|hid|aime|tweak]\n"; if (argc > 1) { printf(usage); return; @@ -113,10 +119,11 @@ void handle_display(int argc, char *argv[]) disp_sense(); disp_hid(); disp_aime(); + disp_tweak(); return; } - const char *choices[] = {"colors", "style", "tof", "ir", "sense", "hid", "aime"}; + const char *choices[] = {"colors", "style", "tof", "ir", "sense", "hid", "aime", "tweak"}; switch (cli_match_prefix(choices, count_of(choices), argv[0])) { case 0: disp_colors(); @@ -139,6 +146,9 @@ void handle_display(int argc, char *argv[]) case 6: disp_aime(); break; + case 7: + disp_tweak(); + break; default: printf(usage); break; @@ -552,6 +562,36 @@ static void handle_aime(int argc, char *argv[]) } } +static void handle_tweak(int argc, char *argv[]) +{ + const char *usage = "Usage: tweak skip_split \n"; + if (argc < 1) { + printf("%s", usage); + return; + } + const char *options[] = { "skip_split" }; + int match = cli_match_prefix(options, count_of(options), argv[0]); + if (match < 0) { + printf("%s", usage); + return; + } + + if (match == 0) { + if (argc != 2) { + printf("%s", usage); + return; + } + const char *on_off[] = { "off", "on" }; + int on = cli_match_prefix(on_off, count_of(on_off), argv[1]); + if (on < 0) { + printf("%s", usage); + return; + } + chu_cfg->tweak.skip_split_led = (on > 0); + } + config_changed(); +} + void commands_init() { cli_register("display", handle_display, "Display all config."); @@ -564,6 +604,7 @@ void commands_init() cli_register("sense", handle_sense, "Set sensitivity config."); cli_register("debounce", handle_debounce, "Set debounce config."); cli_register("raw", handle_raw, "Show key raw readings."); + cli_register("tweak", handle_tweak, "Tweak options."); cli_register("save", handle_save, "Save config to flash."); cli_register("factory", handle_factory_reset, "Reset everything to default."); cli_register("nfc", handle_nfc, "NFC debug."); diff --git a/firmware/src/config.c b/firmware/src/config.c index 63c0b74..e4beb71 100644 --- a/firmware/src/config.c +++ b/firmware/src/config.c @@ -47,6 +47,9 @@ static chu_cfg_t default_cfg = { .base = { 3800, 3800, 3800, 3800, 3800, 3800 }, .trigger = { 20, 20, 20, 20, 20, 20 }, }, + .tweak = { + .skip_split_led = false, + }, }; chu_runtime_t chu_runtime = {0}; diff --git a/firmware/src/config.h b/firmware/src/config.h index c0c0b6b..0b324fc 100644 --- a/firmware/src/config.h +++ b/firmware/src/config.h @@ -47,6 +47,10 @@ typedef struct __attribute__((packed)) { uint16_t base[6]; uint8_t trigger[6]; } ir; + struct { + bool skip_split_led; + uint8_t reserved[7]; + } tweak; } chu_cfg_t; typedef struct { diff --git a/firmware/src/rgb.c b/firmware/src/rgb.c index 952dd74..81cc2ce 100644 --- a/firmware/src/rgb.c +++ b/firmware/src/rgb.c @@ -91,6 +91,9 @@ static void drive_led() last = now; for (int i = 30; i >= 0; i--) { + if (chu_cfg->tweak.skip_split_led && (i % 2 == 1)) { + continue; + } pio_sm_put_blocking(pio0, 0, buf_main[i] << 8u); } for (int i = 31; i < count_of(buf_main); i++) {