Sub-GHz: Move Weather, POCSAG & TPMS to ext apps

This commit is contained in:
WillyJL
2025-06-24 04:08:16 +01:00
parent 99495b75f4
commit 9671c878bc
8 changed files with 78 additions and 65 deletions

View File

@@ -1,6 +1,18 @@
### Breaking Changes:
- Sub-GHz: Removed Weather Station, POCSAG and TPMS protocols from main app, now found in external apps (by @WillyJL)
- Momentum previously supported these external app's protocols in the main Sub-GHz app
- However, with more protocols added over time to the main app, they are now too many
- The Flipper CPU cannot keep up with all the data received with this number of protocols
- This caused some signals to not be received when they should, and in some cases could freeze the device
- Since Weather Station, POCSAG and TPMS are available as external apps, they're now removed from the main Sub-GHz app
- You can now find this functionality in `Apps > Sub-GHz`, where there are dedicated apps for these 3 functions
### Added:
- Apps:
- Sub-GHz: Sub-GHz Playlist Creator (by @coolerUA)
- Sub-GHz: Weather Station (by @Skorpionm)
- Sub-GHz: POCSAG Pager (by @xMasterX)
- Sub-GHz: TPMS Reader (by @wosk)
- NFC: Ventra ULEV1 parser (by @hazardousvoltage)
- Infrared: "Decode only" mode to ignore RAW signals, make buttons in learn scene more intuitive (by @WillyJL)
- UL: Sub-GHz: Add keeloq ironlogic aka il100 smart clone cloners support (by @xMasterX & Vitaly)
@@ -50,4 +62,5 @@
- UL: Fix Rename scene bug, that was replacing file name with random name when Rename is opened then closed then opened again (by @xMasterX)
### Removed:
- Nothing
- Sub-GHz: Removed Weather Station, POCSAG and TPMS protocols from main app, now found in external apps (by @WillyJL)
- See breaking changes notice above

View File

