mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
SubGhz ignore duplicates option (#373)
This commit is contained in:
@@ -134,6 +134,30 @@ static void subghz_scene_add_to_history_callback(
|
||||
if(subghz_history_get_text_space_left(subghz->history, NULL, 0)) {
|
||||
notification_message(subghz->notifications, &sequence_error);
|
||||
}
|
||||
|
||||
if(subghz->ignore_duplicates) {
|
||||
uint16_t history_count = subghz_history_get_last_index(subghz->history) - 1;
|
||||
uint8_t hash_data = subghz_protocol_decoder_base_get_hash_data(decoder_base);
|
||||
uint16_t menu_idx = subghz_view_receiver_get_idx_menu(subghz->subghz_receiver);
|
||||
subghz_view_receiver_disable_draw_callback(subghz->subghz_receiver);
|
||||
|
||||
for(uint16_t idx = history_count; idx > 0; idx--) {
|
||||
if(subghz_history_get_hash_data(subghz->history, idx - 1) == hash_data) {
|
||||
subghz_view_receiver_set_idx_menu(subghz->subghz_receiver, idx - 1);
|
||||
subghz_history_delete_item(subghz->history, idx - 1);
|
||||
subghz_view_receiver_delete_element_callback(subghz->subghz_receiver);
|
||||
if(menu_idx > idx - 1) menu_idx--;
|
||||
}
|
||||
}
|
||||
|
||||
subghz_view_receiver_set_idx_menu(subghz->subghz_receiver, menu_idx);
|
||||
subghz->idx_menu_chosen = subghz_view_receiver_get_idx_menu(subghz->subghz_receiver);
|
||||
subghz_view_receiver_enable_draw_callback(subghz->subghz_receiver);
|
||||
subghz_scene_receiver_update_statusbar(subghz);
|
||||
if(subghz_history_get_last_index(subghz->history) == 0) {
|
||||
subghz_rx_key_state_set(subghz, SubGhzRxKeyStateStart);
|
||||
}
|
||||
}
|
||||
}
|
||||
subghz_receiver_reset(receiver);
|
||||
furi_string_free(item_name);
|
||||
|
||||
@@ -267,6 +267,15 @@ static void subghz_scene_receiver_config_set_raw_threshold_rssi(VariableItem* it
|
||||
subghz->last_settings->rssi = raw_threshold_rssi_value[index];
|
||||
}
|
||||
|
||||
static void subghz_scene_receiver_config_set_duplicates(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, combobox_text[index]);
|
||||
|
||||
subghz->last_settings->ignore_duplicates = subghz->ignore_duplicates = index;
|
||||
}
|
||||
|
||||
static inline bool subghz_scene_receiver_config_ignore_filter_get_index(
|
||||
SubGhzProtocolFilter filter,
|
||||
SubGhzProtocolFilter flag) {
|
||||
@@ -328,7 +337,9 @@ static void subghz_scene_receiver_config_var_list_enter_callback(void* context,
|
||||
subghz_threshold_rssi_set(subghz->threshold_rssi, raw_threshold_rssi_value[default_index]);
|
||||
subghz->filter = bin_raw_value[0];
|
||||
subghz->ignore_filter = 0x00;
|
||||
subghz->ignore_duplicates = false;
|
||||
subghz_txrx_receiver_set_filter(subghz->txrx, subghz->filter);
|
||||
subghz->last_settings->ignore_duplicates = subghz->ignore_duplicates;
|
||||
subghz->last_settings->ignore_filter = subghz->ignore_filter;
|
||||
subghz->last_settings->filter = subghz->filter;
|
||||
|
||||
@@ -419,6 +430,17 @@ void subghz_scene_receiver_config_on_enter(void* context) {
|
||||
|
||||
if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW) !=
|
||||
SubGhzCustomEventManagerSet) {
|
||||
item = variable_item_list_add(
|
||||
subghz->variable_item_list,
|
||||
"Ignore Duplicates",
|
||||
COMBO_BOX_COUNT,
|
||||
subghz_scene_receiver_config_set_duplicates,
|
||||
subghz);
|
||||
|
||||
value_index = subghz->ignore_duplicates;
|
||||
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 Starline",
|
||||
|
||||
Reference in New Issue
Block a user