From c91fe7560e223baf655eec4ae6707d6992a67f2f Mon Sep 17 00:00:00 2001 From: whowechina Date: Tue, 30 Apr 2024 08:56:39 +0800 Subject: [PATCH] Minor code cleanup --- Production/Firmware/chu_pico.uf2 | Bin 152064 -> 151552 bytes firmware/src/config.c | 194 +++++++++++++++---------------- firmware/src/config.h | 116 +++++++++--------- 3 files changed, 155 insertions(+), 155 deletions(-) diff --git a/Production/Firmware/chu_pico.uf2 b/Production/Firmware/chu_pico.uf2 index f7d93074b83dfaba483d1ae9be8d8e69de68a70c..2824b1c4c90c5d6b70da3f6a4f7f65ecdf93fd77 100644 GIT binary patch delta 16565 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

~R1C}%Si8W!#Lxt`@dXvGPU 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 KR82(wty*%4U1Zy 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 diff --git a/firmware/src/config.c b/firmware/src/config.c index 41fe30f..359abd1 100644 --- a/firmware/src/config.c +++ b/firmware/src/config.c @@ -1,97 +1,97 @@ -/* - * Controller Config and Runtime Data - * WHowe - * - * Config is a global data structure that stores all the configuration - * Runtime is something to share between files. - */ - -#include "config.h" -#include "save.h" - -chu_cfg_t *chu_cfg; - -static chu_cfg_t default_cfg = { - .colors = { - .key_on_upper = 0x00FF00, - .key_on_lower = 0xff0000, - .key_on_both = 0xff0000, - .key_off = 0x000000, - .gap = 0x000000, - }, - .style = { - .key = 0, - .gap = 0, - .tof = 0, - .level = 127, - }, - .tof = { - .offset = 80, - .pitch = 20, - }, - .sense = { - .filter = 0x10, - .debounce_touch = 1, - .debounce_release = 2, - }, - .hid = { - .joy = 1, - .nkro = 0, - }, - .aime = { - .mode = 0, - .virtual_aic = 0, - }, -}; - -chu_runtime_t *chu_runtime; - -static void config_loaded() -{ - if (chu_cfg->style.level > 10) { - chu_cfg->style.level = default_cfg.style.level; - config_changed(); - } - if ((chu_cfg->tof.offset < 40) || - (chu_cfg->tof.pitch < 4) || (chu_cfg->tof.pitch > 50)) { - chu_cfg->tof = default_cfg.tof; - config_changed(); - } - if ((chu_cfg->sense.filter & 0x0f) > 3 || - ((chu_cfg->sense.filter >> 4) & 0x0f) > 3) { - chu_cfg->sense.filter = default_cfg.sense.filter; - config_changed(); - } - if ((chu_cfg->sense.global > 9) || (chu_cfg->sense.global < -9)) { - chu_cfg->sense.global = default_cfg.sense.global; - config_changed(); - } - for (int i = 0; i < 32; i++) { - if ((chu_cfg->sense.keys[i] > 9) || (chu_cfg->sense.keys[i] < -9)) { - chu_cfg->sense.keys[i] = default_cfg.sense.keys[i]; - config_changed(); - } - } - if ((chu_cfg->sense.debounce_touch > 7) | - (chu_cfg->sense.debounce_release > 7)) { - chu_cfg->sense.debounce_touch = default_cfg.sense.debounce_touch; - chu_cfg->sense.debounce_release = default_cfg.sense.debounce_release; - config_changed(); - } -} - -void config_changed() -{ - save_request(false); -} - -void config_factory_reset() -{ - *chu_cfg = default_cfg; - save_request(true); -} - -void config_init() -{ - chu_cfg = (chu_cfg_t *)save_alloc(sizeof(*chu_cfg), &default_cfg, config_loaded); -} +/* + * Controller Config and Runtime Data + * WHowe + * + * Config is a global data structure that stores all the configuration + * Runtime is something to share between files. + */ + +#include "config.h" +#include "save.h" + +chu_cfg_t *chu_cfg; + +static chu_cfg_t default_cfg = { + .colors = { + .key_on_upper = 0x00FF00, + .key_on_lower = 0xff0000, + .key_on_both = 0xff0000, + .key_off = 0x000000, + .gap = 0x000000, + }, + .style = { + .key = 0, + .gap = 0, + .tof = 0, + .level = 127, + }, + .tof = { + .offset = 80, + .pitch = 20, + }, + .sense = { + .filter = 0x10, + .debounce_touch = 1, + .debounce_release = 2, + }, + .hid = { + .joy = 1, + .nkro = 0, + }, + .aime = { + .mode = 0, + .virtual_aic = 0, + }, +}; + +chu_runtime_t chu_runtime; + +static void config_loaded() +{ + if (chu_cfg->style.level > 10) { + chu_cfg->style.level = default_cfg.style.level; + config_changed(); + } + if ((chu_cfg->tof.offset < 40) || + (chu_cfg->tof.pitch < 4) || (chu_cfg->tof.pitch > 50)) { + chu_cfg->tof = default_cfg.tof; + config_changed(); + } + if ((chu_cfg->sense.filter & 0x0f) > 3 || + ((chu_cfg->sense.filter >> 4) & 0x0f) > 3) { + chu_cfg->sense.filter = default_cfg.sense.filter; + config_changed(); + } + if ((chu_cfg->sense.global > 9) || (chu_cfg->sense.global < -9)) { + chu_cfg->sense.global = default_cfg.sense.global; + config_changed(); + } + for (int i = 0; i < 32; i++) { + if ((chu_cfg->sense.keys[i] > 9) || (chu_cfg->sense.keys[i] < -9)) { + chu_cfg->sense.keys[i] = default_cfg.sense.keys[i]; + config_changed(); + } + } + if ((chu_cfg->sense.debounce_touch > 7) | + (chu_cfg->sense.debounce_release > 7)) { + chu_cfg->sense.debounce_touch = default_cfg.sense.debounce_touch; + chu_cfg->sense.debounce_release = default_cfg.sense.debounce_release; + config_changed(); + } +} + +void config_changed() +{ + save_request(false); +} + +void config_factory_reset() +{ + *chu_cfg = default_cfg; + save_request(true); +} + +void config_init() +{ + chu_cfg = (chu_cfg_t *)save_alloc(sizeof(*chu_cfg), &default_cfg, config_loaded); +} diff --git a/firmware/src/config.h b/firmware/src/config.h index 046e952..c8cacfc 100644 --- a/firmware/src/config.h +++ b/firmware/src/config.h @@ -1,58 +1,58 @@ -/* - * Controller Config - * WHowe - */ - -#ifndef CONFIG_H -#define CONFIG_H - -#include -#include - -typedef struct __attribute__((packed)) { - struct { - uint32_t key_on_upper; - uint32_t key_on_lower; - uint32_t key_on_both; - uint32_t key_off; - uint32_t gap; - } colors; - struct { - uint8_t key; - uint8_t gap; - uint8_t tof; - uint8_t level; - } style; - struct { - uint8_t offset; - uint8_t pitch; - } tof; - struct { - int8_t filter; - int8_t global; - uint8_t debounce_touch; - uint8_t debounce_release; - int8_t keys[32]; - } sense; - struct { - uint8_t joy : 4; - uint8_t nkro : 4; - } hid; - struct { - uint8_t mode : 4; - uint8_t virtual_aic : 4; - } aime; -} chu_cfg_t; - -typedef struct { - uint16_t fps[2]; -} chu_runtime_t; - -extern chu_cfg_t *chu_cfg; -extern chu_runtime_t *chu_runtime; - -void config_init(); -void config_changed(); // Notify the config has changed -void config_factory_reset(); // Reset the config to factory default - -#endif +/* + * Controller Config + * WHowe + */ + +#ifndef CONFIG_H +#define CONFIG_H + +#include +#include + +typedef struct __attribute__((packed)) { + struct { + uint32_t key_on_upper; + uint32_t key_on_lower; + uint32_t key_on_both; + uint32_t key_off; + uint32_t gap; + } colors; + struct { + uint8_t key; + uint8_t gap; + uint8_t tof; + uint8_t level; + } style; + struct { + uint8_t offset; + uint8_t pitch; + } tof; + struct { + int8_t filter; + int8_t global; + uint8_t debounce_touch; + uint8_t debounce_release; + int8_t keys[32]; + } sense; + struct { + uint8_t joy : 4; + uint8_t nkro : 4; + } hid; + struct { + uint8_t mode : 4; + uint8_t virtual_aic : 4; + } aime; +} chu_cfg_t; + +typedef struct { + bool debug; +} chu_runtime_t; + +extern chu_cfg_t *chu_cfg; +extern chu_runtime_t chu_runtime; + +void config_init(); +void config_changed(); // Notify the config has changed +void config_factory_reset(); // Reset the config to factory default + +#endif