subghz: display Acurite temperature in units matching system locale

This commit is contained in:
Connor Quick
2024-02-24 15:09:40 -05:00
parent f2eff7be1d
commit f440d7c5ac
4 changed files with 21 additions and 9 deletions
+5 -2
View File
@@ -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);
}
+5 -2
View File
@@ -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);
}
+5 -2
View File
@@ -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);
}
+6 -3
View File
@@ -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);
}