From 8802aa8bd65e2b24dd7def69c03d54049bea8443 Mon Sep 17 00:00:00 2001 From: ISpillMyDrink Date: Mon, 27 Apr 2026 17:41:19 +0200 Subject: [PATCH] Fix UI persistance for selectable relay --- src/opensuperclone/clone_gui_common.h | 1 + src/opensuperclone/opensuperclone.c | 2 ++ src/opensuperclone/usbrelay.c | 11 ++++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/opensuperclone/clone_gui_common.h b/src/opensuperclone/clone_gui_common.h index aca7856..7051e7e 100644 --- a/src/opensuperclone/clone_gui_common.h +++ b/src/opensuperclone/clone_gui_common.h @@ -116,6 +116,7 @@ bool color_statusbar_ccc; char primary_relay_name_ccc[MAX_RELAY_NAME_LENGTH]; unsigned long long primary_relay_activation_time_ccc; unsigned long long primary_relay_delay_time_ccc; +int asclepius_relay_source_ccc; bool rebuild_assist_enabled_ccc; bool use_fpdma_ccc; bool wait_for_ds_bit_ccc; diff --git a/src/opensuperclone/opensuperclone.c b/src/opensuperclone/opensuperclone.c index 136b636..c0cd505 100644 --- a/src/opensuperclone/opensuperclone.c +++ b/src/opensuperclone/opensuperclone.c @@ -6,6 +6,7 @@ #include "config.h" #include "common.h" #include "clone_gui_common.h" +#include "asclepius.h" #include "opensuperclone.h" // Function to handle ctrl-c @@ -203,6 +204,7 @@ int main(int argc, char **argv) usb_read_residue_ccc = 0; primary_relay_activation_time_ccc = PRIMARY_RELAY_ACTIVATION_TIME; primary_relay_delay_time_ccc = PRIMARY_RELAY_DELAY_TIME; + asclepius_relay_source_ccc = ASCLEPIUS_ALL; use_rebuild_assist_ccc = false; rebuild_assist_enabled_ccc = false; drive_port_ccc = -1; diff --git a/src/opensuperclone/usbrelay.c b/src/opensuperclone/usbrelay.c index a2b71c6..f4dc7d8 100644 --- a/src/opensuperclone/usbrelay.c +++ b/src/opensuperclone/usbrelay.c @@ -1240,7 +1240,11 @@ void load_primary_relay_settings_ccc(void) primary_relay_settings_ccc.deactivate_primary_relay8 = deactivate_primary_relay8_ccc; primary_relay_settings_ccc.primary_relay_activation_time = primary_relay_activation_time_ccc; primary_relay_settings_ccc.primary_relay_delay_time = primary_relay_delay_time_ccc; - primary_relay_settings_ccc.asclepius_relay_source = ASCLEPIUS_ALL; + primary_relay_settings_ccc.asclepius_relay_source = asclepius_relay_source_ccc; + if (primary_relay_settings_ccc.asclepius_relay_source < ASCLEPIUS_MAIN12V || primary_relay_settings_ccc.asclepius_relay_source > ASCLEPIUS_ALL) + { + primary_relay_settings_ccc.asclepius_relay_source = ASCLEPIUS_ALL; + } strcpy(primary_relay_settings_ccc.primary_relay_name, primary_relay_name_ccc); } @@ -1268,6 +1272,11 @@ void update_primary_relay_settings_ccc(void) primary_relay_activation_time_ccc = primary_relay_settings_ccc.primary_relay_activation_time; primary_relay_delay_time_ccc = primary_relay_settings_ccc.primary_relay_delay_time; + asclepius_relay_source_ccc = primary_relay_settings_ccc.asclepius_relay_source; + if (asclepius_relay_source_ccc < ASCLEPIUS_MAIN12V || asclepius_relay_source_ccc > ASCLEPIUS_ALL) + { + asclepius_relay_source_ccc = ASCLEPIUS_ALL; + } strcpy(primary_relay_name_ccc, primary_relay_settings_ccc.primary_relay_name); }