Преглед изворни кода

WS: fix show negative temperature (#1980)

Skorpionm пре 3 година
родитељ
комит
65005e71d2

+ 2 - 3
applications/plugins/weather_station/protocols/acurite_592txr.c

@@ -293,7 +293,7 @@ void ws_protocol_decoder_acurite_592txr_get_string(void* context, FuriString* ou
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -301,7 +301,6 @@ void ws_protocol_decoder_acurite_592txr_get_string(void* context, FuriString* ou
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 2 - 3
applications/plugins/weather_station/protocols/acurite_606tx.c

@@ -234,7 +234,7 @@ void ws_protocol_decoder_acurite_606tx_get_string(void* context, FuriString* out
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -242,7 +242,6 @@ void ws_protocol_decoder_acurite_606tx_get_string(void* context, FuriString* out
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 2 - 3
applications/plugins/weather_station/protocols/ambient_weather.c

@@ -263,7 +263,7 @@ void ws_protocol_decoder_ambient_weather_get_string(void* context, FuriString* o
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -271,7 +271,6 @@ void ws_protocol_decoder_ambient_weather_get_string(void* context, FuriString* o
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 2 - 3
applications/plugins/weather_station/protocols/gt_wt_03.c

@@ -327,7 +327,7 @@ void ws_protocol_decoder_gt_wt_03_get_string(void* context, FuriString* output)
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -335,7 +335,6 @@ void ws_protocol_decoder_gt_wt_03_get_string(void* context, FuriString* output)
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 2 - 3
applications/plugins/weather_station/protocols/infactory.c

@@ -283,7 +283,7 @@ void ws_protocol_decoder_infactory_get_string(void* context, FuriString* output)
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -291,7 +291,6 @@ void ws_protocol_decoder_infactory_get_string(void* context, FuriString* output)
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 2 - 3
applications/plugins/weather_station/protocols/lacrosse_tx141thbv2.c

@@ -284,7 +284,7 @@ void ws_protocol_decoder_lacrosse_tx141thbv2_get_string(void* context, FuriStrin
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -292,7 +292,6 @@ void ws_protocol_decoder_lacrosse_tx141thbv2_get_string(void* context, FuriStrin
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 2 - 3
applications/plugins/weather_station/protocols/nexus_th.c

@@ -247,7 +247,7 @@ void ws_protocol_decoder_nexus_th_get_string(void* context, FuriString* output)
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -255,7 +255,6 @@ void ws_protocol_decoder_nexus_th_get_string(void* context, FuriString* output)
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 2 - 3
applications/plugins/weather_station/protocols/thermopro_tx4.c

@@ -246,7 +246,7 @@ void ws_protocol_decoder_thermopro_tx4_get_string(void* context, FuriString* out
         "%s %dbit\r\n"
         "%s %dbit\r\n"
         "Key:0x%lX%08lX\r\n"
         "Key:0x%lX%08lX\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
         "Sn:0x%lX Ch:%d  Bat:%d\r\n"
-        "Temp:%d.%d C Hum:%d%%",
+        "Temp:%3.1f C Hum:%d%%",
         instance->generic.protocol_name,
         instance->generic.protocol_name,
         instance->generic.data_count_bit,
         instance->generic.data_count_bit,
         (uint32_t)(instance->generic.data >> 32),
         (uint32_t)(instance->generic.data >> 32),
@@ -254,7 +254,6 @@ void ws_protocol_decoder_thermopro_tx4_get_string(void* context, FuriString* out
         instance->generic.id,
         instance->generic.id,
         instance->generic.channel,
         instance->generic.channel,
         instance->generic.battery_low,
         instance->generic.battery_low,
-        (int16_t)instance->generic.temp,
-        abs(((int16_t)(instance->generic.temp * 10) - (((int16_t)instance->generic.temp) * 10))),
+        (double)instance->generic.temp,
         instance->generic.humidity);
         instance->generic.humidity);
 }
 }

+ 1 - 6
applications/plugins/weather_station/views/weather_station_receiver_info.c

@@ -75,12 +75,7 @@ void ws_view_receiver_info_draw(Canvas* canvas, WSReceiverInfoModel* model) {
 
 
     if(model->generic->temp != WS_NO_TEMPERATURE) {
     if(model->generic->temp != WS_NO_TEMPERATURE) {
         canvas_draw_icon(canvas, 18, 42, &I_Therm_7x16);
         canvas_draw_icon(canvas, 18, 42, &I_Therm_7x16);
-        snprintf(
-            buffer,
-            sizeof(buffer),
-            "%3.2d.%d C",
-            (int16_t)model->generic->temp,
-            abs(((int16_t)(model->generic->temp * 10) - (((int16_t)model->generic->temp) * 10))));
+        snprintf(buffer, sizeof(buffer), "%3.1f C", (double)model->generic->temp);
         canvas_draw_str_aligned(canvas, 63, 46, AlignRight, AlignTop, buffer);
         canvas_draw_str_aligned(canvas, 63, 46, AlignRight, AlignTop, buffer);
         canvas_draw_circle(canvas, 55, 45, 1);
         canvas_draw_circle(canvas, 55, 45, 1);
     }
     }