Skip to content

Commit 1fec80a

Browse files
committed
feat: add RX config option "Reset to default"
1 parent 53fffff commit 1fec80a

File tree

4 files changed

+61
-5
lines changed

4 files changed

+61
-5
lines changed

applications/main/subghz/helpers/subghz_custom_event.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ typedef enum {
7777
SubGhzCustomEventSceneAnalyzerLock,
7878
SubGhzCustomEventSceneAnalyzerUnlock,
7979
SubGhzCustomEventSceneSettingLock,
80+
SubGhzCustomEventSceneSettingResetToDefault,
8081

8182
SubGhzCustomEventSceneExit,
8283
SubGhzCustomEventSceneStay,

applications/main/subghz/scenes/subghz_scene_receiver_config.c

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

applications/main/subghz/subghz_last_settings.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66
#define SUBGHZ_LAST_SETTING_FILE_TYPE "Flipper SubGhz Last Setting File"
77
#define SUBGHZ_LAST_SETTING_FILE_VERSION 1
88
#define SUBGHZ_LAST_SETTINGS_PATH EXT_PATH("subghz/assets/last_subghz.settings")
9-
// 1 = "AM650"
10-
// "AM270", "AM650", "FM238", "FM476",
11-
#define SUBGHZ_LAST_SETTING_DEFAULT_PRESET 1
12-
#define SUBGHZ_LAST_SETTING_DEFAULT_FREQUENCY 433920000
13-
#define SUBGHZ_LAST_SETTING_FREQUENCY_ANALYZER_FEEDBACK_LEVEL 2
149

1510
#define SUBGHZ_LAST_SETTING_FIELD_FREQUENCY "Frequency"
1611
#define SUBGHZ_LAST_SETTING_FIELD_PRESET "Preset" // AKA Modulation

applications/main/subghz/subghz_last_settings.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
#define SUBGHZ_LAST_SETTING_FREQUENCY_ANALYZER_TRIGGER (-93.0f)
1010
#define SUBGHZ_LAST_SETTING_SAVE_BIN_RAW true
1111
#define SUBGHZ_LAST_SETTING_SAVE_PRESET true
12+
// 1 = "AM650"
13+
// "AM270", "AM650", "FM238", "FM476",
14+
#define SUBGHZ_LAST_SETTING_DEFAULT_PRESET 1
15+
#define SUBGHZ_LAST_SETTING_DEFAULT_FREQUENCY 433920000
16+
#define SUBGHZ_LAST_SETTING_FREQUENCY_ANALYZER_FEEDBACK_LEVEL 2
1217

1318
typedef struct {
1419
uint32_t frequency;

0 commit comments

Comments
 (0)