Explorar o código

reactivating subghz menu (no actions yet)

David Lee %!s(int64=2) %!d(string=hai) anos
pai
achega
8bdfcaaab6

+ 1 - 0
models/cross/xremote_remote.c

@@ -173,6 +173,7 @@ bool cross_remote_load(CrossRemote* remote, FuriString* path) {
     } while(false);
     } while(false);
 
 
     furi_string_free(buf);
     furi_string_free(buf);
+    flipper_format_buffered_file_close(ff);
     flipper_format_free(ff);
     flipper_format_free(ff);
     furi_record_close(RECORD_STORAGE);
     furi_record_close(RECORD_STORAGE);
     return success;
     return success;

+ 21 - 0
models/cross/xremote_remote_item.c

@@ -68,6 +68,22 @@ static bool xremote_ir_signal_is_message_valid(InfraredMessage* message) {
     return true;
     return true;
 }
 }
 
 
+static bool xremote_remote_item_read_sg(CrossRemoteItem* item, FlipperFormat* ff) {
+    FuriString* buf;
+    bool success = false;
+    buf = furi_string_alloc();
+    item->type = XRemoteRemoteItemTypeSubGhz;
+    item->time = 0;
+
+    do {
+        if(!flipper_format_read_string(ff, "name", item->name)) break;
+        success = true;
+    } while(false);
+    furi_string_free(buf);
+
+    return success;
+}
+
 bool xremote_remote_item_read(CrossRemoteItem* item, FlipperFormat* ff) {
 bool xremote_remote_item_read(CrossRemoteItem* item, FlipperFormat* ff) {
     FuriString* type = furi_string_alloc();
     FuriString* type = furi_string_alloc();
     bool success = false;
     bool success = false;
@@ -75,6 +91,8 @@ bool xremote_remote_item_read(CrossRemoteItem* item, FlipperFormat* ff) {
         if(!flipper_format_read_string(ff, "remote_type", type)) break;
         if(!flipper_format_read_string(ff, "remote_type", type)) break;
         if(furi_string_equal(type, "IR")) {
         if(furi_string_equal(type, "IR")) {
             success = xremote_remote_item_read_ir(item, ff);
             success = xremote_remote_item_read_ir(item, ff);
+        } else if(furi_string_equal(type, "SG")) {
+            success = xremote_remote_item_read_sg(item, ff);
         } else if(furi_string_equal(type, "PAUSE")) {
         } else if(furi_string_equal(type, "PAUSE")) {
             success = xremote_remote_item_read_pause(item, ff);
             success = xremote_remote_item_read_pause(item, ff);
         } else {
         } else {
@@ -82,9 +100,12 @@ bool xremote_remote_item_read(CrossRemoteItem* item, FlipperFormat* ff) {
         }
         }
         success = true;
         success = true;
     } while(false);
     } while(false);
+    furi_string_free(type);
     return success;
     return success;
 }
 }
 
 
+
+
 bool xremote_remote_item_read_ir(CrossRemoteItem* item, FlipperFormat* ff) {
 bool xremote_remote_item_read_ir(CrossRemoteItem* item, FlipperFormat* ff) {
     FuriString* buf;
     FuriString* buf;
     bool success = false;
     bool success = false;

+ 5 - 4
models/subghz/xremote_sg_remote.c

@@ -181,7 +181,7 @@ bool xremote_sg_remote_load(SubGhzRemote* remote, FuriString* path) {
             break;
             break;
         }
         }
 
 
-        if(!strcmp(furi_string_get_cstr(buf), "RAW")) {
+        /*if(!strcmp(furi_string_get_cstr(buf), "RAW")) {
             subghz_protocol_raw_gen_fff_data(
             subghz_protocol_raw_gen_fff_data(
                 remote->txrx->fff_data,
                 remote->txrx->fff_data,
                 furi_string_get_cstr(path),
                 furi_string_get_cstr(path),
@@ -190,11 +190,11 @@ bool xremote_sg_remote_load(SubGhzRemote* remote, FuriString* path) {
             stream_copy_full(
             stream_copy_full(
                 flipper_format_get_raw_stream(ff),
                 flipper_format_get_raw_stream(ff),
                 flipper_format_get_raw_stream(remote->txrx->fff_data));
                 flipper_format_get_raw_stream(remote->txrx->fff_data));
-        }
+        }*/
 
 
         /*remote->txrx->decoder_result = subghz_receiver_search_decoder_base_by_name(
         /*remote->txrx->decoder_result = subghz_receiver_search_decoder_base_by_name(
             remote->txrx->receiver, furi_string_get_cstr(buf));*/
             remote->txrx->receiver, furi_string_get_cstr(buf));*/
-        if(remote->txrx->decoder_result) {
+        /*if(remote->txrx->decoder_result) {
             SubGhzProtocolStatus status = subghz_protocol_decoder_base_deserialize(
             SubGhzProtocolStatus status = subghz_protocol_decoder_base_deserialize(
                 remote->txrx->decoder_result, remote->txrx->fff_data);
                 remote->txrx->decoder_result, remote->txrx->fff_data);
             if(status != SubGhzProtocolStatusOk) {
             if(status != SubGhzProtocolStatusOk) {
@@ -205,12 +205,13 @@ bool xremote_sg_remote_load(SubGhzRemote* remote, FuriString* path) {
         } else {
         } else {
             FURI_LOG_E(TAG, "Protocol not found");
             FURI_LOG_E(TAG, "Protocol not found");
             break;
             break;
-        }
+        }*/
 
 
         success = true;
         success = true;
     } while(false);
     } while(false);
 
 
     furi_string_free(buf);
     furi_string_free(buf);
+    flipper_format_buffered_file_close(ff);
     flipper_format_free(ff);
     flipper_format_free(ff);
     furi_record_close(RECORD_STORAGE);
     furi_record_close(RECORD_STORAGE);
     return success;
     return success;

+ 2 - 2
scenes/xremote_scene_create_add.c

@@ -79,8 +79,8 @@ bool xremote_scene_create_add_on_event(void* context, SceneManagerEvent event) {
                 scene_manager_next_scene(app->scene_manager, XRemoteSceneIrList);
                 scene_manager_next_scene(app->scene_manager, XRemoteSceneIrList);
             }
             }
             if(button_index == ButtonIndexSubghz) {
             if(button_index == ButtonIndexSubghz) {
-                //scene_manager_next_scene(app->scene_manager, XRemoteSceneSgList);
-                scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
+                scene_manager_next_scene(app->scene_manager, XRemoteSceneSgList);
+                //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
             }
             }
             if(button_index == ButtonIndexPause) {
             if(button_index == ButtonIndexPause) {
                 scene_manager_next_scene(app->scene_manager, XRemoteScenePauseSet);
                 scene_manager_next_scene(app->scene_manager, XRemoteScenePauseSet);