SubGHz: Update Oregon 2 and 3 weather info display to new design

This commit is contained in:
Willy-JL
2024-09-03 01:32:36 +02:00
parent aebde09f02
commit 1146f8a21a
4 changed files with 20 additions and 40 deletions

View File

@@ -11,7 +11,9 @@
- Authenticator: Confirm token export on Flipper (by @akopachov)
- NFC Playlist: Allow delay up to 12s (by @xtruan)
- BLE Spam: Fix delay help section (by @Willy-JL)
- Sub-GHz: Show Weather Station icon for WS signals (by @Willy-JL)
- Sub-GHz:
- Show Weather Station icon for WS signals (by @Willy-JL)
- Update Oregon 2 and 3 weather info display to new design (by @Willy-JL)
- API: Publishing T5577 page 1 block count macro (by @zinongli)
### Fixed:

View File

@@ -376,33 +376,22 @@ static void oregon2_append_check_sum(uint32_t fix_data, uint32_t var_data, FuriS
// swap calculated sum nibbles
sum = (((sum >> 4) & 0xF) | (sum << 4)) & 0xFF;
if(sum == ref_sum)
furi_string_cat_printf(output, "Sum ok: 0x%hhX", ref_sum);
furi_string_cat_printf(output, "\r\nChkSm: 0x%02hhX ok", ref_sum);
else
furi_string_cat_printf(output, "Sum err: 0x%hhX vs 0x%hhX", ref_sum, sum);
furi_string_cat_printf(output, "\r\nChkSm: 0x%02hhX != 0x%02hhX error", ref_sum, sum);
}
void ws_protocol_decoder_oregon2_get_string(void* context, FuriString* output) {
furi_assert(context);
WSProtocolDecoderOregon2* instance = context;
furi_string_cat_printf(
output,
"%s\r\n"
"ID: 0x%04lX, ch: %d,\r\nbat: %d, rc: 0x%02lX\r\n",
instance->generic.protocol_name,
instance->generic.id,
instance->generic.channel,
instance->generic.battery_low,
(uint32_t)(instance->generic.data >> 4) & 0xFF);
if(instance->var_bits == 0) {
// Funny fix based on old funny code, not sure if this is needed
instance->generic.temp = WS_NO_TEMPERATURE;
instance->generic.humidity = WS_NO_HUMIDITY;
}
ws_block_generic_get_string(&instance->generic, output);
if(instance->var_bits > 0) {
furi_string_cat_printf(
output,
"Temp:%d.%d C Hum:%d%%",
(int16_t)instance->generic.temp,
abs(
((int16_t)(instance->generic.temp * 10) -
(((int16_t)instance->generic.temp) * 10))),
instance->generic.humidity);
oregon2_append_check_sum((uint32_t)instance->generic.data, instance->var_data, output);
}
}

View File

@@ -312,33 +312,22 @@ static void oregon3_append_check_sum(uint32_t fix_data, uint64_t var_data, FuriS
// swap calculated sum nibbles
sum = (((sum >> 4) & 0xF) | (sum << 4)) & 0xFF;
if(sum == ref_sum)
furi_string_cat_printf(output, "Sum ok: 0x%hhX", ref_sum);
furi_string_cat_printf(output, "\r\nChkSm: 0x%02hhX ok", ref_sum);
else
furi_string_cat_printf(output, "Sum err: 0x%hhX vs 0x%hhX", ref_sum, sum);
furi_string_cat_printf(output, "\r\nChkSm: 0x%02hhX != 0x%02hhX error", ref_sum, sum);
}
void ws_protocol_decoder_oregon3_get_string(void* context, FuriString* output) {
furi_assert(context);
WSProtocolDecoderOregon3* instance = context;
furi_string_cat_printf(
output,
"%s\r\n"
"ID: 0x%04lX, ch: %d,\r\nbat: %d, rc: 0x%02lX\r\n",
instance->generic.protocol_name,
instance->generic.id,
instance->generic.channel,
instance->generic.battery_low,
(uint32_t)(instance->generic.data >> 4) & 0xFF);
if(instance->var_bits == 0) {
// Funny fix based on old funny code, not sure if this is needed
instance->generic.temp = WS_NO_TEMPERATURE;
instance->generic.humidity = WS_NO_HUMIDITY;
}
ws_block_generic_get_string(&instance->generic, output);
if(instance->var_bits > 0) {
furi_string_cat_printf(
output,
"Temp:%d.%d C Hum:%d%%",
(int16_t)instance->generic.temp,
abs(
((int16_t)(instance->generic.temp * 10) -
(((int16_t)instance->generic.temp) * 10))),
instance->generic.humidity);
oregon3_append_check_sum((uint32_t)instance->generic.data, instance->var_data, output);
}
}

View File

@@ -219,7 +219,7 @@ void ws_block_generic_get_string(WSBlockGeneric* instance, FuriString* output) {
furi_string_cat_printf(
output,
"Data:0x%lX%08lX\r\n",
"Data: 0x%lX%08lX\r\n",
(uint32_t)(instance->data >> 32),
(uint32_t)(instance->data));