From c407fd2d1a9e0569c8542e84c51cc9d0dea47158 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Sun, 11 Jan 2026 06:25:22 +0300 Subject: [PATCH] subghz: sommer add backwards comp. fix for older files --- CHANGELOG.md | 2 +- lib/subghz/protocols/keeloq.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d15e2edef..7a0ad81f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ * Archive: Allow folders to be pinned (by @WillyJL) * Apps: Build tag (**9jan2026p2**) - **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev) ## Other changes -* SubGHz: Rename Sommer(fsk476) to Sommer (Sommer keeloq works better with FM12K) +* SubGHz: Rename Sommer(fsk476) to Sommer (Sommer keeloq works better with FM12K) + added backwards compatibility with older saved files * Docs: Add full list of supported SubGHz protocols and their frequencies/modulations that can be used for reading remotes - [Docs Link](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzSupportedSystems.md) * Desktop: Show debug status (D) if clock is enabled and debug flag is on (PR #942 | by @Dmitry422) * NFC: Fix some typos in Type4Tag protocol (by @WillyJL) diff --git a/lib/subghz/protocols/keeloq.c b/lib/subghz/protocols/keeloq.c index 599b542e5..6b03badb9 100644 --- a/lib/subghz/protocols/keeloq.c +++ b/lib/subghz/protocols/keeloq.c @@ -624,6 +624,21 @@ SubGhzProtocolStatus flipper_format, "Manufacture", instance->manufacture_from_file)) { instance->manufacture_name = furi_string_get_cstr(instance->manufacture_from_file); instance->keystore->mfname = instance->manufacture_name; + // Compatibility fixes for old names in user files + if(strcmp(instance->manufacture_name, "Sommer(fsk476)") == 0) { + instance->manufacture_name = "Sommer"; + instance->keystore->mfname = instance->manufacture_name; + if(!flipper_format_rewind(flipper_format)) { + FURI_LOG_E(TAG, "Rewind error"); + break; + } + if(!flipper_format_update_string_cstr( + flipper_format, "Manufacture", instance->manufacture_name)) { + FURI_LOG_E(TAG, "DECODER: Unable to fix Sommer manufacture name"); + ret = SubGhzProtocolStatusError; + break; + } + } } else { FURI_LOG_D(TAG, "ENCODER: Missing Manufacture"); } @@ -1275,6 +1290,21 @@ SubGhzProtocolStatus flipper_format, "Manufacture", instance->manufacture_from_file)) { instance->manufacture_name = furi_string_get_cstr(instance->manufacture_from_file); instance->keystore->mfname = instance->manufacture_name; + // Compatibility fixes for old names in user files + if(strcmp(instance->manufacture_name, "Sommer(fsk476)") == 0) { + instance->manufacture_name = "Sommer"; + instance->keystore->mfname = instance->manufacture_name; + if(!flipper_format_rewind(flipper_format)) { + FURI_LOG_E(TAG, "Rewind error"); + break; + } + if(!flipper_format_update_string_cstr( + flipper_format, "Manufacture", instance->manufacture_name)) { + FURI_LOG_E(TAG, "DECODER: Unable to fix Sommer manufacture name"); + res = SubGhzProtocolStatusError; + break; + } + } } else { FURI_LOG_D(TAG, "DECODER: Missing Manufacture"); }