diff --git a/applications/main/subghz/scenes/subghz_scene_decode_raw.c b/applications/main/subghz/scenes/subghz_scene_decode_raw.c index 59916441e..05b58c9b8 100644 --- a/applications/main/subghz/scenes/subghz_scene_decode_raw.c +++ b/applications/main/subghz/scenes/subghz_scene_decode_raw.c @@ -257,7 +257,7 @@ bool subghz_scene_decode_raw_on_event(void* context, SceneManagerEvent event) { notification_message(subghz->notifications, &sequence_blink_cyan_10); break; case SubGhzNotificationStateRxDone: - notification_message(subghz->notifications, &subghs_sequence_rx); + notification_message(subghz->notifications, &subghz_sequence_rx); subghz->state_notifications = SubGhzNotificationStateRx; break; default: diff --git a/applications/main/subghz/scenes/subghz_scene_read_raw.c b/applications/main/subghz/scenes/subghz_scene_read_raw.c index bd62b0d37..d1918a270 100644 --- a/applications/main/subghz/scenes/subghz_scene_read_raw.c +++ b/applications/main/subghz/scenes/subghz_scene_read_raw.c @@ -115,6 +115,7 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) { case SubGhzCustomEventViewReadRAWBack: // Check if return from config save values if(subghz->current_scene == SubGhzSceneReceiverConfig) { + FURI_LOG_I(TAG, "Raw value: %d", subghz->last_setting->detect_raw); subghz_last_setting_save( subghz->last_setting, EXT_PATH("subghz/assets/last_used.txt")); } @@ -181,6 +182,7 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) { scene_manager_set_scene_state( subghz->scene_manager, SubGhzSceneReadRAW, SubGhzCustomEventManagerSet); subghz->current_scene = SubGhzSceneReceiverConfig; + FURI_LOG_I(TAG, "Raw value: %d", subghz->last_setting->detect_raw); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReceiverConfig); consumed = true; break; diff --git a/applications/main/subghz/scenes/subghz_scene_receiver.c b/applications/main/subghz/scenes/subghz_scene_receiver.c index 8a53a4a56..70ed4c9b4 100644 --- a/applications/main/subghz/scenes/subghz_scene_receiver.c +++ b/applications/main/subghz/scenes/subghz_scene_receiver.c @@ -1,7 +1,9 @@ #include "../subghz_i.h" #include "../views/receiver.h" -const NotificationSequence subghs_sequence_rx = { +#define TAG "SubGhzSceneReceiver" + +const NotificationSequence subghz_sequence_rx = { &message_green_255, &message_vibro_on, @@ -14,7 +16,7 @@ const NotificationSequence subghs_sequence_rx = { NULL, }; -const NotificationSequence subghs_sequence_rx_locked = { +const NotificationSequence subghz_sequence_rx_locked = { &message_green_255, &message_display_backlight_on, @@ -136,9 +138,11 @@ void subghz_scene_receiver_on_enter(void* context) { subghz->state_notifications = SubGhzNotificationStateRx; if(subghz->txrx->txrx_state == SubGhzTxRxStateRx) { subghz_rx_end(subghz); - }; + } if((subghz->txrx->txrx_state == SubGhzTxRxStateIDLE) || (subghz->txrx->txrx_state == SubGhzTxRxStateSleep)) { + // Set values that can be reset after using DetectRAW Scene + subghz_last_setting_set_receiver_values(subghz->last_setting, subghz->txrx->receiver); subghz_begin( subghz, subghz_setting_get_preset_data_by_name( @@ -158,6 +162,7 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { case SubGhzCustomEventViewReceiverBack: // Check if return from config save values if(subghz->current_scene == SubGhzSceneReceiverConfig) { + FURI_LOG_I(TAG, "Raw value: %d", subghz->last_setting->detect_raw); subghz_last_setting_save( subghz->last_setting, EXT_PATH("subghz/assets/last_used.txt")); } @@ -166,7 +171,7 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { if(subghz->txrx->txrx_state == SubGhzTxRxStateRx) { subghz_rx_end(subghz); subghz_sleep(subghz); - }; + } subghz->txrx->hopper_state = SubGhzHopperStateOFF; subghz->txrx->idx_menu_chosen = 0; subghz_receiver_set_rx_callback(subghz->txrx->receiver, NULL, subghz); @@ -200,7 +205,10 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { subghz->state_notifications = SubGhzNotificationStateIDLE; subghz->txrx->idx_menu_chosen = subghz_view_receiver_get_idx_menu(subghz->subghz_receiver); + scene_manager_set_scene_state( + subghz->scene_manager, SubGhzViewIdReceiver, SubGhzCustomEventManagerSet); subghz->current_scene = SubGhzSceneReceiverConfig; + FURI_LOG_I(TAG, "Raw value: %d", subghz->last_setting->detect_raw); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReceiverConfig); consumed = true; break; @@ -226,9 +234,9 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { break; case SubGhzNotificationStateRxDone: if(subghz->lock != SubGhzLockOn) { - notification_message(subghz->notifications, &subghs_sequence_rx); + notification_message(subghz->notifications, &subghz_sequence_rx); } else { - notification_message(subghz->notifications, &subghs_sequence_rx_locked); + notification_message(subghz->notifications, &subghz_sequence_rx_locked); } subghz->state_notifications = SubGhzNotificationStateRx; break; diff --git a/applications/main/subghz/scenes/subghz_scene_receiver_config.c b/applications/main/subghz/scenes/subghz_scene_receiver_config.c index 3ef9535e1..196b39772 100644 --- a/applications/main/subghz/scenes/subghz_scene_receiver_config.c +++ b/applications/main/subghz/scenes/subghz_scene_receiver_config.c @@ -186,8 +186,7 @@ static void subghz_scene_receiver_config_set_detect_raw(VariableItem* item) { variable_item_set_current_value_text(item, detect_raw_text[index]); subghz_receiver_set_filter(subghz->txrx->receiver, detect_raw_value[index]); - - //subghz->last_setting->detect_raw = detect_raw_value[index]; + subghz->last_setting->detect_raw = detect_raw_value[index]; subghz_protocol_decoder_raw_set_auto_mode( subghz_receiver_search_decoder_base_by_name( @@ -253,8 +252,6 @@ void subghz_scene_receiver_config_on_enter(void* context) { subghz); value_index = subghz_scene_receiver_config_next_frequency(subghz->txrx->preset->frequency, subghz); - scene_manager_set_scene_state( - subghz->scene_manager, SubGhzSceneReceiverConfig, (uint32_t)item); variable_item_set_current_value_index(item, value_index); char text_buf[10] = {0}; snprintf( @@ -265,20 +262,6 @@ void subghz_scene_receiver_config_on_enter(void* context) { (subghz_setting_get_frequency(subghz->setting, value_index) % 1000000) / 10000); variable_item_set_current_value_text(item, text_buf); - if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW) != - SubGhzCustomEventManagerSet) { - item = variable_item_list_add( - subghz->variable_item_list, - "Hopping:", - HOPPING_COUNT, - subghz_scene_receiver_config_set_hopping_running, - subghz); - value_index = subghz_scene_receiver_config_hopper_value_index( - subghz->txrx->hopper_state, hopping_value, HOPPING_COUNT, subghz); - variable_item_set_current_value_index(item, value_index); - variable_item_set_current_value_text(item, hopping_text[value_index]); - } - item = variable_item_list_add( subghz->variable_item_list, "Modulation:", @@ -293,6 +276,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, + "Hopping:", + HOPPING_COUNT, + subghz_scene_receiver_config_set_hopping_running, + subghz); + value_index = subghz_scene_receiver_config_hopper_value_index( + subghz->txrx->hopper_state, hopping_value, HOPPING_COUNT, subghz); + variable_item_set_current_value_index(item, value_index); + variable_item_set_current_value_text(item, hopping_text[value_index]); + item = variable_item_list_add( subghz->variable_item_list, "Detect Raw:", @@ -305,10 +299,7 @@ void subghz_scene_receiver_config_on_enter(void* context) { DETECT_RAW_COUNT); variable_item_set_current_value_index(item, value_index); variable_item_set_current_value_text(item, detect_raw_text[value_index]); - } - if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW) != - SubGhzCustomEventManagerSet) { item = variable_item_list_add( subghz->variable_item_list, "RSSI for Raw:", @@ -322,10 +313,7 @@ void subghz_scene_receiver_config_on_enter(void* context) { RSSI_THRESHOLD_COUNT); variable_item_set_current_value_index(item, value_index); variable_item_set_current_value_text(item, rssi_threshold_text[value_index]); - } - if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW) != - SubGhzCustomEventManagerSet) { variable_item_list_add(subghz->variable_item_list, "Lock Keyboard", 1, NULL, NULL); variable_item_list_set_enter_callback( subghz->variable_item_list, diff --git a/applications/main/subghz/subghz.c b/applications/main/subghz/subghz.c index d709eebd1..2aa29cc84 100644 --- a/applications/main/subghz/subghz.c +++ b/applications/main/subghz/subghz.c @@ -1,9 +1,9 @@ /* Abandon hope, all ye who enter here. */ -#include "m-string.h" -#include "subghz/types.h" -#include "subghz_i.h" +#include +#include #include +#include "subghz_i.h" bool subghz_custom_event_callback(void* context, uint32_t event) { furi_assert(context); diff --git a/applications/main/subghz/subghz_history.c b/applications/main/subghz/subghz_history.c index bf6571f80..b806b9568 100644 --- a/applications/main/subghz/subghz_history.c +++ b/applications/main/subghz/subghz_history.c @@ -1,9 +1,5 @@ #include "subghz_history.h" #include -#include - -#include -#include #define SUBGHZ_HISTORY_MAX 65 #define TAG "SubGhzHistory" diff --git a/applications/main/subghz/subghz_i.h b/applications/main/subghz/subghz_i.h index 3c72a44bc..16c3838c5 100644 --- a/applications/main/subghz/subghz_i.h +++ b/applications/main/subghz/subghz_i.h @@ -142,5 +142,5 @@ bool subghz_path_is_file(string_t path); uint32_t subghz_random_serial(void); void subghz_hopper_update(SubGhz* subghz); -extern const NotificationSequence subghs_sequence_rx; -extern const NotificationSequence subghs_sequence_rx_locked; +extern const NotificationSequence subghz_sequence_rx; +extern const NotificationSequence subghz_sequence_rx_locked; diff --git a/applications/main/subghz/subghz_last_setting.c b/applications/main/subghz/subghz_last_setting.c index 739d7ab0d..846d3d4fe 100644 --- a/applications/main/subghz/subghz_last_setting.c +++ b/applications/main/subghz/subghz_last_setting.c @@ -1,12 +1,11 @@ #include "subghz_setting.h" #include "subghz_i.h" - #include "subghz_last_setting.h" #include #include -#include "furi_hal_subghz.h" -#include "furi_hal_subghz_configs.h" +#include +#include #include #define TAG "SubGhzLastSetting" @@ -41,7 +40,7 @@ void subghz_last_setting_load(SubGhzLastSetting* instance, const char* file_path string_init(temp_preset); uint32_t temp_frequency = 0; // Default 433920000 uint32_t temp_hopping = 0; // Default 0 - //uint32_t temp_detect_raw = 0; Default 2 + uint32_t temp_detect_raw = 0; // Default 2 int32_t temp_rssi_threshold = 0; // Default -72 if(FSE_OK == storage_sd_status(storage) && file_path && @@ -49,31 +48,31 @@ void subghz_last_setting_load(SubGhzLastSetting* instance, const char* file_path flipper_format_read_string(fff_data_file, "Preset", temp_preset); flipper_format_read_uint32(fff_data_file, "Frequency", (uint32_t*)&temp_frequency, 1); flipper_format_read_uint32(fff_data_file, "Hopping", (uint32_t*)&temp_hopping, 1); - //flipper_format_read_uint32(fff_data_file, "DetectRaw", (uint32_t*)&temp_detect_raw, 1); + flipper_format_read_uint32(fff_data_file, "DetectRaw", (uint32_t*)&temp_detect_raw, 1); flipper_format_read_int32(fff_data_file, "Rssi", (int32_t*)&temp_rssi_threshold, 1); } else { FURI_LOG_E(TAG, "Error open file %s", file_path); } if(string_empty_p(temp_preset)) { - //FURI_LOG_I(TAG, "Last used preset not found"); + FURI_LOG_D(TAG, "Last used preset not found"); string_set(instance->preset_name, SUBGHZ_LAST_SETTING_DEFAULT_PRESET); } else { string_set(instance->preset_name, temp_preset); } if(temp_frequency == 0 || !furi_hal_subghz_is_tx_allowed(temp_frequency)) { - //FURI_LOG_I(TAG, "Last used frequency not found or can't be used!"); + FURI_LOG_D(TAG, "Last used frequency not found or can't be used!"); instance->frequency = SUBGHZ_LAST_SETTING_DEFAULT_FREQUENCY; } else { instance->frequency = temp_frequency; } - /*if(temp_detect_raw == 0) { + if(temp_detect_raw == 0) { instance->detect_raw = SubGhzProtocolFlag_Decodable; } else { instance->detect_raw = temp_detect_raw; - }*/ + } if(temp_rssi_threshold == 0) { instance->rssi_threshold = -72; @@ -105,15 +104,15 @@ bool subghz_last_setting_save(SubGhzLastSetting* instance, const char* file_path file, SUBGHZ_LAST_SETTING_FILE_TYPE, SUBGHZ_LAST_SETTING_FILE_VERSION)) break; - //FURI_LOG_D(TAG, "Preset %s", string_get_cstr(instance->preset_name)); + FURI_LOG_D(TAG, "Preset %s", string_get_cstr(instance->preset_name)); if(!flipper_format_insert_or_update_string_cstr( file, "Preset", string_get_cstr(instance->preset_name))) break; if(!flipper_format_insert_or_update_uint32(file, "Frequency", &instance->frequency, 1)) break; if(!flipper_format_insert_or_update_uint32(file, "Hopping", &instance->hopping, 1)) break; - //if(!flipper_format_insert_or_update_uint32(file, "DetectRaw", &instance->detect_raw, 1)) - // break; + if(!flipper_format_insert_or_update_uint32(file, "DetectRaw", &instance->detect_raw, 1)) + break; if(!flipper_format_insert_or_update_int32(file, "Rssi", &instance->rssi_threshold, 1)) break; @@ -131,14 +130,11 @@ bool subghz_last_setting_save(SubGhzLastSetting* instance, const char* file_path } void subghz_last_setting_set_receiver_values(SubGhzLastSetting* instance, SubGhzReceiver* receiver) { - subghz_receiver_set_filter(receiver, SubGhzProtocolFlag_Decodable); - /*subghz_receiver_set_filter(receiver, instance->detect_raw); + SubGhzProtocolDecoderBase* protocolDecoderBase = + subghz_receiver_search_decoder_base_by_name(receiver, SUBGHZ_PROTOCOL_RAW_NAME); + subghz_receiver_set_filter(receiver, instance->detect_raw); subghz_protocol_decoder_raw_set_auto_mode( - subghz_receiver_search_decoder_base_by_name(receiver, SUBGHZ_PROTOCOL_RAW_NAME), - (instance->detect_raw != SubGhzProtocolFlag_Decodable));*/ - - subghz_protocol_decoder_raw_set_rssi_threshold( - subghz_receiver_search_decoder_base_by_name(receiver, SUBGHZ_PROTOCOL_RAW_NAME), - instance->rssi_threshold); + protocolDecoderBase, (instance->detect_raw != SubGhzProtocolFlag_Decodable)); + subghz_protocol_decoder_raw_set_rssi_threshold(protocolDecoderBase, instance->rssi_threshold); } \ No newline at end of file diff --git a/applications/main/subghz/subghz_last_setting.h b/applications/main/subghz/subghz_last_setting.h index f0f56d09a..2c20944be 100644 --- a/applications/main/subghz/subghz_last_setting.h +++ b/applications/main/subghz/subghz_last_setting.h @@ -9,7 +9,7 @@ typedef struct { string_t preset_name; uint32_t frequency; uint32_t hopping; - //uint32_t detect_raw; + uint32_t detect_raw; int32_t rssi_threshold; } SubGhzLastSetting; diff --git a/applications/main/subghz/subghz_setting.c b/applications/main/subghz/subghz_setting.c index 13a8f0b95..b065f4ab3 100644 --- a/applications/main/subghz/subghz_setting.c +++ b/applications/main/subghz/subghz_setting.c @@ -3,7 +3,7 @@ #include #include -#include "furi_hal_subghz_configs.h" +#include #define TAG "SubGhzSetting" diff --git a/applications/settings/notification_settings/notification_settings_app.c b/applications/settings/notification_settings/notification_settings_app.c index 2c53fc230..bfda689ea 100644 --- a/applications/settings/notification_settings/notification_settings_app.c +++ b/applications/settings/notification_settings/notification_settings_app.c @@ -46,7 +46,7 @@ const char* const volume_text[VOLUME_COUNT] = { }; const float volume_value[VOLUME_COUNT] = {0.0f, 0.25f, 0.5f, 0.75f, 1.0f}; -#define DELAY_COUNT 8 +#define DELAY_COUNT 11 const char* const delay_text[DELAY_COUNT] = { "1s", "5s", @@ -56,8 +56,23 @@ const char* const delay_text[DELAY_COUNT] = { "60s", "90s", "120s", + "5min", + "10min", + "30min", +}; +const uint32_t delay_value[DELAY_COUNT] = { + 1000, + 5000, + 10000, + 15000, + 30000, + 60000, + 90000, + 120000, + 300000, + 600000, + 1800000 }; -const uint32_t delay_value[DELAY_COUNT] = {1000, 5000, 10000, 15000, 30000, 60000, 90000, 120000}; #define VIBRO_COUNT 2 const char* const vibro_text[VIBRO_COUNT] = {