mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Sub-GHz: Refactor Weather protocols
This commit is contained in:
@@ -38,7 +38,9 @@
|
||||
- UL: Barcode: Fix backlight settings (by @xMasterX)
|
||||
- Many apps updated for new refactors (by @Willy-JL & @xMasterX)
|
||||
- UL: NFC: Better plugin loading, faster launch from favourites, no lag in Saved menu (by @xMasterX)
|
||||
- Sub-GHz: Streamline generic serialize +1.5k free flash (by @Willy-JL)
|
||||
- Sub-GHz:
|
||||
- Streamline generic serialize +1.5k free flash (by @Willy-JL)
|
||||
- Refactor Weather protocols in Sub-GHz app, shows only correct data (by @Willy-JL)
|
||||
- CLI: Simpler plugin wrapper +0.5k free flash (by @Willy-JL)
|
||||
- OFW: Furi: Use static synchronisation primitives, prepare for event loop (by @gsurkov & @skotopes)
|
||||
- OFW: Code Cleanup: Unused includes, useless checks, unused variables, etc... (by @skotopes)
|
||||
|
||||
@@ -287,24 +287,7 @@ 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
void* ws_protocol_encoder_acurite_592txr_alloc(SubGhzEnvironment* environment) {
|
||||
|
||||
@@ -226,22 +226,5 @@ 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -226,22 +226,5 @@ 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 40),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -258,22 +258,5 @@ 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? locale_fahrenheit_to_celsius(instance->generic.temp) :
|
||||
instance->generic.temp),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -255,22 +255,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_ambient_weather_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderAmbient_Weather* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -241,22 +241,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_auriol_ahfl_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderAuriol_AHFL* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -235,22 +235,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_auriol_th_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderAuriol_TH* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -242,22 +242,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_gt_wt_02_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderGT_WT02* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -317,22 +317,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_gt_wt_03_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderGT_WT03* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -273,22 +273,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_infactory_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderInfactory* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -281,22 +281,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_kedsum_th_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderKedsumTH* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -306,22 +306,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_lacrosse_tx_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderLaCrosse_TX* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -292,22 +292,5 @@ SubGhzProtocolStatus ws_protocol_decoder_lacrosse_tx141thbv2_deserialize(
|
||||
void ws_protocol_decoder_lacrosse_tx141thbv2_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderLaCrosse_TX141THBv2* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -313,24 +313,7 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_nexus_th_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderNexus_TH* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
const SubGhzProtocolDecoder ws_protocol_nexus_th_decoder = {
|
||||
|
||||
@@ -308,22 +308,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_oregon_v1_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderOregon_V1* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -238,22 +238,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_thermopro_tx4_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderThermoPRO_TX4* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -271,22 +271,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_tx_8300_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderTX_8300* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -286,22 +286,5 @@ SubGhzProtocolStatus
|
||||
void ws_protocol_decoder_wendox_w6726_get_string(void* context, FuriString* output) {
|
||||
furi_assert(context);
|
||||
WSProtocolDecoderWendoxW6726* 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%%",
|
||||
instance->generic.protocol_name,
|
||||
instance->generic.data_count_bit,
|
||||
(uint32_t)(instance->generic.data >> 32),
|
||||
(uint32_t)(instance->generic.data),
|
||||
instance->generic.id,
|
||||
instance->generic.channel,
|
||||
instance->generic.battery_low,
|
||||
(double)(locale_is_metric ? instance->generic.temp :
|
||||
locale_celsius_to_fahrenheit(instance->generic.temp)),
|
||||
locale_is_metric ? 'C' : 'F',
|
||||
instance->generic.humidity);
|
||||
ws_block_generic_get_string(&instance->generic, output);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "ws_generic.h"
|
||||
#include <lib/toolbox/stream/stream.h>
|
||||
#include <lib/flipper_format/flipper_format_i.h>
|
||||
//#include "../helpers/weather_station_types.h"
|
||||
#include <float_tools.h>
|
||||
|
||||
#define TAG "WSBlockGeneric"
|
||||
|
||||
@@ -194,4 +194,45 @@ SubGhzProtocolStatus ws_block_generic_deserialize_check_count_bit(
|
||||
}
|
||||
} while(false);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ws_block_generic_get_string(WSBlockGeneric* instance, FuriString* output) {
|
||||
furi_string_cat_printf(
|
||||
output, "%s\r\n%dbit ", instance->protocol_name, instance->data_count_bit);
|
||||
if(instance->channel != WS_NO_CHANNEL) {
|
||||
furi_string_cat_printf(output, "Ch:%01d\r\n", instance->channel);
|
||||
} else {
|
||||
furi_string_cat(output, "\r\n");
|
||||
}
|
||||
|
||||
if(instance->id != WS_NO_ID) {
|
||||
furi_string_cat_printf(output, "Sn:0x%02lX ", instance->id);
|
||||
}
|
||||
if(instance->channel != WS_NO_BTN) {
|
||||
furi_string_cat_printf(output, "Btn:%01d ", instance->btn);
|
||||
}
|
||||
if(instance->battery_low != WS_NO_BATT) {
|
||||
furi_string_cat_printf(
|
||||
output, "Batt:%s\r\n", (!instance->battery_low ? "ok" : "low"));
|
||||
} else {
|
||||
furi_string_cat(output, "\r\n");
|
||||
}
|
||||
|
||||
furi_string_cat_printf(
|
||||
output,
|
||||
"Data:0x%lX%08lX\r\n",
|
||||
(uint32_t)(instance->data >> 32),
|
||||
(uint32_t)(instance->data));
|
||||
|
||||
if(!float_is_equal(instance->temp, WS_NO_TEMPERATURE)) {
|
||||
bool is_metric = furi_hal_rtc_get_locale_units() == FuriHalRtcLocaleUnitsMetric;
|
||||
furi_string_cat_printf(
|
||||
output,
|
||||
"Temp:%3.1f %c ",
|
||||
(double)(is_metric ? instance->temp : locale_celsius_to_fahrenheit(instance->temp)),
|
||||
is_metric ? 'C' : 'F');
|
||||
}
|
||||
if(instance->humidity != WS_NO_HUMIDITY) {
|
||||
furi_string_cat_printf(output, "Hum:%d%%", instance->humidity);
|
||||
}
|
||||
}
|
||||
@@ -63,6 +63,13 @@ SubGhzProtocolStatus ws_block_generic_deserialize_check_count_bit(
|
||||
FlipperFormat* flipper_format,
|
||||
uint16_t count_bit);
|
||||
|
||||
/**
|
||||
* Get string WSBlockGeneric.
|
||||
* @param instance Pointer to a WSBlockGeneric instance
|
||||
* @param output Pointer to a FuriString instance
|
||||
*/
|
||||
void ws_block_generic_get_string(WSBlockGeneric* instance, FuriString* output);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user