@@ -122,7 +122,6 @@ Note that this repo is always updated with the great work from our friends at [U
- Advanced and optimized Level System (Up to 30 levels)
- Desktop Keybind system for full key and press/hold remapping
- Storage backend with instant rename and virtual mounting for disk images
- Weather Station, POCSAG, TPMS protocols and more integrated into Sub-GHz
- Expanded Sub-GHz App (Duplicate detection & Ignore, Autosave, History improvements)
- Improved Error Messages (Showing source file paths)
```

View File

@@ -19,8 +19,8 @@ enum SubGhzSettingIndex {
SubGhzSettingIndexIgnoreMagellan,
SubGhzSettingIndexIgnorePrinceton,
SubGhzSettingIndexIgnoreNiceFlorS,
SubGhzSettingIndexIgnoreWeather,
SubGhzSettingIndexIgnoreTPMS,
// SubGhzSettingIndexIgnoreWeather,
// SubGhzSettingIndexIgnoreTPMS,
SubGhzSettingIndexSound,
SubGhzSettingIndexResetToDefault,
SubGhzSettingIndexLock,
@@ -431,12 +431,13 @@ static void subghz_scene_receiver_config_set_niceflors(VariableItem* item) {
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_NiceFlorS);
}
static void subghz_scene_receiver_config_set_weather(VariableItem* item) {
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Weather);
}
static void subghz_scene_receiver_config_set_tpms(VariableItem* item) {
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_TPMS);
}
// static void subghz_scene_receiver_config_set_weather(VariableItem* item) {
// subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Weather);
// }
// static void subghz_scene_receiver_config_set_tpms(VariableItem* item) {
// subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_TPMS);
// }
static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) {
furi_assert(context);
@@ -664,29 +665,29 @@ void subghz_scene_receiver_config_on_enter(void* context) {
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, combobox_text[value_index]);
item = variable_item_list_add(
subghz->variable_item_list,
"Ignore Weather",
COMBO_BOX_COUNT,
subghz_scene_receiver_config_set_weather,
subghz);
// item = variable_item_list_add(
// subghz->variable_item_list,
// "Ignore Weather",
// COMBO_BOX_COUNT,
// subghz_scene_receiver_config_set_weather,
// subghz);
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
subghz->ignore_filter, SubGhzProtocolFilter_Weather);
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, combobox_text[value_index]);
// value_index = subghz_scene_receiver_config_ignore_filter_get_index(
// subghz->ignore_filter, SubGhzProtocolFilter_Weather);
// variable_item_set_current_value_index(item, value_index);
// variable_item_set_current_value_text(item, combobox_text[value_index]);
item = variable_item_list_add(
subghz->variable_item_list,
"Ignore TPMS",
COMBO_BOX_COUNT,
subghz_scene_receiver_config_set_tpms,
subghz);
// item = variable_item_list_add(
// subghz->variable_item_list,
// "Ignore TPMS",
// COMBO_BOX_COUNT,
// subghz_scene_receiver_config_set_tpms,
// subghz);
value_index = subghz_scene_receiver_config_ignore_filter_get_index(
subghz->ignore_filter, SubGhzProtocolFilter_TPMS);
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, combobox_text[value_index]);
// value_index = subghz_scene_receiver_config_ignore_filter_get_index(
// subghz->ignore_filter, SubGhzProtocolFilter_TPMS);
// variable_item_set_current_value_index(item, value_index);
// variable_item_set_current_value_text(item, combobox_text[value_index]);
}
// Enable speaker, will send all incoming noises and signals to speaker so you can listen how your remote sounds like :)

View File

@@ -266,11 +266,11 @@ bool subghz_history_add_to_history(
SubGhzHistoryItem* item = SubGhzHistoryItemArray_push_raw(instance->history->data);
item->preset = malloc(sizeof(SubGhzRadioPreset));
item->type = decoder_base->protocol->type;
if(decoder_base->protocol->filter & SubGhzProtocolFilter_Weather) {
// Other code uses protocol type to check if signal is usable
// so we can't change the actual protocol type, we fake it here
item->type = SubGhzProtocolWeatherStation;
}
// if(decoder_base->protocol->filter & SubGhzProtocolFilter_Weather) {
// // Other code uses protocol type to check if signal is usable
// // so we can't change the actual protocol type, we fake it here
// item->type = SubGhzProtocolWeatherStation;
// }
item->preset->frequency = preset->frequency;
item->preset->name = furi_string_alloc();
furi_string_set(item->preset->name, preset->name);

View File

@@ -38,7 +38,7 @@ static const Icon* ReceiverItemIcons[] = {
[SubGhzProtocolTypeUnknown] = &I_Quest_7x8,
[SubGhzProtocolTypeStatic] = &I_Static_9x7,
[SubGhzProtocolTypeDynamic] = &I_Dynamic_9x7,
[SubGhzProtocolWeatherStation] = &I_Weather_7x8,
// [SubGhzProtocolWeatherStation] = &I_Weather_7x8,
[SubGhzProtocolTypeBinRAW] = &I_Raw_9x7,
};

View File

@@ -43,33 +43,33 @@ const SubGhzProtocol* const subghz_protocol_registry_items[] = {
&subghz_protocol_dooya,
&subghz_protocol_alutech_at_4n,
&subghz_protocol_kinggates_stylo_4k,
&ws_protocol_infactory,
&ws_protocol_thermopro_tx4,
&ws_protocol_nexus_th,
&ws_protocol_gt_wt_02,
&ws_protocol_gt_wt_03,
&ws_protocol_acurite_606tx,
&ws_protocol_acurite_609txc,
&ws_protocol_acurite_986,
&ws_protocol_bresser_3ch, // Should be before lacrosse
&ws_protocol_lacrosse_tx,
&ws_protocol_lacrosse_tx141thbv2,
&ws_protocol_oregon2,
&ws_protocol_oregon3,
&ws_protocol_acurite_592txr,
&ws_protocol_ambient_weather,
&ws_protocol_solight_te44, // Should be before auriol
&ws_protocol_auriol_th,
&ws_protocol_oregon_v1,
&ws_protocol_tx_8300,
&ws_protocol_wendox_w6726,
&ws_protocol_auriol_ahfl,
&ws_protocol_kedsum_th,
&ws_protocol_emose601x,
&ws_protocol_acurite_5n1,
&ws_protocol_vauno_en8822c,
&subghz_protocol_pocsag,
&tpms_protocol_schrader_gg4,
// &ws_protocol_infactory,
// &ws_protocol_thermopro_tx4,
// &ws_protocol_nexus_th,
// &ws_protocol_gt_wt_02,
// &ws_protocol_gt_wt_03,
// &ws_protocol_acurite_606tx,
// &ws_protocol_acurite_609txc,
// &ws_protocol_acurite_986,
// &ws_protocol_bresser_3ch, // Should be before lacrosse
// &ws_protocol_lacrosse_tx,
// &ws_protocol_lacrosse_tx141thbv2,
// &ws_protocol_oregon2,
// &ws_protocol_oregon3,
// &ws_protocol_acurite_592txr,
// &ws_protocol_ambient_weather,
// &ws_protocol_solight_te44, // Should be before auriol
// &ws_protocol_auriol_th,
// &ws_protocol_oregon_v1,
// &ws_protocol_tx_8300,
// &ws_protocol_wendox_w6726,
// &ws_protocol_auriol_ahfl,
// &ws_protocol_kedsum_th,
// &ws_protocol_emose601x,
// &ws_protocol_acurite_5n1,
// &ws_protocol_vauno_en8822c,
// &subghz_protocol_pocsag,
// &tpms_protocol_schrader_gg4,
&subghz_protocol_bin_raw,
&subghz_protocol_mastercode,
&subghz_protocol_x10,

View File

@@ -4105,7 +4105,7 @@ Variable,+,I_Volup_8x6,const Icon,
Variable,+,I_WarningDolphinFlip_45x42,const Icon,
Variable,+,I_WarningDolphin_45x42,const Icon,
Variable,-,I_Warning_30x23,const Icon,
Variable,+,I_Weather_7x8,const Icon,
Variable,-,I_Weather_7x8,const Icon,
Variable,+,I_arrow_nano_down,const Icon,
Variable,+,I_arrow_nano_up,const Icon,
Variable,+,I_back_10px,const Icon,
1 entry status name type params
4105 Variable + I_WarningDolphinFlip_45x42 const Icon
4106 Variable + I_WarningDolphin_45x42 const Icon
4107 Variable - I_Warning_30x23 const Icon
4108 Variable + - I_Weather_7x8 const Icon
4109 Variable + I_arrow_nano_down const Icon
4110 Variable + I_arrow_nano_up const Icon
4111 Variable + I_back_10px const Icon