Sfoglia il codice sorgente

refactor xremote_cross_remote methods, fixed RAM leak

David Lee 2 anni fa
parent
commit
bc568262a6

+ 65 - 64
models/cross/xremote_remote.c

@@ -9,7 +9,7 @@ struct CrossRemote {
     int transmitting;
     int transmitting;
 };
 };
 
 
-static void cross_remote_clear_items(CrossRemote* remote) {
+static void xremote_cross_remote_clear_items(CrossRemote* remote) {
     CrossRemoteItemArray_it_t it;
     CrossRemoteItemArray_it_t it;
     for(CrossRemoteItemArray_it(it, remote->items); !CrossRemoteItemArray_end_p(it);
     for(CrossRemoteItemArray_it(it, remote->items); !CrossRemoteItemArray_end_p(it);
         CrossRemoteItemArray_next(it)) {
         CrossRemoteItemArray_next(it)) {
@@ -18,7 +18,7 @@ static void cross_remote_clear_items(CrossRemote* remote) {
     CrossRemoteItemArray_reset(remote->items);
     CrossRemoteItemArray_reset(remote->items);
 }
 }
 
 
-static void cross_remote_find_vacant_remote_name(FuriString* name, const char* path) {
+static void xremote_cross_remote_find_vacant_remote_name(FuriString* name, const char* path) {
     Storage* storage = furi_record_open(RECORD_STORAGE);
     Storage* storage = furi_record_open(RECORD_STORAGE);
 
 
     FuriString* base_path;
     FuriString* base_path;
@@ -60,7 +60,7 @@ static void cross_remote_find_vacant_remote_name(FuriString* name, const char* p
     furi_record_close(RECORD_STORAGE);
     furi_record_close(RECORD_STORAGE);
 }
 }
 
 
-CrossRemote* cross_remote_alloc() {
+CrossRemote* xremote_cross_remote_alloc() {
     CrossRemote* remote = malloc(sizeof(CrossRemote));
     CrossRemote* remote = malloc(sizeof(CrossRemote));
     CrossRemoteItemArray_init(remote->items);
     CrossRemoteItemArray_init(remote->items);
     remote->name = furi_string_alloc();
     remote->name = furi_string_alloc();
@@ -69,27 +69,27 @@ CrossRemote* cross_remote_alloc() {
     return remote;
     return remote;
 }
 }
 
 
-void cross_remote_set_transmitting(CrossRemote* remote, int status) {
+void xremote_cross_remote_set_transmitting(CrossRemote* remote, int status) {
     remote->transmitting = status;
     remote->transmitting = status;
 }
 }
 
 
-int cross_remote_get_transmitting(CrossRemote* remote) {
+int xremote_cross_remote_get_transmitting(CrossRemote* remote) {
     return remote->transmitting;
     return remote->transmitting;
 }
 }
 
 
-void cross_remote_free(CrossRemote* remote) {
+void xremote_cross_remote_free(CrossRemote* remote) {
     furi_string_free(remote->name);
     furi_string_free(remote->name);
     furi_string_free(remote->path);
     furi_string_free(remote->path);
-    cross_remote_clear_items(remote);
+    xremote_cross_remote_clear_items(remote);
     CrossRemoteItemArray_clear(remote->items);
     CrossRemoteItemArray_clear(remote->items);
     free(remote);
     free(remote);
 }
 }
 
 
-const char* cross_remote_get_name(CrossRemote* remote) {
+const char* xremote_cross_remote_get_name(CrossRemote* remote) {
     return furi_string_get_cstr(remote->name);
     return furi_string_get_cstr(remote->name);
 }
 }
 
 
-bool cross_remote_add_ir_item(CrossRemote* remote, const char* name, InfraredSignal* signal) {
+bool xremote_cross_remote_add_ir_item(CrossRemote* remote, const char* name, InfraredSignal* signal) {
     CrossRemoteItem* item = xremote_remote_item_alloc();
     CrossRemoteItem* item = xremote_remote_item_alloc();
     xremote_remote_item_set_type(item, XRemoteRemoteItemTypeInfrared);
     xremote_remote_item_set_type(item, XRemoteRemoteItemTypeInfrared);
     xremote_remote_item_set_name(item, name);
     xremote_remote_item_set_name(item, name);
@@ -98,7 +98,7 @@ bool cross_remote_add_ir_item(CrossRemote* remote, const char* name, InfraredSig
     return true;
     return true;
 }
 }
 
 
-bool cross_remote_add_pause(CrossRemote* remote, int time) {
+bool xremote_cross_remote_add_pause(CrossRemote* remote, int time) {
     CrossRemoteItem* item = xremote_remote_item_alloc();
     CrossRemoteItem* item = xremote_remote_item_alloc();
     xremote_remote_item_set_type(item, XRemoteRemoteItemTypePause);
     xremote_remote_item_set_type(item, XRemoteRemoteItemTypePause);
     char name[9];
     char name[9];
@@ -109,7 +109,7 @@ bool cross_remote_add_pause(CrossRemote* remote, int time) {
     return true;
     return true;
 }
 }
 
 
-bool cross_remote_add_subghz(CrossRemote* remote, SubGhzRemote* subghz) {
+bool xremote_cross_remote_add_subghz(CrossRemote* remote, SubGhzRemote* subghz) {
     UNUSED(subghz);
     UNUSED(subghz);
     CrossRemoteItem* item = xremote_remote_item_alloc();
     CrossRemoteItem* item = xremote_remote_item_alloc();
     xremote_remote_item_set_type(item, XRemoteRemoteItemTypeSubGhz);
     xremote_remote_item_set_type(item, XRemoteRemoteItemTypeSubGhz);
@@ -120,25 +120,33 @@ bool cross_remote_add_subghz(CrossRemote* remote, SubGhzRemote* subghz) {
     return true;
     return true;
 }
 }
 
 
-size_t cross_remote_get_item_count(CrossRemote* remote) {
+size_t xremote_cross_remote_get_item_count(CrossRemote* remote) {
     return CrossRemoteItemArray_size(remote->items);
     return CrossRemoteItemArray_size(remote->items);
 }
 }
 
 
-CrossRemoteItem* cross_remote_get_item(CrossRemote* remote, size_t index) {
+CrossRemoteItem* xremote_cross_remote_get_item(CrossRemote* remote, size_t index) {
     furi_assert(index < CrossRemoteItemArray_size(remote->items));
     furi_assert(index < CrossRemoteItemArray_size(remote->items));
     return *CrossRemoteItemArray_get(remote->items, index);
     return *CrossRemoteItemArray_get(remote->items, index);
 }
 }
 
 
-void cross_remote_remove_item(CrossRemote* remote, size_t index) {
+void xremote_cross_remote_remove_item(CrossRemote* remote, size_t index) {
     CrossRemoteItemArray_erase(remote->items, index);
     CrossRemoteItemArray_erase(remote->items, index);
 }
 }
 
 
-void cross_remote_rename_item(CrossRemote* remote, size_t index, const char* name) {
-    CrossRemoteItem* item = cross_remote_get_item(remote, index);
+void xremote_cross_remote_rename_item(CrossRemote* remote, size_t index, const char* name) {
+    CrossRemoteItem* item = xremote_cross_remote_get_item(remote, index);
     xremote_remote_item_set_name(item, name);
     xremote_remote_item_set_name(item, name);
 }
 }
 
 
-bool cross_remote_load(CrossRemote* remote, FuriString* path) {
+static void xremote_cross_remote_set_name(CrossRemote* remote, const char* name) {
+    furi_string_set(remote->name, name);
+}
+
+static void xremote_cross_remote_set_path(CrossRemote* remote, const char* path) {
+    furi_string_set(remote->path, path);
+}
+
+bool xremote_cross_remote_load(CrossRemote* remote, FuriString* path) {
     Storage* storage = furi_record_open(RECORD_STORAGE);
     Storage* storage = furi_record_open(RECORD_STORAGE);
     FlipperFormat* ff = flipper_format_buffered_file_alloc(storage);
     FlipperFormat* ff = flipper_format_buffered_file_alloc(storage);
     FuriString* buf;
     FuriString* buf;
@@ -156,9 +164,9 @@ bool cross_remote_load(CrossRemote* remote, FuriString* path) {
 
 
         // Init Remote
         // Init Remote
         path_extract_filename(path, buf, true);
         path_extract_filename(path, buf, true);
-        cross_remote_clear_items(remote);
-        cross_remote_set_name(remote, furi_string_get_cstr(buf));
-        cross_remote_set_path(remote, furi_string_get_cstr(path));
+        xremote_cross_remote_clear_items(remote);
+        xremote_cross_remote_set_name(remote, furi_string_get_cstr(buf));
+        xremote_cross_remote_set_path(remote, furi_string_get_cstr(path));
         // Load Items
         // Load Items
         for(bool can_read = true; can_read;) {
         for(bool can_read = true; can_read;) {
             CrossRemoteItem* item = xremote_remote_item_alloc();
             CrossRemoteItem* item = xremote_remote_item_alloc();
@@ -179,49 +187,7 @@ bool cross_remote_load(CrossRemote* remote, FuriString* path) {
     return success;
     return success;
 }
 }
 
 
-void cross_remote_set_name(CrossRemote* remote, const char* name) {
-    furi_string_set(remote->name, name);
-}
-
-void cross_remote_set_path(CrossRemote* remote, const char* path) {
-    furi_string_set(remote->path, path);
-}
-
-bool cross_remote_save_new(CrossRemote* remote, const char* name) {
-    FuriString *new_name, *new_path;
-    new_name = furi_string_alloc_set(name);
-    new_path = furi_string_alloc_set(XREMOTE_APP_FOLDER);
-
-    cross_remote_find_vacant_remote_name(new_name, furi_string_get_cstr(new_path));
-    furi_string_cat_printf(
-        new_path, "/%s%s", furi_string_get_cstr(new_name), XREMOTE_APP_EXTENSION);
-
-    cross_remote_set_name(remote, furi_string_get_cstr(new_name));
-    cross_remote_set_path(remote, furi_string_get_cstr(new_path));
-
-    furi_string_free(new_name);
-    furi_string_free(new_path);
-    return cross_remote_store(remote);
-}
-
-void cross_remote_reset(CrossRemote* remote) {
-    furi_string_reset(remote->name);
-    furi_string_reset(remote->path);
-    CrossRemoteItemArray_clear(remote->items);
-    remote->transmitting = 0;
-}
-
-bool cross_remote_delete(CrossRemote* remote) {
-    Storage* storage = furi_record_open(RECORD_STORAGE);
-    FS_Error status = storage_common_remove(storage, furi_string_get_cstr(remote->path));
-
-    cross_remote_reset(remote);
-
-    furi_record_close(RECORD_STORAGE);
-    return (status == FSE_OK || status == FSE_NOT_EXIST);
-}
-
-bool cross_remote_store(CrossRemote* remote) {
+static bool xremote_cross_remote_store(CrossRemote* remote) {
     Storage* storage = furi_record_open(RECORD_STORAGE);
     Storage* storage = furi_record_open(RECORD_STORAGE);
     FlipperFormat* ff = flipper_format_file_alloc(storage);
     FlipperFormat* ff = flipper_format_file_alloc(storage);
     const char* path = furi_string_get_cstr(remote->path);
     const char* path = furi_string_get_cstr(remote->path);
@@ -260,4 +226,39 @@ bool cross_remote_store(CrossRemote* remote) {
     flipper_format_free(ff);
     flipper_format_free(ff);
     furi_record_close(RECORD_STORAGE);
     furi_record_close(RECORD_STORAGE);
     return success;
     return success;
-}
+}
+
+bool xremote_cross_remote_save_new(CrossRemote* remote, const char* name) {
+    FuriString *new_name, *new_path;
+    new_name = furi_string_alloc_set(name);
+    new_path = furi_string_alloc_set(XREMOTE_APP_FOLDER);
+
+    xremote_cross_remote_find_vacant_remote_name(new_name, furi_string_get_cstr(new_path));
+    furi_string_cat_printf(
+        new_path, "/%s%s", furi_string_get_cstr(new_name), XREMOTE_APP_EXTENSION);
+
+    xremote_cross_remote_set_name(remote, furi_string_get_cstr(new_name));
+    xremote_cross_remote_set_path(remote, furi_string_get_cstr(new_path));
+
+    furi_string_free(new_name);
+    furi_string_free(new_path);
+    return xremote_cross_remote_store(remote);
+}
+
+static void xremote_cross_remote_reset(CrossRemote* remote) {
+    furi_string_reset(remote->name);
+    furi_string_reset(remote->path);
+    CrossRemoteItemArray_clear(remote->items);
+    remote->transmitting = 0;
+}
+
+bool xremote_cross_remote_delete(CrossRemote* remote) {
+    Storage* storage = furi_record_open(RECORD_STORAGE);
+    FS_Error status = storage_common_remove(storage, furi_string_get_cstr(remote->path));
+
+    xremote_cross_remote_reset(remote);
+
+    furi_record_close(RECORD_STORAGE);
+    return (status == FSE_OK || status == FSE_NOT_EXIST);
+}
+

+ 15 - 19
models/cross/xremote_remote.h

@@ -5,24 +5,20 @@
 
 
 #define CROSS_REMOTE_PAUSE_NAME "Pause %ds"
 #define CROSS_REMOTE_PAUSE_NAME "Pause %ds"
 
 
-CrossRemote* cross_remote_alloc();
+CrossRemote* xremote_cross_remote_alloc();
 
 
-void cross_remote_free(CrossRemote* cross_remote);
-bool cross_remote_load(CrossRemote* cross_remote, FuriString* path);
-const char* cross_remote_get_name(CrossRemote* remote);
-void cross_remote_set_transmitting(CrossRemote* remote, int status);
-int cross_remote_get_transmitting(CrossRemote* remote);
-bool cross_remote_add_pause(CrossRemote* remote, int time);
-bool cross_remote_add_ir_item(CrossRemote* remote, const char* name, InfraredSignal* signal);
-bool cross_remote_add_subghz(CrossRemote* remote, SubGhzRemote* subghz);
-void cross_remote_remove_item(CrossRemote* remote, size_t index);
-void cross_remote_rename_item(CrossRemote* remote, size_t index, const char* name);
-size_t cross_remote_get_item_count(CrossRemote* remote);
-CrossRemoteItem* cross_remote_get_item(CrossRemote* remote, size_t index);
+void xremote_cross_remote_free(CrossRemote* cross_remote);
+bool xremote_cross_remote_load(CrossRemote* cross_remote, FuriString* path);
+const char* xremote_cross_remote_get_name(CrossRemote* remote);
+void xremote_cross_remote_set_transmitting(CrossRemote* remote, int status);
+int xremote_cross_remote_get_transmitting(CrossRemote* remote);
+bool xremote_cross_remote_add_pause(CrossRemote* remote, int time);
+bool xremote_cross_remote_add_ir_item(CrossRemote* remote, const char* name, InfraredSignal* signal);
+bool xremote_cross_remote_add_subghz(CrossRemote* remote, SubGhzRemote* subghz);
+void xremote_cross_remote_remove_item(CrossRemote* remote, size_t index);
+void xremote_cross_remote_rename_item(CrossRemote* remote, size_t index, const char* name);
+size_t xremote_cross_remote_get_item_count(CrossRemote* remote);
+CrossRemoteItem* xremote_cross_remote_get_item(CrossRemote* remote, size_t index);
 
 
-void cross_remote_set_name(CrossRemote* remote, const char* name);
-void cross_remote_set_path(CrossRemote* remote, const char* path);
-bool cross_remote_save_new(CrossRemote* remote, const char* name);
-bool cross_remote_store(CrossRemote* remote);
-void cross_remote_reset(CrossRemote* remote);
-bool cross_remote_delete(CrossRemote* remote);
+bool xremote_cross_remote_save_new(CrossRemote* remote, const char* name);
+bool xremote_cross_remote_delete(CrossRemote* remote);

+ 2 - 2
scenes/xremote_scene_create.c

@@ -32,9 +32,9 @@ void xremote_scene_create_on_enter(void* context) {
     ButtonMenu* button_menu = app->button_menu_create;
     ButtonMenu* button_menu = app->button_menu_create;
     //SceneManager* scene_manager = app->scene_manager;
     //SceneManager* scene_manager = app->scene_manager;
 
 
-    size_t item_count = cross_remote_get_item_count(app->cross_remote);
+    size_t item_count = xremote_cross_remote_get_item_count(app->cross_remote);
     for(size_t i = 0; i < item_count; ++i) {
     for(size_t i = 0; i < item_count; ++i) {
-        CrossRemoteItem* item = cross_remote_get_item(app->cross_remote, i);
+        CrossRemoteItem* item = xremote_cross_remote_get_item(app->cross_remote, i);
         button_menu_add_item(
         button_menu_add_item(
             button_menu,
             button_menu,
             xremote_remote_item_get_name(item),
             xremote_remote_item_get_name(item),

+ 1 - 1
scenes/xremote_scene_edit_item.c

@@ -32,7 +32,7 @@ bool xremote_scene_edit_item_on_event(void* context, SceneManagerEvent event) {
         return true;
         return true;
     } else if(event.type == SceneManagerEventTypeCustom) {
     } else if(event.type == SceneManagerEventTypeCustom) {
         if(event.event == SubmenuIndexDelete) {
         if(event.event == SubmenuIndexDelete) {
-            cross_remote_remove_item(app->cross_remote, app->edit_item);
+            xremote_cross_remote_remove_item(app->cross_remote, app->edit_item);
         } else if(event.event == SubmenuIndexRename) {
         } else if(event.event == SubmenuIndexRename) {
             scene_manager_next_scene(app->scene_manager, XRemoteSceneSaveRemoteItem);
             scene_manager_next_scene(app->scene_manager, XRemoteSceneSaveRemoteItem);
             //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
             //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);

+ 1 - 1
scenes/xremote_scene_ir_remote.c

@@ -65,7 +65,7 @@ bool xremote_scene_ir_remote_on_event(void* context, SceneManagerEvent event) {
             const char* button_name = xremote_ir_remote_button_get_name(ir_button);
             const char* button_name = xremote_ir_remote_button_get_name(ir_button);
             InfraredSignal* signal = xremote_ir_remote_button_get_signal(ir_button);
             InfraredSignal* signal = xremote_ir_remote_button_get_signal(ir_button);
 
 
-            cross_remote_add_ir_item(app->cross_remote, button_name, signal);
+            xremote_cross_remote_add_ir_item(app->cross_remote, button_name, signal);
             scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
             scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
             consumed = true;
             consumed = true;
         }
         }

+ 1 - 1
scenes/xremote_scene_pause_set.c

@@ -39,7 +39,7 @@ bool xremote_scene_pause_set_on_event(void* context, SceneManagerEvent event) {
             consumed = true;
             consumed = true;
             break;
             break;
         case XRemoteCustomEventPauseSetOk:
         case XRemoteCustomEventPauseSetOk:
-            //cross_remote_add_pause(app->cross_remote, time);
+            //xremote_cross_remote_add_pause(app->cross_remote, time);
             scene_manager_search_and_switch_to_previous_scene(
             scene_manager_search_and_switch_to_previous_scene(
                 app->scene_manager, XRemoteSceneCreate);
                 app->scene_manager, XRemoteSceneCreate);
             consumed = true;
             consumed = true;

+ 2 - 2
scenes/xremote_scene_save_remote.c

@@ -20,7 +20,7 @@ void xremote_scene_save_remote_on_enter(void* context) {
     //A lot missing here
     //A lot missing here
 
 
     ValidatorIsFile* validator_is_file = validator_is_file_alloc_init(
     ValidatorIsFile* validator_is_file = validator_is_file_alloc_init(
-        furi_string_get_cstr(folder_path), XREMOTE_APP_EXTENSION, cross_remote_get_name(remote));
+        furi_string_get_cstr(folder_path), XREMOTE_APP_EXTENSION, xremote_cross_remote_get_name(remote));
     text_input_set_validator(text_input, validator_is_file_callback, validator_is_file);
     text_input_set_validator(text_input, validator_is_file_callback, validator_is_file);
 
 
     furi_string_free(folder_path);
     furi_string_free(folder_path);
@@ -45,7 +45,7 @@ bool xremote_scene_save_remote_on_event(void* context, SceneManagerEvent event)
     if(event.type == SceneManagerEventTypeCustom) {
     if(event.type == SceneManagerEventTypeCustom) {
         bool success = false;
         bool success = false;
 
 
-        success = cross_remote_save_new(remote, app->text_store[0]);
+        success = xremote_cross_remote_save_new(remote, app->text_store[0]);
 
 
         if(success) {
         if(success) {
             scene_manager_next_scene(scene_manager, XRemoteSceneMenu);
             scene_manager_next_scene(scene_manager, XRemoteSceneMenu);

+ 2 - 2
scenes/xremote_scene_save_remote_item.c

@@ -11,7 +11,7 @@ void xremote_scene_save_remote_item_on_enter(void* context) {
     text_input_set_header_text(text_input, "Name the Sequence");
     text_input_set_header_text(text_input, "Name the Sequence");
 
 
     size_t enter_name_length = XREMOTE_MAX_REMOTE_NAME_LENGTH;
     size_t enter_name_length = XREMOTE_MAX_REMOTE_NAME_LENGTH;
-    CrossRemoteItem* item = cross_remote_get_item(app->cross_remote, app->edit_item);
+    CrossRemoteItem* item = xremote_cross_remote_get_item(app->cross_remote, app->edit_item);
     strncpy(app->text_store[0], furi_string_get_cstr(item->name), enter_name_length);
     strncpy(app->text_store[0], furi_string_get_cstr(item->name), enter_name_length);
     text_input_set_result_callback(
     text_input_set_result_callback(
         text_input,
         text_input,
@@ -31,7 +31,7 @@ bool xremote_scene_save_remote_item_on_event(void* context, SceneManagerEvent ev
     bool consumed = false;
     bool consumed = false;
 
 
     if(event.type == SceneManagerEventTypeCustom) {
     if(event.type == SceneManagerEventTypeCustom) {
-        cross_remote_rename_item(remote, app->edit_item, app->text_store[0]);
+        xremote_cross_remote_rename_item(remote, app->edit_item, app->text_store[0]);
         scene_manager_next_scene(scene_manager, XRemoteSceneCreate);
         scene_manager_next_scene(scene_manager, XRemoteSceneCreate);
         consumed = true;
         consumed = true;
     }
     }

+ 1 - 1
scenes/xremote_scene_sg_list.c

@@ -20,7 +20,7 @@ void xremote_scene_sg_list_on_enter(void* context) {
 
 
         xremote_sg_remote_load(app->sg_remote_buffer, app->file_path);
         xremote_sg_remote_load(app->sg_remote_buffer, app->file_path);
         //xremote_ir_remote_load(app->ir_remote_buffer, app->file_path);
         //xremote_ir_remote_load(app->ir_remote_buffer, app->file_path);
-        cross_remote_add_subghz(app->cross_remote, app->sg_remote_buffer);
+        xremote_cross_remote_add_subghz(app->cross_remote, app->sg_remote_buffer);
     }
     }
 
 
     if(success) {
     if(success) {

+ 8 - 8
scenes/xremote_scene_transmit.c

@@ -103,7 +103,7 @@ void xremote_scene_transmit_send_signal(void* context, CrossRemoteItem* item) {
         xremote_scene_transmit_send_subghz(app, item);
         xremote_scene_transmit_send_subghz(app, item);
     }
     }
 
 
-    cross_remote_set_transmitting(remote, XRemoteTransmittingStop);
+    xremote_cross_remote_set_transmitting(remote, XRemoteTransmittingStop);
 }
 }
 
 
 void xremote_scene_transmit_run_remote(void* context) {
 void xremote_scene_transmit_run_remote(void* context) {
@@ -111,24 +111,24 @@ void xremote_scene_transmit_run_remote(void* context) {
     XRemote* app = context;
     XRemote* app = context;
     CrossRemote* remote = app->cross_remote;
     CrossRemote* remote = app->cross_remote;
 
 
-    size_t item_count = cross_remote_get_item_count(remote);
+    size_t item_count = xremote_cross_remote_get_item_count(remote);
     for(size_t i = 0; i < item_count;) {
     for(size_t i = 0; i < item_count;) {
-        if(cross_remote_get_transmitting(remote) == XRemoteTransmittingIdle) {
-            cross_remote_set_transmitting(remote, XRemoteTransmittingStart);
-            CrossRemoteItem* item = cross_remote_get_item(remote, i);
+        if(xremote_cross_remote_get_transmitting(remote) == XRemoteTransmittingIdle) {
+            xremote_cross_remote_set_transmitting(remote, XRemoteTransmittingStart);
+            CrossRemoteItem* item = xremote_cross_remote_get_item(remote, i);
             xremote_scene_transmit_send_signal(app, item);
             xremote_scene_transmit_send_signal(app, item);
             //furi_thread_flags_wait(0, FuriFlagWaitAny, 2000);
             //furi_thread_flags_wait(0, FuriFlagWaitAny, 2000);
             xremote_scene_ir_notification_message(app, InfraredNotificationMessageBlinkStartSend);
             xremote_scene_ir_notification_message(app, InfraredNotificationMessageBlinkStartSend);
-        } else if(cross_remote_get_transmitting(remote) == XRemoteTransmittingStop) {
+        } else if(xremote_cross_remote_get_transmitting(remote) == XRemoteTransmittingStop) {
             i++;
             i++;
-            cross_remote_set_transmitting(remote, XRemoteTransmittingIdle);
+            xremote_cross_remote_set_transmitting(remote, XRemoteTransmittingIdle);
         }
         }
     }
     }
     xremote_scene_ir_notification_message(app, InfraredNotificationMessageBlinkStop);
     xremote_scene_ir_notification_message(app, InfraredNotificationMessageBlinkStop);
 
 
     //scene_manager_next_scene(app->scene_manager, XRemoteSceneXrList);
     //scene_manager_next_scene(app->scene_manager, XRemoteSceneXrList);
     scene_manager_previous_scene(app->scene_manager);
     scene_manager_previous_scene(app->scene_manager);
-    //xremote_transmit_model_set_name(app->xremote_transmit, cross_remote_get_name(remote));
+    //xremote_transmit_model_set_name(app->xremote_transmit, xremote_cross_remote_get_name(remote));
 }
 }
 
 
 void xremote_scene_transmit_on_enter(void* context) {
 void xremote_scene_transmit_on_enter(void* context) {

+ 1 - 1
scenes/xremote_scene_xr_list.c

@@ -21,7 +21,7 @@ void xremote_scene_xr_list_on_enter(void* context) {
 
 
     if(success) {
     if(success) {
         //Load Remote into buffer
         //Load Remote into buffer
-        success = cross_remote_load(app->cross_remote, app->file_path);
+        success = xremote_cross_remote_load(app->cross_remote, app->file_path);
     }
     }
 
 
     if(success) {
     if(success) {

+ 1 - 1
scenes/xremote_scene_xr_list_edit.c

@@ -16,7 +16,7 @@ void xremote_scene_xr_list_edit_on_enter(void* context) {
 
 
     if(success) {
     if(success) {
         //Load Remote into buffer
         //Load Remote into buffer
-        success = cross_remote_load(app->cross_remote, app->file_path);
+        success = xremote_cross_remote_load(app->cross_remote, app->file_path);
     }
     }
 
 
     if(success) {
     if(success) {

+ 2 - 2
scenes/xremote_scene_xr_list_edit_item.c

@@ -41,11 +41,11 @@ bool xremote_scene_xr_list_edit_item_on_event(void* context, SceneManagerEvent e
         return true;
         return true;
     } else if(event.type == SceneManagerEventTypeCustom) {
     } else if(event.type == SceneManagerEventTypeCustom) {
         if(event.event == SubmenuIndexDelete) {
         if(event.event == SubmenuIndexDelete) {
-            cross_remote_delete(app->cross_remote);
+            xremote_cross_remote_delete(app->cross_remote);
         } else if(event.event == SubmenuIndexEdit) {
         } else if(event.event == SubmenuIndexEdit) {
             strncpy(
             strncpy(
                 app->text_store[0],
                 app->text_store[0],
-                cross_remote_get_name(app->cross_remote),
+                xremote_cross_remote_get_name(app->cross_remote),
                 XREMOTE_MAX_REMOTE_NAME_LENGTH);
                 XREMOTE_MAX_REMOTE_NAME_LENGTH);
             scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
             scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
             return 0;
             return 0;

+ 1 - 1
views/xremote_pause_set.c

@@ -82,7 +82,7 @@ bool xremote_pause_set_input(InputEvent* event, void* context) {
                 XRemotePauseSetModel * model,
                 XRemotePauseSetModel * model,
                 {
                 {
                     XRemote* app = instance->context;
                     XRemote* app = instance->context;
-                    cross_remote_add_pause(app->cross_remote, model->time);
+                    xremote_cross_remote_add_pause(app->cross_remote, model->time);
                 },
                 },
                 true);
                 true);
 
 

+ 3 - 1
xremote.c

@@ -58,7 +58,7 @@ XRemote* xremote_app_alloc() {
 
 
     app->ir_remote_buffer = xremote_ir_remote_alloc();
     app->ir_remote_buffer = xremote_ir_remote_alloc();
     app->ir_worker = infrared_worker_alloc();
     app->ir_worker = infrared_worker_alloc();
-    app->cross_remote = cross_remote_alloc();
+    app->cross_remote = xremote_cross_remote_alloc();
 
 
     app->sg_remote_buffer = xremote_sg_remote_alloc();
     app->sg_remote_buffer = xremote_sg_remote_alloc();
 
 
@@ -123,6 +123,8 @@ void xremote_app_free(XRemote* app) {
 
 
     infrared_worker_free(app->ir_worker);
     infrared_worker_free(app->ir_worker);
 
 
+    xremote_cross_remote_free(app->cross_remote);
+
     // View Dispatcher
     // View Dispatcher
     view_dispatcher_remove_view(app->view_dispatcher, XRemoteViewIdMenu);
     view_dispatcher_remove_view(app->view_dispatcher, XRemoteViewIdMenu);
     view_dispatcher_remove_view(app->view_dispatcher, XRemoteViewIdCreate);
     view_dispatcher_remove_view(app->view_dispatcher, XRemoteViewIdCreate);