Browse Source

[FL-2410] SubGhz: fix launching an incorrect Sub-GHz key from the archive. (#1080)

Skorpionm 3 năm trước cách đây
mục cha
commit
cb7d43f7e1

+ 19 - 13
applications/subghz/subghz.c

@@ -309,20 +309,26 @@ int32_t subghz_app(void* p) {
     subghz_environment_load_keystore(
     subghz_environment_load_keystore(
         subghz->txrx->environment, "/ext/subghz/assets/keeloq_mfcodes_user");
         subghz->txrx->environment, "/ext/subghz/assets/keeloq_mfcodes_user");
     // Check argument and run corresponding scene
     // Check argument and run corresponding scene
-    if(p && subghz_key_load(subghz, p)) {
-        string_t filename;
-        string_init(filename);
-
-        path_extract_filename_no_ext(p, filename);
-        strcpy(subghz->file_name, string_get_cstr(filename));
-        string_clear(filename);
-        if((!strcmp(subghz->txrx->decoder_result->protocol->name, "RAW"))) {
-            //Load Raw TX
-            subghz->txrx->rx_key_state = SubGhzRxKeyStateRAWLoad;
-            scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReadRAW);
+    if(p) {
+        if(subghz_key_load(subghz, p)) {
+            string_t filename;
+            string_init(filename);
+
+            path_extract_filename_no_ext(p, filename);
+            strcpy(subghz->file_name, string_get_cstr(filename));
+            string_clear(filename);
+            if((!strcmp(subghz->txrx->decoder_result->protocol->name, "RAW"))) {
+                //Load Raw TX
+                subghz->txrx->rx_key_state = SubGhzRxKeyStateRAWLoad;
+                scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReadRAW);
+            } else {
+                //Load transmitter TX
+                scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTransmitter);
+            }
         } else {
         } else {
-            //Load transmitter TX
-            scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTransmitter);
+            //exit app
+            scene_manager_stop(subghz->scene_manager);
+            view_dispatcher_stop(subghz->view_dispatcher);
         }
         }
     } else {
     } else {
         if(load_database) {
         if(load_database) {

+ 0 - 1
applications/subghz/subghz_i.c

@@ -277,7 +277,6 @@ bool subghz_key_load(SubGhz* subghz, const char* file_path) {
     }
     }
 
 
     string_clear(temp_str);
     string_clear(temp_str);
-    //string_clear(path);
     flipper_format_free(fff_data_file);
     flipper_format_free(fff_data_file);
     furi_record_close("storage");
     furi_record_close("storage");