From b408cd96875aa44f102d8549c846edd65c5d15f3 Mon Sep 17 00:00:00 2001 From: Will Xyen Date: Mon, 29 Jun 2020 06:49:22 -0700 Subject: [PATCH] config: fix number of lights being loaded wrong if config is outdated --- src/main/config/main.c | 29 +++++++++++++++++++++-------- src/main/geninput/geninput.def | 2 ++ src/main/geninput/input-config.h | 1 + src/main/geninput/input.c | 5 +++++ 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/main/config/main.c b/src/main/config/main.c index 6dab111..76bf335 100644 --- a/src/main/config/main.c +++ b/src/main/config/main.c @@ -105,19 +105,32 @@ int main(int argc, char **argv) eam_io_init(crt_thread_create, crt_thread_join, crt_thread_destroy); eam_io_config_api = eam_io_get_config_api(); + // calculate these and check against the loaded config + max_light = -1; + + for (i = 0; i < schema->nlights; i++) { + if (max_light < schema->lights[i].bit) { + max_light = schema->lights[i].bit; + } + } + if (!mapper_config_load(schema->name)) { log_info("Initializing empty config for %s", schema->name); - max_light = -1; - - for (i = 0; i < schema->nlights; i++) { - if (max_light < schema->lights[i].bit) { - max_light = schema->lights[i].bit; - } - } - mapper_set_nlights((uint8_t)(max_light + 1)); mapper_set_nanalogs((uint8_t) schema->nanalogs); + } else { + // make sure that these are right + + if (mapper_get_nlights() != (max_light + 1)) { + log_info("Updating nlights for %s", schema->name); + mapper_set_nlights((uint8_t)(max_light + 1)); + } + + if (mapper_get_nanalogs() != schema->nanalogs) { + log_info("Updating nanalogs for %s", schema->name); + mapper_set_nanalogs((uint8_t) schema->nanalogs); + } } memset(&psh, 0, sizeof(psh)); diff --git a/src/main/geninput/geninput.def b/src/main/geninput/geninput.def index e91e82b..1f2fd92 100644 --- a/src/main/geninput/geninput.def +++ b/src/main/geninput/geninput.def @@ -36,6 +36,8 @@ EXPORTS mapper_get_analog_map mapper_get_analog_sensitivity mapper_get_npages + mapper_get_nanalogs + mapper_get_nlights mapper_is_analog_absolute mapper_iterate_lights mapper_iterate_actions diff --git a/src/main/geninput/input-config.h b/src/main/geninput/input-config.h index aabd712..7bd1fc2 100644 --- a/src/main/geninput/input-config.h +++ b/src/main/geninput/input-config.h @@ -16,6 +16,7 @@ bool mapper_get_action_map( bool mapper_get_analog_map(uint8_t analog, struct mapped_analog *ma); int32_t mapper_get_analog_sensitivity(uint8_t analog); uint8_t mapper_get_nanalogs(void); +uint8_t mapper_get_nlights(void); uint8_t mapper_get_npages(void); bool mapper_is_analog_absolute(uint8_t analog); action_iter_t mapper_iterate_actions(void); diff --git a/src/main/geninput/input.c b/src/main/geninput/input.c index c051e74..ef5f4b0 100644 --- a/src/main/geninput/input.c +++ b/src/main/geninput/input.c @@ -149,6 +149,11 @@ uint8_t mapper_get_nanalogs(void) return mapper_impl_get_nanalogs(mapper_inst); } +uint8_t mapper_get_nlights(void) +{ + return mapper_impl_get_nlights(mapper_inst); +} + uint8_t mapper_get_npages(void) { return mapper_impl_get_npages(mapper_inst);