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
+14 -1
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: ### Added:
- Apps: - Apps:
- Sub-GHz: Sub-GHz Playlist Creator (by @coolerUA) - 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) - NFC: Ventra ULEV1 parser (by @hazardousvoltage)
- Infrared: "Decode only" mode to ignore RAW signals, make buttons in learn scene more intuitive (by @WillyJL) - 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) - 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) - 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: ### 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
-1
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) - Advanced and optimized Level System (Up to 30 levels)
- Desktop Keybind system for full key and press/hold remapping - Desktop Keybind system for full key and press/hold remapping
- Storage backend with instant rename and virtual mounting for disk images - 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) - Expanded Sub-GHz App (Duplicate detection & Ignore, Autosave, History improvements)
- Improved Error Messages (Showing source file paths) - Improved Error Messages (Showing source file paths)
``` ```
@@ -19,8 +19,8 @@ enum SubGhzSettingIndex {
SubGhzSettingIndexIgnoreMagellan, SubGhzSettingIndexIgnoreMagellan,
SubGhzSettingIndexIgnorePrinceton, SubGhzSettingIndexIgnorePrinceton,
SubGhzSettingIndexIgnoreNiceFlorS, SubGhzSettingIndexIgnoreNiceFlorS,
SubGhzSettingIndexIgnoreWeather, // SubGhzSettingIndexIgnoreWeather,
SubGhzSettingIndexIgnoreTPMS, // SubGhzSettingIndexIgnoreTPMS,
SubGhzSettingIndexSound, SubGhzSettingIndexSound,
SubGhzSettingIndexResetToDefault, SubGhzSettingIndexResetToDefault,
SubGhzSettingIndexLock, 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); subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_NiceFlorS);
} }
static void subghz_scene_receiver_config_set_weather(VariableItem* item) { // static void subghz_scene_receiver_config_set_weather(VariableItem* item) {
subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Weather); // 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_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) { static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) {
furi_assert(context); 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_index(item, value_index);
variable_item_set_current_value_text(item, combobox_text[value_index]); variable_item_set_current_value_text(item, combobox_text[value_index]);
item = variable_item_list_add( // item = variable_item_list_add(
subghz->variable_item_list, // subghz->variable_item_list,
"Ignore Weather", // "Ignore Weather",
COMBO_BOX_COUNT, // COMBO_BOX_COUNT,
subghz_scene_receiver_config_set_weather, // subghz_scene_receiver_config_set_weather,
subghz); // subghz);
value_index = subghz_scene_receiver_config_ignore_filter_get_index( // value_index = subghz_scene_receiver_config_ignore_filter_get_index(
subghz->ignore_filter, SubGhzProtocolFilter_Weather); // subghz->ignore_filter, SubGhzProtocolFilter_Weather);
variable_item_set_current_value_index(item, value_index); // variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, combobox_text[value_index]); // variable_item_set_current_value_text(item, combobox_text[value_index]);
item = variable_item_list_add( // item = variable_item_list_add(
subghz->variable_item_list, // subghz->variable_item_list,
"Ignore TPMS", // "Ignore TPMS",
COMBO_BOX_COUNT, // COMBO_BOX_COUNT,
subghz_scene_receiver_config_set_tpms, // subghz_scene_receiver_config_set_tpms,
subghz); // subghz);
value_index = subghz_scene_receiver_config_ignore_filter_get_index( // value_index = subghz_scene_receiver_config_ignore_filter_get_index(
subghz->ignore_filter, SubGhzProtocolFilter_TPMS); // subghz->ignore_filter, SubGhzProtocolFilter_TPMS);
variable_item_set_current_value_index(item, value_index); // variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, combobox_text[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 :) // Enable speaker, will send all incoming noises and signals to speaker so you can listen how your remote sounds like :)
+5 -5
View File
@@ -266,11 +266,11 @@ bool subghz_history_add_to_history(
SubGhzHistoryItem* item = SubGhzHistoryItemArray_push_raw(instance->history->data); SubGhzHistoryItem* item = SubGhzHistoryItemArray_push_raw(instance->history->data);
item->preset = malloc(sizeof(SubGhzRadioPreset)); item->preset = malloc(sizeof(SubGhzRadioPreset));
item->type = decoder_base->protocol->type; item->type = decoder_base->protocol->type;
if(decoder_base->protocol->filter & SubGhzProtocolFilter_Weather) { // if(decoder_base->protocol->filter & SubGhzProtocolFilter_Weather) {
// Other code uses protocol type to check if signal is usable // // Other code uses protocol type to check if signal is usable
// so we can't change the actual protocol type, we fake it here // // so we can't change the actual protocol type, we fake it here
item->type = SubGhzProtocolWeatherStation; // item->type = SubGhzProtocolWeatherStation;
} // }
item->preset->frequency = preset->frequency; item->preset->frequency = preset->frequency;
item->preset->name = furi_string_alloc(); item->preset->name = furi_string_alloc();
furi_string_set(item->preset->name, preset->name); furi_string_set(item->preset->name, preset->name);
+1 -1
View File
@@ -38,7 +38,7 @@ static const Icon* ReceiverItemIcons[] = {
[SubGhzProtocolTypeUnknown] = &I_Quest_7x8, [SubGhzProtocolTypeUnknown] = &I_Quest_7x8,
[SubGhzProtocolTypeStatic] = &I_Static_9x7, [SubGhzProtocolTypeStatic] = &I_Static_9x7,
[SubGhzProtocolTypeDynamic] = &I_Dynamic_9x7, [SubGhzProtocolTypeDynamic] = &I_Dynamic_9x7,
[SubGhzProtocolWeatherStation] = &I_Weather_7x8, // [SubGhzProtocolWeatherStation] = &I_Weather_7x8,
[SubGhzProtocolTypeBinRAW] = &I_Raw_9x7, [SubGhzProtocolTypeBinRAW] = &I_Raw_9x7,
}; };
+27 -27
View File
@@ -43,33 +43,33 @@ const SubGhzProtocol* const subghz_protocol_registry_items[] = {
&subghz_protocol_dooya, &subghz_protocol_dooya,
&subghz_protocol_alutech_at_4n, &subghz_protocol_alutech_at_4n,
&subghz_protocol_kinggates_stylo_4k, &subghz_protocol_kinggates_stylo_4k,
&ws_protocol_infactory, // &ws_protocol_infactory,
&ws_protocol_thermopro_tx4, // &ws_protocol_thermopro_tx4,
&ws_protocol_nexus_th, // &ws_protocol_nexus_th,
&ws_protocol_gt_wt_02, // &ws_protocol_gt_wt_02,
&ws_protocol_gt_wt_03, // &ws_protocol_gt_wt_03,
&ws_protocol_acurite_606tx, // &ws_protocol_acurite_606tx,
&ws_protocol_acurite_609txc, // &ws_protocol_acurite_609txc,
&ws_protocol_acurite_986, // &ws_protocol_acurite_986,
&ws_protocol_bresser_3ch, // Should be before lacrosse // &ws_protocol_bresser_3ch, // Should be before lacrosse
&ws_protocol_lacrosse_tx, // &ws_protocol_lacrosse_tx,
&ws_protocol_lacrosse_tx141thbv2, // &ws_protocol_lacrosse_tx141thbv2,
&ws_protocol_oregon2, // &ws_protocol_oregon2,
&ws_protocol_oregon3, // &ws_protocol_oregon3,
&ws_protocol_acurite_592txr, // &ws_protocol_acurite_592txr,
&ws_protocol_ambient_weather, // &ws_protocol_ambient_weather,
&ws_protocol_solight_te44, // Should be before auriol // &ws_protocol_solight_te44, // Should be before auriol
&ws_protocol_auriol_th, // &ws_protocol_auriol_th,
&ws_protocol_oregon_v1, // &ws_protocol_oregon_v1,
&ws_protocol_tx_8300, // &ws_protocol_tx_8300,
&ws_protocol_wendox_w6726, // &ws_protocol_wendox_w6726,
&ws_protocol_auriol_ahfl, // &ws_protocol_auriol_ahfl,
&ws_protocol_kedsum_th, // &ws_protocol_kedsum_th,
&ws_protocol_emose601x, // &ws_protocol_emose601x,
&ws_protocol_acurite_5n1, // &ws_protocol_acurite_5n1,
&ws_protocol_vauno_en8822c, // &ws_protocol_vauno_en8822c,
&subghz_protocol_pocsag, // &subghz_protocol_pocsag,
&tpms_protocol_schrader_gg4, // &tpms_protocol_schrader_gg4,
&subghz_protocol_bin_raw, &subghz_protocol_bin_raw,
&subghz_protocol_mastercode, &subghz_protocol_mastercode,
&subghz_protocol_x10, &subghz_protocol_x10,
+1 -1
View File
@@ -4105,7 +4105,7 @@ Variable,+,I_Volup_8x6,const Icon,
Variable,+,I_WarningDolphinFlip_45x42,const Icon, Variable,+,I_WarningDolphinFlip_45x42,const Icon,
Variable,+,I_WarningDolphin_45x42,const Icon, Variable,+,I_WarningDolphin_45x42,const Icon,
Variable,-,I_Warning_30x23,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_down,const Icon,
Variable,+,I_arrow_nano_up,const Icon, Variable,+,I_arrow_nano_up,const Icon,
Variable,+,I_back_10px,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