diff --git a/applications/main/subghz/helpers/subghz_custom_event.h b/applications/main/subghz/helpers/subghz_custom_event.h index 1e1925834..04cc093ff 100644 --- a/applications/main/subghz/helpers/subghz_custom_event.h +++ b/applications/main/subghz/helpers/subghz_custom_event.h @@ -25,8 +25,12 @@ typedef enum { SubmenuIndexStilmatic, SubmenuIndexDTMNeo433, SubmenuIndexGibidi433, + SubmenuIndexNiceMHouse_433_92, + SubmenuIndexJCM_433_92, + SubmenuIndexNormstahl_433_92, SubmenuIndexGSN, SubmenuIndexAprimatic, + SubmenuIndexHCS101_433_92, SubmenuIndexANMotorsAT4, SubmenuIndexAlutechAT4N, SubmenuIndexNiceFlo12bit, @@ -51,9 +55,9 @@ typedef enum { SubmenuIndexGateTX, SubmenuIndexDoorHan_315_00, SubmenuIndexDoorHan_433_92, - SubmenuIndexLiftMaster_315_00, - SubmenuIndexLiftMaster_390_00, - SubmenuIndexLiftMaster_433_00, + SubmenuIndexSecPlus_v1_315_00, + SubmenuIndexSecPlus_v1_390_00, + SubmenuIndexSecPlus_v1_433_00, SubmenuIndexSecPlus_v2_310_00, SubmenuIndexSecPlus_v2_315_00, SubmenuIndexSecPlus_v2_390_00, diff --git a/applications/main/subghz/scenes/subghz_scene_receiver_config.c b/applications/main/subghz/scenes/subghz_scene_receiver_config.c index f16508c2c..2d7f5014d 100644 --- a/applications/main/subghz/scenes/subghz_scene_receiver_config.c +++ b/applications/main/subghz/scenes/subghz_scene_receiver_config.c @@ -5,19 +5,21 @@ enum SubGhzSettingIndex { SubGhzSettingIndexFrequency, - SubGhzSettingIndexHopping, SubGhzSettingIndexModulation, + SubGhzSettingIndexHopping, + SubGhzSettingIndexRAWSound = SubGhzSettingIndexHopping, SubGhzSettingIndexBinRAW, + SubGhzSettingIndexRAWRSSIThreshold = SubGhzSettingIndexBinRAW, SubGhzSettingIndexIgnoreStarline, SubGhzSettingIndexIgnoreCars, SubGhzSettingIndexIgnoreMagellan, + SubGhzSettingIndexIgnorePrinceton, + SubGhzSettingIndexIgnoreNiceFlorS, SubGhzSettingIndexIgnoreWeather, SubGhzSettingIndexIgnoreTPMS, - SubGhzSettingIndexIgnorePrinceton, SubGhzSettingIndexSound, SubGhzSettingIndexResetToDefault, SubGhzSettingIndexLock, - SubGhzSettingIndexRAWThresholdRSSI, }; #define RAW_THRESHOLD_RSSI_COUNT 11 @@ -71,8 +73,9 @@ const char* const combobox_text[COMBO_BOX_COUNT] = { "ON", }; -static void - subghz_scene_receiver_config_set_ignore_filter(VariableItem* item, SubGhzProtocolFlag filter) { +static void subghz_scene_receiver_config_set_ignore_filter( + VariableItem* item, + SubGhzProtocolFilter filter) { SubGhz* subghz = variable_item_get_context(item); uint8_t index = variable_item_get_current_value_index(item); @@ -265,32 +268,36 @@ static void subghz_scene_receiver_config_set_raw_threshold_rssi(VariableItem* it } static inline bool subghz_scene_receiver_config_ignore_filter_get_index( - SubGhzProtocolFlag filter, - SubGhzProtocolFlag flag) { + SubGhzProtocolFilter filter, + SubGhzProtocolFilter flag) { return READ_BIT(filter, flag) > 0; } static void subghz_scene_receiver_config_set_starline(VariableItem* item) { - subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_StarLine); + subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_StarLine); } static void subghz_scene_receiver_config_set_auto_alarms(VariableItem* item) { - subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_AutoAlarms); + subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_AutoAlarms); } static void subghz_scene_receiver_config_set_magellan(VariableItem* item) { - subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_Magellan); -} - -static void subghz_scene_receiver_config_set_weather(VariableItem* item) { - subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_Weather); -} -static void subghz_scene_receiver_config_set_tpms(VariableItem* item) { - subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_TPMS); + subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Magellan); } static void subghz_scene_receiver_config_set_princeton(VariableItem* item) { - subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFlag_Princeton); + subghz_scene_receiver_config_set_ignore_filter(item, SubGhzProtocolFilter_Princeton); +} + +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_var_list_enter_callback(void* context, uint32_t index) { @@ -351,7 +358,7 @@ void subghz_scene_receiver_config_on_enter(void* context) { item = variable_item_list_add( subghz->variable_item_list, - "Frequency:", + "Frequency", subghz_setting_get_frequency_count(setting), subghz_scene_receiver_config_set_frequency, subghz); @@ -371,7 +378,7 @@ void subghz_scene_receiver_config_on_enter(void* context) { item = variable_item_list_add( subghz->variable_item_list, - "Modulation:", + "Modulation", subghz_setting_get_preset_count(setting), subghz_scene_receiver_config_set_preset, subghz); @@ -386,7 +393,7 @@ void subghz_scene_receiver_config_on_enter(void* context) { // Hopping item = variable_item_list_add( subghz->variable_item_list, - "Hopping:", + "Hopping", COMBO_BOX_COUNT, subghz_scene_receiver_config_set_hopping_running, subghz); @@ -400,7 +407,7 @@ void subghz_scene_receiver_config_on_enter(void* context) { SubGhzCustomEventManagerSet) { item = variable_item_list_add( subghz->variable_item_list, - "Bin RAW:", + "Bin RAW", COMBO_BOX_COUNT, subghz_scene_receiver_config_set_bin_raw, subghz); @@ -414,73 +421,85 @@ void subghz_scene_receiver_config_on_enter(void* context) { SubGhzCustomEventManagerSet) { item = variable_item_list_add( subghz->variable_item_list, - "Ignore Starline:", + "Ignore Starline", COMBO_BOX_COUNT, subghz_scene_receiver_config_set_starline, subghz); value_index = subghz_scene_receiver_config_ignore_filter_get_index( - subghz->ignore_filter, SubGhzProtocolFlag_StarLine); + subghz->ignore_filter, SubGhzProtocolFilter_StarLine); 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 Cars:", + "Ignore Cars", COMBO_BOX_COUNT, subghz_scene_receiver_config_set_auto_alarms, subghz); value_index = subghz_scene_receiver_config_ignore_filter_get_index( - subghz->ignore_filter, SubGhzProtocolFlag_AutoAlarms); + subghz->ignore_filter, SubGhzProtocolFilter_AutoAlarms); 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 Magellan:", + "Ignore Magellan", COMBO_BOX_COUNT, subghz_scene_receiver_config_set_magellan, subghz); value_index = subghz_scene_receiver_config_ignore_filter_get_index( - subghz->ignore_filter, SubGhzProtocolFlag_Magellan); + subghz->ignore_filter, SubGhzProtocolFilter_Magellan); 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); - - value_index = subghz_scene_receiver_config_ignore_filter_get_index( - subghz->ignore_filter, SubGhzProtocolFlag_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); - - value_index = subghz_scene_receiver_config_ignore_filter_get_index( - subghz->ignore_filter, SubGhzProtocolFlag_TPMS); - 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 Princeton:", + "Ignore Princeton", COMBO_BOX_COUNT, subghz_scene_receiver_config_set_princeton, subghz); value_index = subghz_scene_receiver_config_ignore_filter_get_index( - subghz->ignore_filter, SubGhzProtocolFlag_Princeton); + subghz->ignore_filter, SubGhzProtocolFilter_Princeton); + 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 Nice Flor-S / Nice One", + COMBO_BOX_COUNT, + subghz_scene_receiver_config_set_niceflors, + subghz); + + value_index = subghz_scene_receiver_config_ignore_filter_get_index( + subghz->ignore_filter, SubGhzProtocolFilter_NiceFlorS); + 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); + + 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); + + 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]); } @@ -488,7 +507,7 @@ void subghz_scene_receiver_config_on_enter(void* context) { // Enable speaker, will send all incoming noises and signals to speaker so you can listen how your remote sounds like :) item = variable_item_list_add( subghz->variable_item_list, - "Sound:", + "Sound", COMBO_BOX_COUNT, subghz_scene_receiver_config_set_speaker, subghz); diff --git a/applications/main/subghz/scenes/subghz_scene_set_type.c b/applications/main/subghz/scenes/subghz_scene_set_type.c index d31978015..28db55d75 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_type.c +++ b/applications/main/subghz/scenes/subghz_scene_set_type.c @@ -67,6 +67,12 @@ void subghz_scene_set_type_on_enter(void* context) { SubmenuIndexAlutechAT4N, subghz_scene_set_type_submenu_callback, subghz); + submenu_add_item( + subghz->submenu, + "KL: HCS101 433MHz", + SubmenuIndexHCS101_433_92, + subghz_scene_set_type_submenu_callback, + subghz); submenu_add_item( subghz->submenu, "KL: DoorHan 315MHz", @@ -163,6 +169,24 @@ void subghz_scene_set_type_on_enter(void* context) { SubmenuIndexElmesElectronic, subghz_scene_set_type_submenu_callback, subghz); + submenu_add_item( + subghz->submenu, + "KL: Normstahl 433MHz", + SubmenuIndexNormstahl_433_92, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "KL: JCM Tech 433MHz", + SubmenuIndexJCM_433_92, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "KL: Nice Mhouse 433MHz", + SubmenuIndexNiceMHouse_433_92, + subghz_scene_set_type_submenu_callback, + subghz); submenu_add_item( subghz->submenu, "KL: Nice Smilo 433MHz", @@ -278,19 +302,19 @@ void subghz_scene_set_type_on_enter(void* context) { submenu_add_item( subghz->submenu, "Security+1.0 315MHz", - SubmenuIndexLiftMaster_315_00, + SubmenuIndexSecPlus_v1_315_00, subghz_scene_set_type_submenu_callback, subghz); submenu_add_item( subghz->submenu, "Security+1.0 390MHz", - SubmenuIndexLiftMaster_390_00, + SubmenuIndexSecPlus_v1_390_00, subghz_scene_set_type_submenu_callback, subghz); submenu_add_item( subghz->submenu, "Security+1.0 433MHz", - SubmenuIndexLiftMaster_433_00, + SubmenuIndexSecPlus_v1_433_00, subghz_scene_set_type_submenu_callback, subghz); submenu_add_item( @@ -371,7 +395,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { subghz->txrx, "AM650", 433920000, SUBGHZ_PROTOCOL_CAME_NAME, key, 24); break; case SubmenuIndexCAME12bit868: - key = (key & 0x0000FFF0) | 0x1; //btn 0x1, 0x2, 0x4 + key = (key & 0x00000FF0) | 0x1; //btn 0x1, 0x2, 0x4 generated_protocol = subghz_txrx_gen_data_protocol( subghz->txrx, "AM650", 868350000, SUBGHZ_PROTOCOL_CAME_NAME, key, 12); break; @@ -702,15 +726,51 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); } break; - case SubmenuIndexLiftMaster_315_00: + case SubmenuIndexNiceMHouse_433_92: + generated_protocol = subghz_txrx_gen_keeloq_protocol( + subghz->txrx, "AM650", 433920000, key & 0x00FFFFFF, 0x2, 0x0003, "NICE_MHOUSE"); + if(!generated_protocol) { + furi_string_set( + subghz->error_str, "Function requires\nan SD card with\nfresh databases."); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); + } + break; + case SubmenuIndexJCM_433_92: + generated_protocol = subghz_txrx_gen_keeloq_protocol( + subghz->txrx, "AM650", 433920000, key & 0x00FFFFFF, 0x2, 0x0003, "JCM_Tech"); + if(!generated_protocol) { + furi_string_set( + subghz->error_str, "Function requires\nan SD card with\nfresh databases."); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); + } + break; + case SubmenuIndexNormstahl_433_92: + generated_protocol = subghz_txrx_gen_keeloq_protocol( + subghz->txrx, "AM650", 433920000, key & 0x00FFFFFF, 0x2, 0x0003, "Normstahl"); + if(!generated_protocol) { + furi_string_set( + subghz->error_str, "Function requires\nan SD card with\nfresh databases."); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); + } + break; + case SubmenuIndexHCS101_433_92: + generated_protocol = subghz_txrx_gen_keeloq_protocol( + subghz->txrx, "AM650", 433920000, key & 0x000FFFFF, 0x2, 0x0003, "HCS101"); + if(!generated_protocol) { + furi_string_set( + subghz->error_str, "Function requires\nan SD card with\nfresh databases."); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); + } + break; + case SubmenuIndexSecPlus_v1_315_00: generated_protocol = subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 315000000); break; - case SubmenuIndexLiftMaster_390_00: + case SubmenuIndexSecPlus_v1_390_00: generated_protocol = subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 390000000); break; - case SubmenuIndexLiftMaster_433_00: + case SubmenuIndexSecPlus_v1_433_00: generated_protocol = subghz_txrx_gen_secplus_v1_protocol(subghz->txrx, "AM650", 433920000); break; @@ -730,6 +790,7 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { subghz->txrx, "AM650", 390000000, key, 0x68, 0xE500000); break; case SubmenuIndexSecPlus_v2_433_00: + key = (key & 0x7FFFF3FC); // 850LM pairing generated_protocol = subghz_txrx_gen_secplus_v2_protocol( subghz->txrx, "AM650", 433920000, key, 0x68, 0xE500000); break; diff --git a/applications/main/subghz/subghz_i.h b/applications/main/subghz/subghz_i.h index e50d3169e..0cc5736a6 100644 --- a/applications/main/subghz/subghz_i.h +++ b/applications/main/subghz/subghz_i.h @@ -83,7 +83,7 @@ struct SubGhz { SubGhzLastSettings* last_settings; SubGhzProtocolFlag filter; - SubGhzProtocolFlag ignore_filter; + SubGhzProtocolFilter ignore_filter; FuriString* error_str; SubGhzLock lock; diff --git a/applications/main/subghz/subghz_last_settings.c b/applications/main/subghz/subghz_last_settings.c index dc4e3a5ff..675281742 100644 --- a/applications/main/subghz/subghz_last_settings.c +++ b/applications/main/subghz/subghz_last_settings.c @@ -314,7 +314,7 @@ void subghz_last_settings_log(SubGhzLastSettings* instance) { TAG, "Frequency: %03ld.%02ld, FeedbackLevel: %ld, FATrigger: %.2f, External: %s, ExtPower: %s, TimestampNames: %s, ExtPowerAmp: %s,\n" "GPSBaudrate: %ld, Hopping: %s,\nPreset: %ld, RSSI: %.2f, " - "Starline: %s, Cars: %s, Magellan: %s, BinRAW: %s", + "BinRAW: %s, Starline: %s, Cars: %s, Magellan: %s, NiceFloR-S: %s, Weather: %s, TPMS: %s", instance->frequency / 1000000 % 1000, instance->frequency / 10000 % 100, instance->frequency_analyzer_feedback_level, @@ -327,11 +327,17 @@ void subghz_last_settings_log(SubGhzLastSettings* instance) { bool_to_char(instance->enable_hopping), instance->preset_index, (double)instance->rssi, + subghz_last_settings_log_filter_get_index(instance->filter, SubGhzProtocolFlag_BinRAW), subghz_last_settings_log_filter_get_index( - instance->ignore_filter, SubGhzProtocolFlag_StarLine), + instance->ignore_filter, SubGhzProtocolFilter_StarLine), subghz_last_settings_log_filter_get_index( - instance->ignore_filter, SubGhzProtocolFlag_AutoAlarms), + instance->ignore_filter, SubGhzProtocolFilter_AutoAlarms), subghz_last_settings_log_filter_get_index( - instance->ignore_filter, SubGhzProtocolFlag_Magellan), - subghz_last_settings_log_filter_get_index(instance->filter, SubGhzProtocolFlag_BinRAW)); + instance->ignore_filter, SubGhzProtocolFilter_Magellan), + subghz_last_settings_log_filter_get_index( + instance->ignore_filter, SubGhzProtocolFilter_NiceFlorS), + subghz_last_settings_log_filter_get_index( + instance->ignore_filter, SubGhzProtocolFilter_Weather), + subghz_last_settings_log_filter_get_index( + instance->ignore_filter, SubGhzProtocolFilter_TPMS)); } diff --git a/furi/core/check.c b/furi/core/check.c index 8888eddfb..a24384e7c 100644 --- a/furi/core/check.c +++ b/furi/core/check.c @@ -136,10 +136,12 @@ FURI_NORETURN void __furi_crash() { if(__furi_check_message == NULL) { __furi_check_message = "Fatal Error"; +#ifndef __FURI_TRACE } else if(__furi_check_message == (void*)__FURI_ASSERT_MESSAGE_FLAG) { __furi_check_message = "furi_assert failed"; } else if(__furi_check_message == (void*)__FURI_CHECK_MESSAGE_FLAG) { __furi_check_message = "furi_check failed"; +#endif } furi_hal_console_puts("\r\n\033[0;31m[CRASH]"); diff --git a/furi/core/check.h b/furi/core/check.h index 004422e80..8af418962 100644 --- a/furi/core/check.h +++ b/furi/core/check.h @@ -23,9 +23,16 @@ extern "C" { #define FURI_NORETURN noreturn #endif +#define __FURI_TRACE + // Flags instead of pointers will save ~4 bytes on furi_assert and furi_check calls. +#ifndef __FURI_TRACE #define __FURI_ASSERT_MESSAGE_FLAG (0x01) #define __FURI_CHECK_MESSAGE_FLAG (0x02) +#else +#define __FURI_ASSERT_MESSAGE_FLAG __FILE__ +#define __FURI_CHECK_MESSAGE_FLAG __FILE__ +#endif /** Crash system */ FURI_NORETURN void __furi_crash(); diff --git a/lib/subghz/protocols/acurite_592txr.c b/lib/subghz/protocols/acurite_592txr.c index 02cd7052d..8bca10442 100644 --- a/lib/subghz/protocols/acurite_592txr.c +++ b/lib/subghz/protocols/acurite_592txr.c @@ -86,11 +86,13 @@ const SubGhzProtocol ws_protocol_acurite_592txr = { .name = WS_PROTOCOL_ACURITE_592TXR_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, .decoder = &ws_protocol_acurite_592txr_decoder, .encoder = &ws_protocol_acurite_592txr_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_acurite_592txr_alloc(SubGhzEnvironment* environment) { @@ -415,4 +417,4 @@ LevelDuration ws_protocol_encoder_acurite_592txr_yield(void* context) { void ws_protocol_encoder_acurite_592txr_stop(void* context) { WSProtocolEncoderAcurite_592TXR* instance = context; instance->encoder.is_running = false; -} \ No newline at end of file +} diff --git a/lib/subghz/protocols/acurite_606tx.c b/lib/subghz/protocols/acurite_606tx.c index b324fae6c..7e56cebd2 100644 --- a/lib/subghz/protocols/acurite_606tx.c +++ b/lib/subghz/protocols/acurite_606tx.c @@ -69,11 +69,13 @@ const SubGhzProtocol ws_protocol_acurite_606tx = { .name = WS_PROTOCOL_ACURITE_606TX_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_acurite_606tx_decoder, .encoder = &ws_protocol_acurite_606tx_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_acurite_606tx_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/acurite_609txc.c b/lib/subghz/protocols/acurite_609txc.c index 8ae82b62b..097c6043c 100644 --- a/lib/subghz/protocols/acurite_609txc.c +++ b/lib/subghz/protocols/acurite_609txc.c @@ -70,11 +70,13 @@ const SubGhzProtocol ws_protocol_acurite_609txc = { .name = WS_PROTOCOL_ACURITE_609TXC_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_acurite_609txc_decoder, .encoder = &ws_protocol_acurite_609txc_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_acurite_609txc_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/ambient_weather.c b/lib/subghz/protocols/ambient_weather.c index 793ad615b..9d3f63df9 100644 --- a/lib/subghz/protocols/ambient_weather.c +++ b/lib/subghz/protocols/ambient_weather.c @@ -84,11 +84,13 @@ const SubGhzProtocol ws_protocol_ambient_weather = { .name = WS_PROTOCOL_AMBIENT_WEATHER_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_ambient_weather_decoder, .encoder = &ws_protocol_ambient_weather_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_ambient_weather_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/auriol_ahfl.c b/lib/subghz/protocols/auriol_ahfl.c index d6246bec6..c43a44af1 100644 --- a/lib/subghz/protocols/auriol_ahfl.c +++ b/lib/subghz/protocols/auriol_ahfl.c @@ -81,11 +81,13 @@ const SubGhzProtocol ws_protocol_auriol_ahfl = { .name = WS_PROTOCOL_AURIOL_AHFL_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_auriol_ahfl_decoder, .encoder = &ws_protocol_auriol_ahfl_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_auriol_ahfl_alloc(SubGhzEnvironment* environment) { @@ -252,4 +254,4 @@ void ws_protocol_decoder_auriol_ahfl_get_string(void* context, FuriString* outpu instance->generic.battery_low, (double)instance->generic.temp, instance->generic.humidity); -} \ No newline at end of file +} diff --git a/lib/subghz/protocols/auriol_hg0601a.c b/lib/subghz/protocols/auriol_hg0601a.c index b7fd97bfd..1c9d9c032 100644 --- a/lib/subghz/protocols/auriol_hg0601a.c +++ b/lib/subghz/protocols/auriol_hg0601a.c @@ -80,11 +80,13 @@ const SubGhzProtocol ws_protocol_auriol_th = { .name = WS_PROTOCOL_AURIOL_TH_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_auriol_th_decoder, .encoder = &ws_protocol_auriol_th_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_auriol_th_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/gt_wt_02.c b/lib/subghz/protocols/gt_wt_02.c index 88f9ed2a7..213516679 100644 --- a/lib/subghz/protocols/gt_wt_02.c +++ b/lib/subghz/protocols/gt_wt_02.c @@ -83,11 +83,13 @@ const SubGhzProtocol ws_protocol_gt_wt_02 = { .name = WS_PROTOCOL_GT_WT_02_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_gt_wt_02_decoder, .encoder = &ws_protocol_gt_wt_02_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_gt_wt_02_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/gt_wt_03.c b/lib/subghz/protocols/gt_wt_03.c index 8359f5b32..cb0c94af3 100644 --- a/lib/subghz/protocols/gt_wt_03.c +++ b/lib/subghz/protocols/gt_wt_03.c @@ -109,11 +109,13 @@ const SubGhzProtocol ws_protocol_gt_wt_03 = { .name = WS_PROTOCOL_GT_WT_03_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_gt_wt_03_decoder, .encoder = &ws_protocol_gt_wt_03_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_gt_wt_03_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/infactory.c b/lib/subghz/protocols/infactory.c index 7722b772c..f1ee3432b 100644 --- a/lib/subghz/protocols/infactory.c +++ b/lib/subghz/protocols/infactory.c @@ -94,11 +94,13 @@ const SubGhzProtocol ws_protocol_infactory = { .name = WS_PROTOCOL_INFACTORY_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_infactory_decoder, .encoder = &ws_protocol_infactory_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_infactory_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/kia.c b/lib/subghz/protocols/kia.c index 6988a0ef2..1a92c8fe4 100644 --- a/lib/subghz/protocols/kia.c +++ b/lib/subghz/protocols/kia.c @@ -63,11 +63,12 @@ const SubGhzProtocolEncoder subghz_protocol_kia_encoder = { const SubGhzProtocol subghz_protocol_kia = { .name = SUBGHZ_PROTOCOL_KIA_NAME, .type = SubGhzProtocolTypeDynamic, - .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable | - SubGhzProtocolFlag_AutoAlarms, + .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable, .decoder = &subghz_protocol_kia_decoder, .encoder = &subghz_protocol_kia_encoder, + + .filter = SubGhzProtocolFilter_AutoAlarms, }; void* subghz_protocol_decoder_kia_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/lacrosse_tx.c b/lib/subghz/protocols/lacrosse_tx.c index 316ed7aaf..380ce0877 100644 --- a/lib/subghz/protocols/lacrosse_tx.c +++ b/lib/subghz/protocols/lacrosse_tx.c @@ -98,10 +98,12 @@ const SubGhzProtocol ws_protocol_lacrosse_tx = { .name = WS_PROTOCOL_LACROSSE_TX_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable, .decoder = &ws_protocol_lacrosse_tx_decoder, .encoder = &ws_protocol_lacrosse_tx_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_lacrosse_tx_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/lacrosse_tx141thbv2.c b/lib/subghz/protocols/lacrosse_tx141thbv2.c index 98f7d6343..8825d922a 100644 --- a/lib/subghz/protocols/lacrosse_tx141thbv2.c +++ b/lib/subghz/protocols/lacrosse_tx141thbv2.c @@ -76,11 +76,13 @@ const SubGhzProtocol ws_protocol_lacrosse_tx141thbv2 = { .name = WS_PROTOCOL_LACROSSE_TX141THBV2_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_lacrosse_tx141thbv2_decoder, .encoder = &ws_protocol_lacrosse_tx141thbv2_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_lacrosse_tx141thbv2_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/magellan.c b/lib/subghz/protocols/magellan.c index a8c7f6342..80f5f871a 100644 --- a/lib/subghz/protocols/magellan.c +++ b/lib/subghz/protocols/magellan.c @@ -64,11 +64,12 @@ const SubGhzProtocol subghz_protocol_magellan = { .name = SUBGHZ_PROTOCOL_MAGELLAN_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send | - SubGhzProtocolFlag_Magellan, + SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, .decoder = &subghz_protocol_magellan_decoder, .encoder = &subghz_protocol_magellan_encoder, + + .filter = SubGhzProtocolFilter_Magellan, }; void* subghz_protocol_encoder_magellan_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/nexus_th.c b/lib/subghz/protocols/nexus_th.c index 4ff687ecb..9307194bb 100644 --- a/lib/subghz/protocols/nexus_th.c +++ b/lib/subghz/protocols/nexus_th.c @@ -356,9 +356,11 @@ const SubGhzProtocol ws_protocol_nexus_th = { .name = WS_PROTOCOL_NEXUS_TH_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, .decoder = &ws_protocol_nexus_th_decoder, .encoder = &ws_protocol_nexus_th_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; diff --git a/lib/subghz/protocols/nice_flor_s.c b/lib/subghz/protocols/nice_flor_s.c index 8c4a22858..39ae23f27 100644 --- a/lib/subghz/protocols/nice_flor_s.c +++ b/lib/subghz/protocols/nice_flor_s.c @@ -84,6 +84,8 @@ const SubGhzProtocol subghz_protocol_nice_flor_s = { .decoder = &subghz_protocol_nice_flor_s_decoder, .encoder = &subghz_protocol_nice_flor_s_encoder, + + .filter = SubGhzProtocolFilter_NiceFlorS, }; static void subghz_protocol_nice_flor_s_remote_controller( diff --git a/lib/subghz/protocols/oregon2.c b/lib/subghz/protocols/oregon2.c index ebba869f1..57adae576 100644 --- a/lib/subghz/protocols/oregon2.c +++ b/lib/subghz/protocols/oregon2.c @@ -424,7 +424,9 @@ const SubGhzProtocol ws_protocol_oregon2 = { .name = WS_PROTOCOL_OREGON2_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | - SubGhzProtocolFlag_Weather | SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, .decoder = &ws_protocol_oregon2_decoder, + + .filter = SubGhzProtocolFilter_Weather, }; diff --git a/lib/subghz/protocols/oregon3.c b/lib/subghz/protocols/oregon3.c index 67ddec252..24498f16a 100644 --- a/lib/subghz/protocols/oregon3.c +++ b/lib/subghz/protocols/oregon3.c @@ -360,7 +360,9 @@ const SubGhzProtocol ws_protocol_oregon3 = { .name = WS_PROTOCOL_OREGON3_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | - SubGhzProtocolFlag_Weather | SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, .decoder = &ws_protocol_oregon3_decoder, + + .filter = SubGhzProtocolFilter_Weather, }; diff --git a/lib/subghz/protocols/oregon_v1.c b/lib/subghz/protocols/oregon_v1.c index b68cdf170..5967e9625 100644 --- a/lib/subghz/protocols/oregon_v1.c +++ b/lib/subghz/protocols/oregon_v1.c @@ -95,11 +95,13 @@ const SubGhzProtocol ws_protocol_oregon_v1 = { .name = WS_PROTOCOL_OREGON_V1_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_oregon_v1_decoder, .encoder = &ws_protocol_oregon_v1_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_oregon_v1_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/princeton.c b/lib/subghz/protocols/princeton.c index 1a7fe53ed..ae71e81f6 100644 --- a/lib/subghz/protocols/princeton.c +++ b/lib/subghz/protocols/princeton.c @@ -73,10 +73,12 @@ const SubGhzProtocol subghz_protocol_princeton = { .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_868 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | - SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send | SubGhzProtocolFlag_Princeton, + SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, .decoder = &subghz_protocol_princeton_decoder, .encoder = &subghz_protocol_princeton_encoder, + + .filter = SubGhzProtocolFilter_Princeton, }; void* subghz_protocol_encoder_princeton_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/scher_khan.c b/lib/subghz/protocols/scher_khan.c index 53b7935d6..e5de4e081 100644 --- a/lib/subghz/protocols/scher_khan.c +++ b/lib/subghz/protocols/scher_khan.c @@ -70,10 +70,12 @@ const SubGhzProtocol subghz_protocol_scher_khan = { .name = SUBGHZ_PROTOCOL_SCHER_KHAN_NAME, .type = SubGhzProtocolTypeDynamic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_FM | SubGhzProtocolFlag_Decodable | - SubGhzProtocolFlag_Save | SubGhzProtocolFlag_AutoAlarms, + SubGhzProtocolFlag_Save, .decoder = &subghz_protocol_scher_khan_decoder, .encoder = &subghz_protocol_scher_khan_encoder, + + .filter = SubGhzProtocolFilter_AutoAlarms, }; void* subghz_protocol_decoder_scher_khan_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/schrader_gg4.c b/lib/subghz/protocols/schrader_gg4.c index 49c2e48a5..2290d32e0 100644 --- a/lib/subghz/protocols/schrader_gg4.c +++ b/lib/subghz/protocols/schrader_gg4.c @@ -101,11 +101,12 @@ const SubGhzProtocol tpms_protocol_schrader_gg4 = { .name = TPMS_PROTOCOL_SCHRADER_GG4_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_AM | - SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_TPMS | SubGhzProtocolFlag_Load | - SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, .decoder = &tpms_protocol_schrader_gg4_decoder, .encoder = &tpms_protocol_schrader_gg4_encoder, + + .filter = SubGhzProtocolFilter_TPMS, }; void* tpms_protocol_decoder_schrader_gg4_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/star_line.c b/lib/subghz/protocols/star_line.c index 75a7fd471..39c715399 100644 --- a/lib/subghz/protocols/star_line.c +++ b/lib/subghz/protocols/star_line.c @@ -79,11 +79,12 @@ const SubGhzProtocol subghz_protocol_star_line = { .name = SUBGHZ_PROTOCOL_STAR_LINE_NAME, .type = SubGhzProtocolTypeDynamic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send | - SubGhzProtocolFlag_StarLine, + SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save | SubGhzProtocolFlag_Send, .decoder = &subghz_protocol_star_line_decoder, .encoder = &subghz_protocol_star_line_encoder, + + .filter = SubGhzProtocolFilter_StarLine, }; /** diff --git a/lib/subghz/protocols/thermopro_tx4.c b/lib/subghz/protocols/thermopro_tx4.c index 351f662f7..9adaacac1 100644 --- a/lib/subghz/protocols/thermopro_tx4.c +++ b/lib/subghz/protocols/thermopro_tx4.c @@ -79,11 +79,13 @@ const SubGhzProtocol ws_protocol_thermopro_tx4 = { .name = WS_PROTOCOL_THERMOPRO_TX4_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_thermopro_tx4_decoder, .encoder = &ws_protocol_thermopro_tx4_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_thermopro_tx4_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/tx_8300.c b/lib/subghz/protocols/tx_8300.c index 15483a87b..b0686a774 100644 --- a/lib/subghz/protocols/tx_8300.c +++ b/lib/subghz/protocols/tx_8300.c @@ -90,11 +90,13 @@ const SubGhzProtocol ws_protocol_tx_8300 = { .name = WS_PROTOCOL_TX_8300_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_tx_8300_decoder, .encoder = &ws_protocol_tx_8300_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_tx_8300_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/protocols/wendox_w6726.c b/lib/subghz/protocols/wendox_w6726.c index 191adc7bf..a5ef0a026 100644 --- a/lib/subghz/protocols/wendox_w6726.c +++ b/lib/subghz/protocols/wendox_w6726.c @@ -84,11 +84,13 @@ const SubGhzProtocol ws_protocol_wendox_w6726 = { .name = WS_PROTOCOL_WENDOX_W6726_NAME, .type = SubGhzProtocolTypeStatic, .flag = SubGhzProtocolFlag_433 | SubGhzProtocolFlag_315 | SubGhzProtocolFlag_868 | - SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Weather | - SubGhzProtocolFlag_Load | SubGhzProtocolFlag_Save, + SubGhzProtocolFlag_AM | SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_Load | + SubGhzProtocolFlag_Save, .decoder = &ws_protocol_wendox_w6726_decoder, .encoder = &ws_protocol_wendox_w6726_encoder, + + .filter = SubGhzProtocolFilter_Weather, }; void* ws_protocol_decoder_wendox_w6726_alloc(SubGhzEnvironment* environment) { diff --git a/lib/subghz/types.h b/lib/subghz/types.h index 50d5f0ced..369351066 100644 --- a/lib/subghz/types.h +++ b/lib/subghz/types.h @@ -112,6 +112,7 @@ typedef enum { SubGhzProtocolTypeStatic, SubGhzProtocolTypeDynamic, SubGhzProtocolTypeRAW, + SubGhzProtocolWeatherStation, // Unused, kept for compatibility SubGhzProtocolCustom, SubGhzProtocolTypeBinRAW, } SubGhzProtocolType; @@ -128,14 +129,18 @@ typedef enum { SubGhzProtocolFlag_Load = (1 << 8), SubGhzProtocolFlag_Send = (1 << 9), SubGhzProtocolFlag_BinRAW = (1 << 10), - SubGhzProtocolFlag_StarLine = (1 << 11), - SubGhzProtocolFlag_AutoAlarms = (1 << 12), - SubGhzProtocolFlag_Magellan = (1 << 13), - SubGhzProtocolFlag_Princeton = (1 << 14), - SubGhzProtocolFlag_Weather = (1 << 15), - SubGhzProtocolFlag_TPMS = (1 << 16), } SubGhzProtocolFlag; +typedef enum { + SubGhzProtocolFilter_StarLine = (1 << 0), + SubGhzProtocolFilter_AutoAlarms = (1 << 1), + SubGhzProtocolFilter_Magellan = (1 << 2), + SubGhzProtocolFilter_Princeton = (1 << 3), + SubGhzProtocolFilter_NiceFlorS = (1 << 4), + SubGhzProtocolFilter_Weather = (1 << 5), + SubGhzProtocolFilter_TPMS = (1 << 6), +} SubGhzProtocolFilter; + struct SubGhzProtocol { const char* name; SubGhzProtocolType type; @@ -143,4 +148,6 @@ struct SubGhzProtocol { const SubGhzProtocolEncoder* encoder; const SubGhzProtocolDecoder* decoder; + + SubGhzProtocolFilter filter; };