diff --git a/applications/main/subghz/scenes/subghz_scene_receiver_config.c b/applications/main/subghz/scenes/subghz_scene_receiver_config.c index 6d9d2fef5..f64f7f638 100644 --- a/applications/main/subghz/scenes/subghz_scene_receiver_config.c +++ b/applications/main/subghz/scenes/subghz_scene_receiver_config.c @@ -189,55 +189,64 @@ static void subghz_scene_receiver_config_set_detect_raw(VariableItem* item) { SubGhz* subghz = variable_item_get_context(item); uint8_t index = variable_item_get_current_value_index(item); - variable_item_set_current_value_text(item, detect_raw_text[index]); + if(subghz->txrx->hopper_state == 0) { + variable_item_set_current_value_text(item, detect_raw_text[index]); #ifdef SUBGHZ_SAVE_DETECT_RAW_SETTING - subghz->last_settings->detect_raw = index; + subghz->last_settings->detect_raw = index; - subghz_last_settings_set_detect_raw_values(subghz); + subghz_last_settings_set_detect_raw_values(subghz); #else - subghz_receiver_set_filter(subghz->txrx->receiver, detect_raw_value[index]); + subghz_receiver_set_filter(subghz->txrx->receiver, detect_raw_value[index]); - subghz_protocol_decoder_raw_set_auto_mode( - subghz_receiver_search_decoder_base_by_name( - subghz->txrx->receiver, SUBGHZ_PROTOCOL_RAW_NAME), - (index == 1)); + subghz_protocol_decoder_raw_set_auto_mode( + subghz_receiver_search_decoder_base_by_name( + subghz->txrx->receiver, SUBGHZ_PROTOCOL_RAW_NAME), + (index == 1)); #endif + } else { + variable_item_set_current_value_index(item, 0); + } } static void subghz_scene_receiver_config_set_hopping_running(VariableItem* item) { SubGhz* subghz = variable_item_get_context(item); uint8_t index = variable_item_get_current_value_index(item); - variable_item_set_current_value_text(item, hopping_text[index]); - if(hopping_value[index] == SubGhzHopperStateOFF) { - char text_buf[10] = {0}; - snprintf( - text_buf, - sizeof(text_buf), - "%lu.%02lu", - subghz_setting_get_default_frequency(subghz->setting) / 1000000, - (subghz_setting_get_default_frequency(subghz->setting) % 1000000) / 10000); - variable_item_set_current_value_text( - (VariableItem*)scene_manager_get_scene_state( - subghz->scene_manager, SubGhzSceneReceiverConfig), - text_buf); - subghz->txrx->preset->frequency = subghz_setting_get_default_frequency(subghz->setting); - variable_item_set_current_value_index( - (VariableItem*)scene_manager_get_scene_state( - subghz->scene_manager, SubGhzSceneReceiverConfig), - subghz_setting_get_frequency_default_index(subghz->setting)); - } else { - variable_item_set_current_value_text( - (VariableItem*)scene_manager_get_scene_state( - subghz->scene_manager, SubGhzSceneReceiverConfig), - " -----"); - variable_item_set_current_value_index( - (VariableItem*)scene_manager_get_scene_state( - subghz->scene_manager, SubGhzSceneReceiverConfig), - subghz_setting_get_frequency_default_index(subghz->setting)); - } + if(subghz_receiver_get_filter(subghz->txrx->receiver) == SubGhzProtocolFlag_Decodable) { + variable_item_set_current_value_text(item, hopping_text[index]); + if(hopping_value[index] == SubGhzHopperStateOFF) { + char text_buf[10] = {0}; + snprintf( + text_buf, + sizeof(text_buf), + "%lu.%02lu", + subghz_setting_get_default_frequency(subghz->setting) / 1000000, + (subghz_setting_get_default_frequency(subghz->setting) % 1000000) / 10000); + variable_item_set_current_value_text( + (VariableItem*)scene_manager_get_scene_state( + subghz->scene_manager, SubGhzSceneReceiverConfig), + text_buf); + subghz->txrx->preset->frequency = + subghz_setting_get_default_frequency(subghz->setting); + variable_item_set_current_value_index( + (VariableItem*)scene_manager_get_scene_state( + subghz->scene_manager, SubGhzSceneReceiverConfig), + subghz_setting_get_frequency_default_index(subghz->setting)); + } else { + variable_item_set_current_value_text( + (VariableItem*)scene_manager_get_scene_state( + subghz->scene_manager, SubGhzSceneReceiverConfig), + " -----"); + variable_item_set_current_value_index( + (VariableItem*)scene_manager_get_scene_state( + subghz->scene_manager, SubGhzSceneReceiverConfig), + subghz_setting_get_frequency_default_index(subghz->setting)); + } - subghz->txrx->hopper_state = hopping_value[index]; + subghz->txrx->hopper_state = hopping_value[index]; + } else { + variable_item_set_current_value_index(item, 0); + } } static void subghz_scene_receiver_config_var_list_enter_callback(void* context, uint32_t index) { diff --git a/applications/main/subghz/views/subghz_frequency_analyzer.c b/applications/main/subghz/views/subghz_frequency_analyzer.c index 461b10974..f093e6f1e 100644 --- a/applications/main/subghz/views/subghz_frequency_analyzer.c +++ b/applications/main/subghz/views/subghz_frequency_analyzer.c @@ -367,11 +367,13 @@ void subghz_frequency_analyzer_pair_callback(void* context, uint32_t frequency, switch(instance->feedback_level) { case 1: // 1 - only vibro notification_message(instance->notifications, &sequence_single_vibro); + notification_message(instance->notifications, &sequence_display_backlight_on); break; case 2: // 2 - vibro and beep notification_message(instance->notifications, &sequence_success); break; default: // 0 - no feedback + notification_message(instance->notifications, &sequence_display_backlight_on); break; }