From f440d7c5ac82a436dd773034c6e5344b4ef1dbec Mon Sep 17 00:00:00 2001 From: Connor Quick <72400253+cquick01@users.noreply.github.com> Date: Sat, 24 Feb 2024 15:09:40 -0500 Subject: [PATCH] subghz: display Acurite temperature in units matching system locale --- lib/subghz/protocols/acurite_592txr.c | 7 +++++-- lib/subghz/protocols/acurite_606tx.c | 7 +++++-- lib/subghz/protocols/acurite_609txc.c | 7 +++++-- lib/subghz/protocols/acurite_986.c | 9 ++++++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/subghz/protocols/acurite_592txr.c b/lib/subghz/protocols/acurite_592txr.c index f5b4ecee3..44c8761c7 100644 --- a/lib/subghz/protocols/acurite_592txr.c +++ b/lib/subghz/protocols/acurite_592txr.c @@ -285,12 +285,13 @@ SubGhzProtocolStatus void ws_protocol_decoder_acurite_592txr_get_string(void* context, FuriString* output) { furi_assert(context); WSProtocolDecoderAcurite_592TXR* instance = context; + bool locale_is_metric = furi_hal_rtc_get_locale_units() == FuriHalRtcLocaleUnitsMetric; furi_string_cat_printf( output, "%s\r\n%dbit\r\n" "Key:0x%lX%08lX\r\n" "Sn:0x%lX Ch:%d Bat:%d\r\n" - "Temp:%3.1f C Hum:%d%%", + "Temp:%3.1f %c Hum:%d%%", instance->generic.protocol_name, instance->generic.data_count_bit, (uint32_t)(instance->generic.data >> 32), @@ -298,7 +299,9 @@ void ws_protocol_decoder_acurite_592txr_get_string(void* context, FuriString* ou instance->generic.id, instance->generic.channel, instance->generic.battery_low, - (double)instance->generic.temp, + (double)(locale_is_metric ? instance->generic.temp : + locale_celsius_to_fahrenheit(instance->generic.temp)), + locale_is_metric ? 'C' : 'F', instance->generic.humidity); } diff --git a/lib/subghz/protocols/acurite_606tx.c b/lib/subghz/protocols/acurite_606tx.c index 93eacca33..0f14c7db4 100644 --- a/lib/subghz/protocols/acurite_606tx.c +++ b/lib/subghz/protocols/acurite_606tx.c @@ -224,12 +224,13 @@ SubGhzProtocolStatus void ws_protocol_decoder_acurite_606tx_get_string(void* context, FuriString* output) { furi_assert(context); WSProtocolDecoderAcurite_606TX* instance = context; + bool locale_is_metric = furi_hal_rtc_get_locale_units() == FuriHalRtcLocaleUnitsMetric; furi_string_cat_printf( output, "%s\r\n%dbit\r\n" "Key:0x%lX%08lX\r\n" "Sn:0x%lX Ch:%d Bat:%d\r\n" - "Temp:%3.1f C Hum:%d%%", + "Temp:%3.1f %c Hum:%d%%", instance->generic.protocol_name, instance->generic.data_count_bit, (uint32_t)(instance->generic.data >> 32), @@ -237,6 +238,8 @@ void ws_protocol_decoder_acurite_606tx_get_string(void* context, FuriString* out instance->generic.id, instance->generic.channel, instance->generic.battery_low, - (double)instance->generic.temp, + (double)(locale_is_metric ? instance->generic.temp : + locale_celsius_to_fahrenheit(instance->generic.temp)), + locale_is_metric ? 'C' : 'F', instance->generic.humidity); } diff --git a/lib/subghz/protocols/acurite_609txc.c b/lib/subghz/protocols/acurite_609txc.c index 126f8e201..8c082aace 100644 --- a/lib/subghz/protocols/acurite_609txc.c +++ b/lib/subghz/protocols/acurite_609txc.c @@ -224,12 +224,13 @@ SubGhzProtocolStatus void ws_protocol_decoder_acurite_609txc_get_string(void* context, FuriString* output) { furi_assert(context); WSProtocolDecoderAcurite_609TXC* instance = context; + bool locale_is_metric = furi_hal_rtc_get_locale_units() == FuriHalRtcLocaleUnitsMetric; furi_string_cat_printf( output, "%s\r\n%dbit\r\n" "Key:0x%lX%08lX\r\n" "Sn:0x%lX Ch:%d Bat:%d\r\n" - "Temp:%3.1f C Hum:%d%%", + "Temp:%3.1f %c Hum:%d%%", instance->generic.protocol_name, instance->generic.data_count_bit, (uint32_t)(instance->generic.data >> 40), @@ -237,6 +238,8 @@ void ws_protocol_decoder_acurite_609txc_get_string(void* context, FuriString* ou instance->generic.id, instance->generic.channel, instance->generic.battery_low, - (double)instance->generic.temp, + (double)(locale_is_metric ? instance->generic.temp : + locale_celsius_to_fahrenheit(instance->generic.temp)), + locale_is_metric ? 'C' : 'F', instance->generic.humidity); } diff --git a/lib/subghz/protocols/acurite_986.c b/lib/subghz/protocols/acurite_986.c index 7c8edd211..ba64dc22e 100644 --- a/lib/subghz/protocols/acurite_986.c +++ b/lib/subghz/protocols/acurite_986.c @@ -134,7 +134,7 @@ static void ws_protocol_acurite_986_remote_controller(WSBlockGeneric* instance) if(temp & 0x80) { temp = -(temp & 0x7F); } - instance->temp = locale_fahrenheit_to_celsius((float)temp); + instance->temp = (float)temp; instance->btn = WS_NO_BTN; instance->humidity = WS_NO_HUMIDITY; } @@ -256,12 +256,13 @@ SubGhzProtocolStatus void ws_protocol_decoder_acurite_986_get_string(void* context, FuriString* output) { furi_assert(context); WSProtocolDecoderAcurite_986* instance = context; + bool locale_is_metric = furi_hal_rtc_get_locale_units() == FuriHalRtcLocaleUnitsMetric; furi_string_cat_printf( output, "%s\r\n%dbit\r\n" "Key:0x%lX%08lX\r\n" "Sn:0x%lX Ch:%d Bat:%d\r\n" - "Temp:%3.1f C Hum:%d%%", + "Temp:%3.1f %c Hum:%d%%", instance->generic.protocol_name, instance->generic.data_count_bit, (uint32_t)(instance->generic.data >> 32), @@ -269,6 +270,8 @@ void ws_protocol_decoder_acurite_986_get_string(void* context, FuriString* outpu instance->generic.id, instance->generic.channel, instance->generic.battery_low, - (double)instance->generic.temp, + (double)(locale_is_metric ? locale_fahrenheit_to_celsius(instance->generic.temp) : + instance->generic.temp), + locale_is_metric ? 'C' : 'F', instance->generic.humidity); }