Skip to content
This repository has been archived by the owner on Jul 28, 2024. It is now read-only.

Commit

Permalink
Remove history when enabling repeater (ask first)
Browse files Browse the repository at this point in the history
  • Loading branch information
Willy-JL committed Dec 14, 2023
1 parent 5c339e2 commit edc989b
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 5 deletions.
1 change: 1 addition & 0 deletions applications/main/subghz/helpers/subghz_custom_event.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ typedef enum {
SubGhzCustomEventSceneShowOnlyRX,
SubGhzCustomEventSceneAnalyzerLock,
SubGhzCustomEventSceneAnalyzerUnlock,
SubGhzCustomEventSceneSettingRepeater,
SubGhzCustomEventSceneSettingRemoveDuplicates,
SubGhzCustomEventSceneSettingLock,
SubGhzCustomEventSceneSettingResetToDefault,
Expand Down
13 changes: 11 additions & 2 deletions applications/main/subghz/scenes/subghz_scene_need_saving.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ void subghz_scene_need_saving_on_enter(void* context) {
SubGhz* subghz = context;

widget_add_string_multiline_element(
subghz->widget, 64, 13, AlignCenter, AlignCenter, FontPrimary, "Exit to Sub-GHz Menu?");
subghz->widget, 64, 13, AlignCenter, AlignCenter, FontPrimary, "Discard Signals?");
widget_add_string_multiline_element(
subghz->widget,
64,
Expand All @@ -29,7 +29,7 @@ void subghz_scene_need_saving_on_enter(void* context) {
widget_add_button_element(
subghz->widget, GuiButtonTypeRight, "Stay", subghz_scene_need_saving_callback, subghz);
widget_add_button_element(
subghz->widget, GuiButtonTypeLeft, "Exit", subghz_scene_need_saving_callback, subghz);
subghz->widget, GuiButtonTypeLeft, "Continue", subghz_scene_need_saving_callback, subghz);

view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdWidget);
}
Expand All @@ -54,6 +54,15 @@ bool subghz_scene_need_saving_on_event(void* context, SceneManagerEvent event) {
subghz->txrx, "AM650", subghz->last_settings->frequency, 0, 0, NULL, 0);
scene_manager_search_and_switch_to_previous_scene(
subghz->scene_manager, SubGhzSceneStart);
} else if(state == SubGhzRxKeyStateTX) {
subghz->repeater = SubGhzRepeaterStateOn;
subghz->last_settings->repeater_state = SubGhzRepeaterStateOn;
if((subghz->filter & SubGhzProtocolFlag_BinRAW) == 0) {
subghz->filter = SubGhzProtocolFlag_Decodable | SubGhzProtocolFlag_BinRAW;
subghz_txrx_receiver_set_filter(subghz->txrx, subghz->filter);
subghz->repeater_bin_raw_was_off = true;
}
scene_manager_previous_scene(subghz->scene_manager);
} else {
scene_manager_previous_scene(subghz->scene_manager);
}
Expand Down
25 changes: 22 additions & 3 deletions applications/main/subghz/scenes/subghz_scene_receiver_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,16 @@ static void subghz_scene_receiver_config_set_repeater(VariableItem* item) {
SubGhz* subghz = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);

if(subghz->repeater == SubGhzRepeaterStateOff &&
(subghz_rx_key_state_get(subghz) == SubGhzRxKeyStateAddKey ||
subghz_rx_key_state_get(subghz) == SubGhzRxKeyStateBack)) {
scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneReceiverConfig, SubGhzSettingIndexRepeater);
view_dispatcher_send_custom_event(
subghz->view_dispatcher, SubGhzCustomEventSceneSettingRepeater);
return;
}

//Set menu Text.
variable_item_set_current_value_text(item, repeater_text[index]);

Expand All @@ -293,8 +303,7 @@ static void subghz_scene_receiver_config_set_repeater(VariableItem* item) {

//Change BinRAW to ON or OFF as required, and remember whether I changed it! (Put back for the user.)
if(repeater_value[index] != SubGhzRepeaterStateOff) {
if((bin_raw_value[variable_item_get_current_value_index(bin_raw_menu)] &
SubGhzProtocolFlag_BinRAW) == 0) {
if((subghz->filter & SubGhzProtocolFlag_BinRAW) == 0) {
//Repeater is on, Binraw is Off.
variable_item_set_current_value_index(
bin_raw_menu, 1 /*Index of ON in BIN_Raw menu!*/);
Expand Down Expand Up @@ -648,6 +657,12 @@ void subghz_scene_receiver_config_on_enter(void* context) {
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, raw_threshold_rssi_text[value_index]);
}

variable_item_list_set_selected_item(
subghz->variable_item_list,
scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReceiverConfig));
scene_manager_set_scene_state(subghz->scene_manager, SubGhzSceneReceiverConfig, 0);

view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdVariableItemList);
}

Expand All @@ -656,7 +671,11 @@ bool subghz_scene_receiver_config_on_event(void* context, SceneManagerEvent even
bool consumed = false;

if(event.type == SceneManagerEventTypeCustom) {
if(event.event == SubGhzCustomEventSceneSettingRemoveDuplicates) {
if(event.event == SubGhzCustomEventSceneSettingRepeater) {
subghz_rx_key_state_set(subghz, SubGhzRxKeyStateTX);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneNeedSaving);
consumed = true;
} else if(event.event == SubGhzCustomEventSceneSettingRemoveDuplicates) {
subghz_history_remove_duplicates(subghz->history);
scene_manager_previous_scene(subghz->scene_manager);
consumed = true;
Expand Down

0 comments on commit edc989b

Please sign in to comment.