@@ -12,6 +12,7 @@ enum SubGhzSettingIndex {
1212 SubGhzSettingIndexIgnoreCars ,
1313 SubGhzSettingIndexIgnoreMagellan ,
1414 SubGhzSettingIndexSound ,
15+ SubGhzSettingIndexResetToDefault ,
1516 SubGhzSettingIndexLock ,
1617 SubGhzSettingIndexRAWThresholdRSSI ,
1718};
@@ -278,6 +279,46 @@ static void subghz_scene_receiver_config_var_list_enter_callback(void* context,
278279 if (index == SubGhzSettingIndexLock ) {
279280 view_dispatcher_send_custom_event (
280281 subghz -> view_dispatcher , SubGhzCustomEventSceneSettingLock );
282+ } else if (index == SubGhzSettingIndexResetToDefault ) {
283+ // Reset all values to default state!
284+ #if SUBGHZ_LAST_SETTING_SAVE_PRESET
285+ subghz_txrx_set_preset_internal (
286+ subghz -> txrx ,
287+ SUBGHZ_LAST_SETTING_DEFAULT_FREQUENCY ,
288+ SUBGHZ_LAST_SETTING_DEFAULT_PRESET );
289+ #else
290+ subghz_txrx_set_default_preset (subghz -> txrx , SUBGHZ_LAST_SETTING_DEFAULT_FREQUENCY );
291+ #endif
292+ SubGhzSetting * setting = subghz_txrx_get_setting (subghz -> txrx );
293+ SubGhzRadioPreset preset = subghz_txrx_get_preset (subghz -> txrx );
294+ const char * preset_name = furi_string_get_cstr (preset .name );
295+ int preset_index = subghz_setting_get_inx_preset_by_name (setting , preset_name );
296+ const int default_index = 0 ;
297+
298+ subghz -> last_settings -> frequency = preset .frequency ;
299+ subghz -> last_settings -> preset_index = preset_index ;
300+
301+ subghz_threshold_rssi_set (subghz -> threshold_rssi , raw_threshold_rssi_value [default_index ]);
302+ subghz -> filter = bin_raw_value [0 ];
303+ subghz -> ignore_filter = 0x00 ;
304+ subghz_txrx_receiver_set_filter (subghz -> txrx , subghz -> filter );
305+ subghz -> last_settings -> ignore_filter = subghz -> ignore_filter ;
306+ subghz -> last_settings -> filter = subghz -> filter ;
307+
308+ subghz_txrx_speaker_set_state (subghz -> txrx , speaker_value [default_index ]);
309+
310+ subghz_txrx_hopper_set_state (subghz -> txrx , hopping_value [default_index ]);
311+ subghz -> last_settings -> enable_hopping = hopping_value [default_index ];
312+
313+ variable_item_list_set_selected_item (subghz -> variable_item_list , default_index );
314+ variable_item_list_reset (subghz -> variable_item_list );
315+ #ifdef FURI_DEBUG
316+ subghz_last_settings_log (subghz -> last_settings );
317+ #endif
318+ subghz_last_settings_save (subghz -> last_settings );
319+
320+ view_dispatcher_send_custom_event (
321+ subghz -> view_dispatcher , SubGhzCustomEventSceneSettingResetToDefault );
281322 }
282323}
283324
@@ -400,6 +441,16 @@ void subghz_scene_receiver_config_on_enter(void* context) {
400441 variable_item_set_current_value_index (item , value_index );
401442 variable_item_set_current_value_text (item , combobox_text [value_index ]);
402443
444+ if (scene_manager_get_scene_state (subghz -> scene_manager , SubGhzSceneReadRAW ) !=
445+ SubGhzCustomEventManagerSet ) {
446+ // Reset to default
447+ variable_item_list_add (subghz -> variable_item_list , "Reset to default" , 1 , NULL , NULL );
448+
449+ variable_item_list_set_enter_callback (
450+ subghz -> variable_item_list ,
451+ subghz_scene_receiver_config_var_list_enter_callback ,
452+ subghz );
453+ }
403454 if (scene_manager_get_scene_state (subghz -> scene_manager , SubGhzSceneReadRAW ) !=
404455 SubGhzCustomEventManagerSet ) {
405456 // Lock keyboard
@@ -409,6 +460,7 @@ void subghz_scene_receiver_config_on_enter(void* context) {
409460 subghz_scene_receiver_config_var_list_enter_callback ,
410461 subghz );
411462 }
463+
412464 if (scene_manager_get_scene_state (subghz -> scene_manager , SubGhzSceneReadRAW ) ==
413465 SubGhzCustomEventManagerSet ) {
414466 item = variable_item_list_add (
@@ -436,6 +488,9 @@ bool subghz_scene_receiver_config_on_event(void* context, SceneManagerEvent even
436488 subghz_lock (subghz );
437489 scene_manager_previous_scene (subghz -> scene_manager );
438490 consumed = true;
491+ } else if (event .event == SubGhzCustomEventSceneSettingResetToDefault ) {
492+ scene_manager_previous_scene (subghz -> scene_manager );
493+ consumed = true;
439494 }
440495 }
441496 return consumed ;
0 commit comments