Sfoglia il codice sorgente

refactor cross remote item methods

David Lee 2 anni fa
parent
commit
cb639c147e

+ 264 - 264
models/cross/xremote_remote.c → models/cross/xremote_cross_remote.c

@@ -1,264 +1,264 @@
-#include "xremote_remote.h"
-
-ARRAY_DEF(CrossRemoteItemArray, CrossRemoteItem*, M_PTR_OPLIST);
-
-struct CrossRemote {
-    FuriString* name;
-    FuriString* path;
-    CrossRemoteItemArray_t items;
-    int transmitting;
-};
-
-static void xremote_cross_remote_clear_items(CrossRemote* remote) {
-    CrossRemoteItemArray_it_t it;
-    for(CrossRemoteItemArray_it(it, remote->items); !CrossRemoteItemArray_end_p(it);
-        CrossRemoteItemArray_next(it)) {
-        xremote_remote_item_free(*CrossRemoteItemArray_cref(it));
-    }
-    CrossRemoteItemArray_reset(remote->items);
-}
-
-static void xremote_cross_remote_find_vacant_remote_name(FuriString* name, const char* path) {
-    Storage* storage = furi_record_open(RECORD_STORAGE);
-
-    FuriString* base_path;
-    base_path = furi_string_alloc_set(path);
-
-    if(furi_string_end_with(base_path, XREMOTE_APP_EXTENSION)) {
-        size_t filename_start = furi_string_search_rchar(base_path, '/');
-        furi_string_left(base_path, filename_start);
-    }
-
-    furi_string_printf(
-        base_path, "%s/%s%s", path, furi_string_get_cstr(name), XREMOTE_APP_EXTENSION);
-
-    FS_Error status = storage_common_stat(storage, furi_string_get_cstr(base_path), NULL);
-
-    if(status == FSE_OK) {
-        // If name is taken, try another name2, name3 etc
-        size_t dot = furi_string_search_rchar(base_path, '.');
-        furi_string_left(base_path, dot);
-
-        FuriString* path_temp;
-        path_temp = furi_string_alloc();
-
-        uint32_t i = 1;
-        do {
-            furi_string_printf(
-                path_temp, "%s%lu%s", furi_string_get_cstr(base_path), ++i, XREMOTE_APP_EXTENSION);
-            status = storage_common_stat(storage, furi_string_get_cstr(path_temp), NULL);
-        } while(status == FSE_OK);
-
-        furi_string_free(path_temp);
-
-        if(status == FSE_NOT_EXIST) {
-            furi_string_cat_printf(name, "%lu", i);
-        }
-    }
-
-    furi_string_free(base_path);
-    furi_record_close(RECORD_STORAGE);
-}
-
-CrossRemote* xremote_cross_remote_alloc() {
-    CrossRemote* remote = malloc(sizeof(CrossRemote));
-    CrossRemoteItemArray_init(remote->items);
-    remote->name = furi_string_alloc();
-    remote->path = furi_string_alloc();
-    remote->transmitting = 0;
-    return remote;
-}
-
-void xremote_cross_remote_set_transmitting(CrossRemote* remote, int status) {
-    remote->transmitting = status;
-}
-
-int xremote_cross_remote_get_transmitting(CrossRemote* remote) {
-    return remote->transmitting;
-}
-
-void xremote_cross_remote_free(CrossRemote* remote) {
-    furi_string_free(remote->name);
-    furi_string_free(remote->path);
-    xremote_cross_remote_clear_items(remote);
-    CrossRemoteItemArray_clear(remote->items);
-    free(remote);
-}
-
-const char* xremote_cross_remote_get_name(CrossRemote* remote) {
-    return furi_string_get_cstr(remote->name);
-}
-
-bool xremote_cross_remote_add_ir_item(CrossRemote* remote, const char* name, InfraredSignal* signal) {
-    CrossRemoteItem* item = xremote_remote_item_alloc();
-    xremote_remote_item_set_type(item, XRemoteRemoteItemTypeInfrared);
-    xremote_remote_item_set_name(item, name);
-    xremote_remote_item_set_ir_signal(item, signal);
-    CrossRemoteItemArray_push_back(remote->items, item);
-    return true;
-}
-
-bool xremote_cross_remote_add_pause(CrossRemote* remote, int time) {
-    CrossRemoteItem* item = xremote_remote_item_alloc();
-    xremote_remote_item_set_type(item, XRemoteRemoteItemTypePause);
-    char name[9];
-    snprintf(name, 9, CROSS_REMOTE_PAUSE_NAME, time);
-    xremote_remote_item_set_name(item, name);
-    xremote_remote_item_set_time(item, time);
-    CrossRemoteItemArray_push_back(remote->items, item);
-    return true;
-}
-
-bool xremote_cross_remote_add_subghz(CrossRemote* remote, SubGhzRemote* subghz) {
-    UNUSED(subghz);
-    CrossRemoteItem* item = xremote_remote_item_alloc();
-    xremote_remote_item_set_type(item, XRemoteRemoteItemTypeSubGhz);
-    xremote_remote_item_set_name(item, xremote_sg_remote_get_name(subghz));
-    xremote_remote_item_set_sg_signal(item, subghz);
-
-    CrossRemoteItemArray_push_back(remote->items, item);
-    return true;
-}
-
-size_t xremote_cross_remote_get_item_count(CrossRemote* remote) {
-    return CrossRemoteItemArray_size(remote->items);
-}
-
-CrossRemoteItem* xremote_cross_remote_get_item(CrossRemote* remote, size_t index) {
-    furi_assert(index < CrossRemoteItemArray_size(remote->items));
-    return *CrossRemoteItemArray_get(remote->items, index);
-}
-
-void xremote_cross_remote_remove_item(CrossRemote* remote, size_t index) {
-    CrossRemoteItemArray_erase(remote->items, 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);
-}
-
-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);
-    FlipperFormat* ff = flipper_format_buffered_file_alloc(storage);
-    FuriString* buf;
-    buf = furi_string_alloc();
-
-    FURI_LOG_I(TAG, "loading file: \'%s\'", furi_string_get_cstr(path));
-    bool success = false;
-    do {
-        // File not found
-        if(!flipper_format_buffered_file_open_existing(ff, furi_string_get_cstr(path))) break;
-        uint32_t version;
-        // Read Version & Type
-        if(!flipper_format_read_header(ff, buf, &version)) break;
-        if(!furi_string_equal(buf, XREMOTE_FILE_TYPE) || (version != XREMOTE_FILE_VERSION)) break;
-
-        // Init Remote
-        path_extract_filename(path, buf, true);
-        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
-        for(bool can_read = true; can_read;) {
-            CrossRemoteItem* item = xremote_remote_item_alloc();
-            can_read = xremote_remote_item_read(item, ff);
-            if(can_read) {
-                CrossRemoteItemArray_push_back(remote->items, item);
-            } else {
-                xremote_remote_item_free(item);
-            }
-        }
-        success = true;
-    } while(false);
-
-    furi_string_free(buf);
-    flipper_format_buffered_file_close(ff);
-    flipper_format_free(ff);
-    furi_record_close(RECORD_STORAGE);
-    return success;
-}
-
-static bool xremote_cross_remote_store(CrossRemote* remote) {
-    Storage* storage = furi_record_open(RECORD_STORAGE);
-    FlipperFormat* ff = flipper_format_file_alloc(storage);
-    const char* path = furi_string_get_cstr(remote->path);
-
-    FURI_LOG_I(TAG, "Storing file: \'%s\'", path);
-
-    bool success = flipper_format_file_open_always(ff, path) &&
-                   flipper_format_write_header_cstr(ff, XREMOTE_FILE_TYPE, XREMOTE_FILE_VERSION);
-
-    // save Items
-    if(success) {
-        CrossRemoteItemArray_it_t it;
-        for(CrossRemoteItemArray_it(it, remote->items); !CrossRemoteItemArray_end_p(it);
-            CrossRemoteItemArray_next(it)) {
-            CrossRemoteItem* item = *CrossRemoteItemArray_cref(it);
-            success = false;
-            if(item->type == XRemoteRemoteItemTypeInfrared) {
-                success = xremote_ir_signal_save(
-                    xremote_remote_item_get_ir_signal(item),
-                    ff,
-                    xremote_remote_item_get_name(item));
-            } else if(item->type == XRemoteRemoteItemTypePause) {
-                success = xremote_pause_save(ff, item->time, xremote_remote_item_get_name(item));
-            } else if(item->type == XRemoteRemoteItemTypeSubGhz) {
-                success = xremote_sg_signal_save(
-                    xremote_remote_item_get_sg_signal(item),
-                    ff,
-                    xremote_remote_item_get_name(item));
-            }
-            if(!success) {
-                break;
-            }
-        }
-    }
-
-    flipper_format_free(ff);
-    furi_record_close(RECORD_STORAGE);
-    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);
-}
-
+#include "xremote_cross_remote.h"
+
+ARRAY_DEF(CrossRemoteItemArray, CrossRemoteItem*, M_PTR_OPLIST);
+
+struct CrossRemote {
+    FuriString* name;
+    FuriString* path;
+    CrossRemoteItemArray_t items;
+    int transmitting;
+};
+
+static void xremote_cross_remote_clear_items(CrossRemote* remote) {
+    CrossRemoteItemArray_it_t it;
+    for(CrossRemoteItemArray_it(it, remote->items); !CrossRemoteItemArray_end_p(it);
+        CrossRemoteItemArray_next(it)) {
+        xremote_cross_remote_item_free(*CrossRemoteItemArray_cref(it));
+    }
+    CrossRemoteItemArray_reset(remote->items);
+}
+
+static void xremote_cross_remote_find_vacant_remote_name(FuriString* name, const char* path) {
+    Storage* storage = furi_record_open(RECORD_STORAGE);
+
+    FuriString* base_path;
+    base_path = furi_string_alloc_set(path);
+
+    if(furi_string_end_with(base_path, XREMOTE_APP_EXTENSION)) {
+        size_t filename_start = furi_string_search_rchar(base_path, '/');
+        furi_string_left(base_path, filename_start);
+    }
+
+    furi_string_printf(
+        base_path, "%s/%s%s", path, furi_string_get_cstr(name), XREMOTE_APP_EXTENSION);
+
+    FS_Error status = storage_common_stat(storage, furi_string_get_cstr(base_path), NULL);
+
+    if(status == FSE_OK) {
+        // If name is taken, try another name2, name3 etc
+        size_t dot = furi_string_search_rchar(base_path, '.');
+        furi_string_left(base_path, dot);
+
+        FuriString* path_temp;
+        path_temp = furi_string_alloc();
+
+        uint32_t i = 1;
+        do {
+            furi_string_printf(
+                path_temp, "%s%lu%s", furi_string_get_cstr(base_path), ++i, XREMOTE_APP_EXTENSION);
+            status = storage_common_stat(storage, furi_string_get_cstr(path_temp), NULL);
+        } while(status == FSE_OK);
+
+        furi_string_free(path_temp);
+
+        if(status == FSE_NOT_EXIST) {
+            furi_string_cat_printf(name, "%lu", i);
+        }
+    }
+
+    furi_string_free(base_path);
+    furi_record_close(RECORD_STORAGE);
+}
+
+CrossRemote* xremote_cross_remote_alloc() {
+    CrossRemote* remote = malloc(sizeof(CrossRemote));
+    CrossRemoteItemArray_init(remote->items);
+    remote->name = furi_string_alloc();
+    remote->path = furi_string_alloc();
+    remote->transmitting = 0;
+    return remote;
+}
+
+void xremote_cross_remote_set_transmitting(CrossRemote* remote, int status) {
+    remote->transmitting = status;
+}
+
+int xremote_cross_remote_get_transmitting(CrossRemote* remote) {
+    return remote->transmitting;
+}
+
+void xremote_cross_remote_free(CrossRemote* remote) {
+    furi_string_free(remote->name);
+    furi_string_free(remote->path);
+    xremote_cross_remote_clear_items(remote);
+    CrossRemoteItemArray_clear(remote->items);
+    free(remote);
+}
+
+const char* xremote_cross_remote_get_name(CrossRemote* remote) {
+    return furi_string_get_cstr(remote->name);
+}
+
+bool xremote_cross_remote_add_ir_item(CrossRemote* remote, const char* name, InfraredSignal* signal) {
+    CrossRemoteItem* item = xremote_cross_remote_item_alloc();
+    xremote_cross_remote_item_set_type(item, XRemoteRemoteItemTypeInfrared);
+    xremote_cross_remote_item_set_name(item, name);
+    xremote_cross_remote_item_set_ir_signal(item, signal);
+    CrossRemoteItemArray_push_back(remote->items, item);
+    return true;
+}
+
+bool xremote_cross_remote_add_pause(CrossRemote* remote, int time) {
+    CrossRemoteItem* item = xremote_cross_remote_item_alloc();
+    xremote_cross_remote_item_set_type(item, XRemoteRemoteItemTypePause);
+    char name[9];
+    snprintf(name, 9, CROSS_REMOTE_PAUSE_NAME, time);
+    xremote_cross_remote_item_set_name(item, name);
+    xremote_cross_remote_item_set_time(item, time);
+    CrossRemoteItemArray_push_back(remote->items, item);
+    return true;
+}
+
+bool xremote_cross_remote_add_subghz(CrossRemote* remote, SubGhzRemote* subghz) {
+    UNUSED(subghz);
+    CrossRemoteItem* item = xremote_cross_remote_item_alloc();
+    xremote_cross_remote_item_set_type(item, XRemoteRemoteItemTypeSubGhz);
+    xremote_cross_remote_item_set_name(item, xremote_sg_remote_get_name(subghz));
+    xremote_cross_remote_item_set_sg_signal(item, subghz);
+
+    CrossRemoteItemArray_push_back(remote->items, item);
+    return true;
+}
+
+size_t xremote_cross_remote_get_item_count(CrossRemote* remote) {
+    return CrossRemoteItemArray_size(remote->items);
+}
+
+CrossRemoteItem* xremote_cross_remote_get_item(CrossRemote* remote, size_t index) {
+    furi_assert(index < CrossRemoteItemArray_size(remote->items));
+    return *CrossRemoteItemArray_get(remote->items, index);
+}
+
+void xremote_cross_remote_remove_item(CrossRemote* remote, size_t index) {
+    CrossRemoteItemArray_erase(remote->items, 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_cross_remote_item_set_name(item, name);
+}
+
+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);
+    FlipperFormat* ff = flipper_format_buffered_file_alloc(storage);
+    FuriString* buf;
+    buf = furi_string_alloc();
+
+    FURI_LOG_I(TAG, "loading file: \'%s\'", furi_string_get_cstr(path));
+    bool success = false;
+    do {
+        // File not found
+        if(!flipper_format_buffered_file_open_existing(ff, furi_string_get_cstr(path))) break;
+        uint32_t version;
+        // Read Version & Type
+        if(!flipper_format_read_header(ff, buf, &version)) break;
+        if(!furi_string_equal(buf, XREMOTE_FILE_TYPE) || (version != XREMOTE_FILE_VERSION)) break;
+
+        // Init Remote
+        path_extract_filename(path, buf, true);
+        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
+        for(bool can_read = true; can_read;) {
+            CrossRemoteItem* item = xremote_cross_remote_item_alloc();
+            can_read = xremote_cross_remote_item_read(item, ff);
+            if(can_read) {
+                CrossRemoteItemArray_push_back(remote->items, item);
+            } else {
+                xremote_cross_remote_item_free(item);
+            }
+        }
+        success = true;
+    } while(false);
+
+    furi_string_free(buf);
+    flipper_format_buffered_file_close(ff);
+    flipper_format_free(ff);
+    furi_record_close(RECORD_STORAGE);
+    return success;
+}
+
+static bool xremote_cross_remote_store(CrossRemote* remote) {
+    Storage* storage = furi_record_open(RECORD_STORAGE);
+    FlipperFormat* ff = flipper_format_file_alloc(storage);
+    const char* path = furi_string_get_cstr(remote->path);
+
+    FURI_LOG_I(TAG, "Storing file: \'%s\'", path);
+
+    bool success = flipper_format_file_open_always(ff, path) &&
+                   flipper_format_write_header_cstr(ff, XREMOTE_FILE_TYPE, XREMOTE_FILE_VERSION);
+
+    // save Items
+    if(success) {
+        CrossRemoteItemArray_it_t it;
+        for(CrossRemoteItemArray_it(it, remote->items); !CrossRemoteItemArray_end_p(it);
+            CrossRemoteItemArray_next(it)) {
+            CrossRemoteItem* item = *CrossRemoteItemArray_cref(it);
+            success = false;
+            if(item->type == XRemoteRemoteItemTypeInfrared) {
+                success = xremote_cross_remote_item_ir_signal_save(
+                    xremote_cross_remote_item_get_ir_signal(item),
+                    ff,
+                    xremote_cross_remote_item_get_name(item));
+            } else if(item->type == XRemoteRemoteItemTypePause) {
+                success = xremote_cross_remote_item_pause_save(ff, item->time, xremote_cross_remote_item_get_name(item));
+            } else if(item->type == XRemoteRemoteItemTypeSubGhz) {
+                success = xremote_cross_remote_item_sg_signal_save(
+                    xremote_cross_remote_item_get_sg_signal(item),
+                    ff,
+                    xremote_cross_remote_item_get_name(item));
+            }
+            if(!success) {
+                break;
+            }
+        }
+    }
+
+    flipper_format_free(ff);
+    furi_record_close(RECORD_STORAGE);
+    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);
+}
+

+ 23 - 23
models/cross/xremote_remote.h → models/cross/xremote_cross_remote.h

@@ -1,24 +1,24 @@
-#pragma once
-
-#include "xremote_remote_item.h"
-#include "../../xremote_i.h"
-
-#define CROSS_REMOTE_PAUSE_NAME "Pause %ds"
-
-CrossRemote* xremote_cross_remote_alloc();
-
-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);
-
-bool xremote_cross_remote_save_new(CrossRemote* remote, const char* name);
+#pragma once
+
+#include "xremote_cross_remote_item.h"
+#include "../../xremote_i.h"
+
+#define CROSS_REMOTE_PAUSE_NAME "Pause %ds"
+
+CrossRemote* xremote_cross_remote_alloc();
+
+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);
+
+bool xremote_cross_remote_save_new(CrossRemote* remote, const char* name);
 bool xremote_cross_remote_delete(CrossRemote* remote);

+ 260 - 262
models/cross/xremote_remote_item.c → models/cross/xremote_cross_remote_item.c

@@ -1,262 +1,260 @@
-#include "xremote_remote_item.h"
-
-CrossRemoteItem* xremote_remote_item_alloc() {
-    CrossRemoteItem* item = malloc(sizeof(CrossRemoteItem));
-    item->name = furi_string_alloc();
-    item->time = 0;
-    item->type = 0;
-    item->ir_signal = xremote_ir_signal_alloc();
-    item->sg_signal = xremote_sg_remote_alloc();
-
-    return item;
-}
-
-static inline bool xremote_ir_signal_save_message(InfraredMessage* message, FlipperFormat* ff) {
-    const char* protocol_name = infrared_get_protocol_name(message->protocol);
-    return flipper_format_write_string_cstr(ff, "type", "parsed") &&
-           flipper_format_write_string_cstr(ff, "protocol", protocol_name) &&
-           flipper_format_write_hex(ff, "address", (uint8_t*)&message->address, 4) &&
-           flipper_format_write_hex(ff, "command", (uint8_t*)&message->command, 4);
-}
-
-static inline bool xremote_ir_signal_save_raw(InfraredRawSignal* raw, FlipperFormat* ff) {
-    furi_assert(raw->timings_size <= MAX_TIMINGS_AMOUNT);
-    return flipper_format_write_string_cstr(ff, "type", "raw") &&
-           flipper_format_write_uint32(ff, "frequency", &raw->frequency, 1) &&
-           flipper_format_write_float(ff, "duty_cycle", &raw->duty_cycle, 1) &&
-           flipper_format_write_uint32(ff, "data", raw->timings, raw->timings_size);
-}
-
-static inline bool xremote_sg_signal_save_data(SubGhzRemote* remote, FlipperFormat* ff) {
-    UNUSED(remote);
-    UNUSED(ff);
-    return true;
-    /*return flipper_format_write_uint32(ff, "frequency", xremote_sg_remote_get_frequency(remote)) &&
-           flipper_format_write_string_cstr(ff, "preset", xremote_sg_remote_get_preset(remote));*/
-}
-
-static bool xremote_ir_signal_is_message_valid(InfraredMessage* message) {
-    if(!infrared_is_protocol_valid(message->protocol)) {
-        FURI_LOG_E(TAG, "Unknown protocol");
-        return false;
-    }
-
-    uint32_t address_length = infrared_get_protocol_address_length(message->protocol);
-    uint32_t address_mask = (1UL << address_length) - 1;
-
-    if(message->address != (message->address & address_mask)) {
-        FURI_LOG_E(
-            TAG,
-            "Address is out of range (mask 0x%08lX): 0x%lX\r\n",
-            address_mask,
-            message->address);
-        return false;
-    }
-
-    uint32_t command_length = infrared_get_protocol_command_length(message->protocol);
-    uint32_t command_mask = (1UL << command_length) - 1;
-
-    if(message->command != (message->command & command_mask)) {
-        FURI_LOG_E(
-            TAG,
-            "Command is out of range (mask 0x%08lX): 0x%lX\r\n",
-            command_mask,
-            message->command);
-        return false;
-    }
-
-    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) {
-    FuriString* type = furi_string_alloc();
-    bool success = false;
-    do {
-        if(!flipper_format_read_string(ff, "remote_type", type)) break;
-        if(furi_string_equal(type, "IR")) {
-            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")) {
-            success = xremote_remote_item_read_pause(item, ff);
-        } else {
-            break;
-        }
-        success = true;
-    } while(false);
-    furi_string_free(type);
-    return success;
-}
-
-
-
-bool xremote_remote_item_read_ir(CrossRemoteItem* item, FlipperFormat* ff) {
-    FuriString* buf;
-    bool success = false;
-    buf = furi_string_alloc();
-    item->type = XRemoteRemoteItemTypeInfrared;
-    item->time = 0;
-
-    do {
-        if(!flipper_format_read_string(ff, "name", item->name)) break;
-        if(!flipper_format_read_string(ff, "type", buf)) break;
-        if(furi_string_equal(buf, "raw")) {
-            if(!xremote_remote_item_read_ir_signal_raw(item, ff)) break;
-        } else if(furi_string_equal(buf, "parsed")) {
-            if(!xremote_remote_item_read_message(item, ff)) break;
-        } else {
-            break;
-        }
-        success = true;
-    } while(false);
-    furi_string_free(buf);
-
-    return success;
-}
-
-bool xremote_remote_item_read_pause(CrossRemoteItem* item, FlipperFormat* ff) {
-    bool success = false;
-    item->type = XRemoteRemoteItemTypePause;
-
-    do {
-        if(!flipper_format_read_string(ff, "name", item->name)) break;
-        if(!flipper_format_read_int32(ff, "time", &item->time, 1)) break;
-        success = true;
-    } while(false);
-
-    return success;
-}
-
-bool xremote_remote_item_read_ir_signal_raw(CrossRemoteItem* item, FlipperFormat* ff) {
-    uint32_t timings_size, frequency;
-    float duty_cycle;
-
-    bool success = flipper_format_read_uint32(ff, "frequency", &frequency, 1) &&
-                   flipper_format_read_float(ff, "duty_cycle", &duty_cycle, 1) &&
-                   flipper_format_get_value_count(ff, "data", &timings_size);
-
-    if(!success || timings_size > MAX_TIMINGS_AMOUNT) {
-        return false;
-    }
-
-    uint32_t* timings = malloc(sizeof(uint32_t) * timings_size);
-    success = flipper_format_read_uint32(ff, "data", timings, timings_size);
-
-    if(success) {
-        xremote_ir_signal_set_raw_signal(
-            item->ir_signal, timings, timings_size, frequency, duty_cycle);
-    }
-
-    free(timings);
-
-    return success;
-}
-
-bool xremote_remote_item_read_message(CrossRemoteItem* item, FlipperFormat* ff) {
-    FuriString* buf = furi_string_alloc();
-    bool success = false;
-
-    do {
-        if(!flipper_format_read_string(ff, "protocol", buf)) break;
-        InfraredMessage message;
-        message.protocol = infrared_get_protocol_by_name(furi_string_get_cstr(buf));
-        success = flipper_format_read_hex(ff, "address", (uint8_t*)&message.address, 4) &&
-                  flipper_format_read_hex(ff, "command", (uint8_t*)&message.command, 4) &&
-                  xremote_ir_signal_is_message_valid(&message);
-
-        if(!success) break;
-
-        xremote_ir_signal_set_message(item->ir_signal, &message);
-    } while(false);
-
-    furi_string_free(buf);
-    return success;
-}
-
-void xremote_remote_item_free(CrossRemoteItem* item) {
-    furi_string_free(item->name);
-    //Determine type before free
-    //xremote_ir_signal_free(item->ir_signal);
-    //xremote_sg_remote_free(item->sg_signal);
-    free(item);
-}
-
-void xremote_remote_item_set_type(CrossRemoteItem* item, int type) {
-    item->type = type;
-}
-
-void xremote_remote_item_set_name(CrossRemoteItem* item, const char* name) {
-    furi_string_set(item->name, name);
-}
-
-void xremote_remote_item_set_time(CrossRemoteItem* item, int32_t time) {
-    item->time = time;
-}
-
-void xremote_remote_item_set_ir_signal(CrossRemoteItem* item, InfraredSignal* signal) {
-    xremote_ir_signal_set_signal(item->ir_signal, signal);
-}
-
-void xremote_remote_item_set_sg_signal(CrossRemoteItem* item, SubGhzRemote* subghz) {
-    item->sg_signal = subghz;
-}
-
-const char* xremote_remote_item_get_name(CrossRemoteItem* item) {
-    return furi_string_get_cstr(item->name);
-}
-
-InfraredSignal* xremote_remote_item_get_ir_signal(CrossRemoteItem* item) {
-    return item->ir_signal;
-}
-
-SubGhzRemote* xremote_remote_item_get_sg_signal(CrossRemoteItem* item) {
-    return item->sg_signal;
-}
-
-bool xremote_ir_signal_save(InfraredSignal* signal, FlipperFormat* ff, const char* name) {
-    if(!flipper_format_write_comment_cstr(ff, "") ||
-       !flipper_format_write_string_cstr(ff, "remote_type", "IR") ||
-       !flipper_format_write_string_cstr(ff, "name", name)) {
-        return false;
-    } else if(signal->is_raw) {
-        return xremote_ir_signal_save_raw(&signal->payload.raw, ff);
-    } else {
-        return xremote_ir_signal_save_message(&signal->payload.message, ff);
-    }
-}
-
-bool xremote_pause_save(FlipperFormat* ff, int32_t time, const char* name) {
-    if(!flipper_format_write_comment_cstr(ff, "") ||
-       !flipper_format_write_string_cstr(ff, "remote_type", "PAUSE") ||
-       !flipper_format_write_string_cstr(ff, "name", name) ||
-       !flipper_format_write_int32(ff, "time", &time, 1)) {
-        return false;
-    }
-    return true;
-}
-
-bool xremote_sg_signal_save(SubGhzRemote* remote, FlipperFormat* ff, const char* name) {
-    if(!flipper_format_write_comment_cstr(ff, "") ||
-       !flipper_format_write_string_cstr(ff, "remote_type", "SG") ||
-       !flipper_format_write_string_cstr(ff, "name", name) ||
-       !flipper_format_write_string_cstr(ff, "filename", xremote_sg_remote_get_filename(remote))) {
-        return false;
-    }
-    return xremote_sg_signal_save_data(remote, ff);
-}
+#include "xremote_cross_remote_item.h"
+
+CrossRemoteItem* xremote_cross_remote_item_alloc() {
+    CrossRemoteItem* item = malloc(sizeof(CrossRemoteItem));
+    item->name = furi_string_alloc();
+    item->time = 0;
+    item->type = 0;
+    item->ir_signal = xremote_ir_signal_alloc();
+    item->sg_signal = xremote_sg_remote_alloc();
+
+    return item;
+}
+
+static inline bool xremote_ir_signal_save_message(InfraredMessage* message, FlipperFormat* ff) {
+    const char* protocol_name = infrared_get_protocol_name(message->protocol);
+    return flipper_format_write_string_cstr(ff, "type", "parsed") &&
+           flipper_format_write_string_cstr(ff, "protocol", protocol_name) &&
+           flipper_format_write_hex(ff, "address", (uint8_t*)&message->address, 4) &&
+           flipper_format_write_hex(ff, "command", (uint8_t*)&message->command, 4);
+}
+
+static inline bool xremote_ir_signal_save_raw(InfraredRawSignal* raw, FlipperFormat* ff) {
+    furi_assert(raw->timings_size <= MAX_TIMINGS_AMOUNT);
+    return flipper_format_write_string_cstr(ff, "type", "raw") &&
+           flipper_format_write_uint32(ff, "frequency", &raw->frequency, 1) &&
+           flipper_format_write_float(ff, "duty_cycle", &raw->duty_cycle, 1) &&
+           flipper_format_write_uint32(ff, "data", raw->timings, raw->timings_size);
+}
+
+static inline bool xremote_sg_signal_save_data(SubGhzRemote* remote, FlipperFormat* ff) {
+    UNUSED(remote);
+    UNUSED(ff);
+    return true;
+    /*return flipper_format_write_uint32(ff, "frequency", xremote_sg_remote_get_frequency(remote)) &&
+           flipper_format_write_string_cstr(ff, "preset", xremote_sg_remote_get_preset(remote));*/
+}
+
+static bool xremote_ir_signal_is_message_valid(InfraredMessage* message) {
+    if(!infrared_is_protocol_valid(message->protocol)) {
+        FURI_LOG_E(TAG, "Unknown protocol");
+        return false;
+    }
+
+    uint32_t address_length = infrared_get_protocol_address_length(message->protocol);
+    uint32_t address_mask = (1UL << address_length) - 1;
+
+    if(message->address != (message->address & address_mask)) {
+        FURI_LOG_E(
+            TAG,
+            "Address is out of range (mask 0x%08lX): 0x%lX\r\n",
+            address_mask,
+            message->address);
+        return false;
+    }
+
+    uint32_t command_length = infrared_get_protocol_command_length(message->protocol);
+    uint32_t command_mask = (1UL << command_length) - 1;
+
+    if(message->command != (message->command & command_mask)) {
+        FURI_LOG_E(
+            TAG,
+            "Command is out of range (mask 0x%08lX): 0x%lX\r\n",
+            command_mask,
+            message->command);
+        return false;
+    }
+
+    return true;
+}
+
+static bool xremote_cross_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;
+}
+
+static bool xremote_cross_remote_item_read_ir_signal_raw(CrossRemoteItem* item, FlipperFormat* ff) {
+    uint32_t timings_size, frequency;
+    float duty_cycle;
+
+    bool success = flipper_format_read_uint32(ff, "frequency", &frequency, 1) &&
+                   flipper_format_read_float(ff, "duty_cycle", &duty_cycle, 1) &&
+                   flipper_format_get_value_count(ff, "data", &timings_size);
+
+    if(!success || timings_size > MAX_TIMINGS_AMOUNT) {
+        return false;
+    }
+
+    uint32_t* timings = malloc(sizeof(uint32_t) * timings_size);
+    success = flipper_format_read_uint32(ff, "data", timings, timings_size);
+
+    if(success) {
+        xremote_ir_signal_set_raw_signal(
+            item->ir_signal, timings, timings_size, frequency, duty_cycle);
+    }
+
+    free(timings);
+
+    return success;
+}
+
+static bool xremote_cross_remote_item_read_message(CrossRemoteItem* item, FlipperFormat* ff) {
+    FuriString* buf = furi_string_alloc();
+    bool success = false;
+
+    do {
+        if(!flipper_format_read_string(ff, "protocol", buf)) break;
+        InfraredMessage message;
+        message.protocol = infrared_get_protocol_by_name(furi_string_get_cstr(buf));
+        success = flipper_format_read_hex(ff, "address", (uint8_t*)&message.address, 4) &&
+                  flipper_format_read_hex(ff, "command", (uint8_t*)&message.command, 4) &&
+                  xremote_ir_signal_is_message_valid(&message);
+
+        if(!success) break;
+
+        xremote_ir_signal_set_message(item->ir_signal, &message);
+    } while(false);
+
+    furi_string_free(buf);
+    return success;
+}
+
+static bool xremote_cross_remote_item_read_ir(CrossRemoteItem* item, FlipperFormat* ff) {
+    FuriString* buf;
+    bool success = false;
+    buf = furi_string_alloc();
+    item->type = XRemoteRemoteItemTypeInfrared;
+    item->time = 0;
+
+    do {
+        if(!flipper_format_read_string(ff, "name", item->name)) break;
+        if(!flipper_format_read_string(ff, "type", buf)) break;
+        if(furi_string_equal(buf, "raw")) {
+            if(!xremote_cross_remote_item_read_ir_signal_raw(item, ff)) break;
+        } else if(furi_string_equal(buf, "parsed")) {
+            if(!xremote_cross_remote_item_read_message(item, ff)) break;
+        } else {
+            break;
+        }
+        success = true;
+    } while(false);
+    furi_string_free(buf);
+
+    return success;
+}
+
+static bool xremote_cross_remote_item_read_pause(CrossRemoteItem* item, FlipperFormat* ff) {
+    bool success = false;
+    item->type = XRemoteRemoteItemTypePause;
+
+    do {
+        if(!flipper_format_read_string(ff, "name", item->name)) break;
+        if(!flipper_format_read_int32(ff, "time", &item->time, 1)) break;
+        success = true;
+    } while(false);
+
+    return success;
+}
+
+bool xremote_cross_remote_item_read(CrossRemoteItem* item, FlipperFormat* ff) {
+    FuriString* type = furi_string_alloc();
+    bool success = false;
+    do {
+        if(!flipper_format_read_string(ff, "remote_type", type)) break;
+        if(furi_string_equal(type, "IR")) {
+            success = xremote_cross_remote_item_read_ir(item, ff);
+        } else if(furi_string_equal(type, "SG")) {
+            success = xremote_cross_remote_item_read_sg(item, ff);
+        } else if(furi_string_equal(type, "PAUSE")) {
+            success = xremote_cross_remote_item_read_pause(item, ff);
+        } else {
+            break;
+        }
+        success = true;
+    } while(false);
+    furi_string_free(type);
+    return success;
+}
+
+void xremote_cross_remote_item_free(CrossRemoteItem* item) {
+    furi_string_free(item->name);
+    //Determine type before free
+    //xremote_ir_signal_free(item->ir_signal);
+    //xremote_sg_remote_free(item->sg_signal);
+    free(item);
+}
+
+void xremote_cross_remote_item_set_type(CrossRemoteItem* item, int type) {
+    item->type = type;
+}
+
+void xremote_cross_remote_item_set_name(CrossRemoteItem* item, const char* name) {
+    furi_string_set(item->name, name);
+}
+
+void xremote_cross_remote_item_set_time(CrossRemoteItem* item, int32_t time) {
+    item->time = time;
+}
+
+void xremote_cross_remote_item_set_ir_signal(CrossRemoteItem* item, InfraredSignal* signal) {
+    xremote_ir_signal_set_signal(item->ir_signal, signal);
+}
+
+void xremote_cross_remote_item_set_sg_signal(CrossRemoteItem* item, SubGhzRemote* subghz) {
+    item->sg_signal = subghz;
+}
+
+const char* xremote_cross_remote_item_get_name(CrossRemoteItem* item) {
+    return furi_string_get_cstr(item->name);
+}
+
+InfraredSignal* xremote_cross_remote_item_get_ir_signal(CrossRemoteItem* item) {
+    return item->ir_signal;
+}
+
+SubGhzRemote* xremote_cross_remote_item_get_sg_signal(CrossRemoteItem* item) {
+    return item->sg_signal;
+}
+
+bool xremote_cross_remote_item_ir_signal_save(InfraredSignal* signal, FlipperFormat* ff, const char* name) {
+    if(!flipper_format_write_comment_cstr(ff, "") ||
+       !flipper_format_write_string_cstr(ff, "remote_type", "IR") ||
+       !flipper_format_write_string_cstr(ff, "name", name)) {
+        return false;
+    } else if(signal->is_raw) {
+        return xremote_ir_signal_save_raw(&signal->payload.raw, ff);
+    } else {
+        return xremote_ir_signal_save_message(&signal->payload.message, ff);
+    }
+}
+
+bool xremote_cross_remote_item_pause_save(FlipperFormat* ff, int32_t time, const char* name) {
+    if(!flipper_format_write_comment_cstr(ff, "") ||
+       !flipper_format_write_string_cstr(ff, "remote_type", "PAUSE") ||
+       !flipper_format_write_string_cstr(ff, "name", name) ||
+       !flipper_format_write_int32(ff, "time", &time, 1)) {
+        return false;
+    }
+    return true;
+}
+
+bool xremote_cross_remote_item_sg_signal_save(SubGhzRemote* remote, FlipperFormat* ff, const char* name) {
+    if(!flipper_format_write_comment_cstr(ff, "") ||
+       !flipper_format_write_string_cstr(ff, "remote_type", "SG") ||
+       !flipper_format_write_string_cstr(ff, "name", name) ||
+       !flipper_format_write_string_cstr(ff, "filename", xremote_sg_remote_get_filename(remote))) {
+        return false;
+    }
+    return xremote_sg_signal_save_data(remote, ff);
+}

+ 26 - 0
models/cross/xremote_cross_remote_item.h

@@ -0,0 +1,26 @@
+#pragma once
+
+#include "../infrared/xremote_ir_signal.h"
+#include "../subghz/xremote_sg_remote.h"
+#include "../subghz/subghz_i.h"
+#include "../../xremote_i.h"
+
+bool xremote_cross_remote_item_read(CrossRemoteItem* item, FlipperFormat* ff);
+
+CrossRemoteItem* xremote_cross_remote_item_alloc();
+void xremote_cross_remote_item_free(CrossRemoteItem* item);
+
+void xremote_cross_remote_item_set_name(CrossRemoteItem* item, const char* name);
+const char* xremote_cross_remote_item_get_name(CrossRemoteItem* item);
+
+void xremote_cross_remote_item_set_type(CrossRemoteItem* item, int type);
+void xremote_cross_remote_item_set_time(CrossRemoteItem* item, int32_t time);
+
+InfraredSignal* xremote_cross_remote_item_get_ir_signal(CrossRemoteItem* item);
+void xremote_cross_remote_item_set_ir_signal(CrossRemoteItem* item, InfraredSignal* signal);
+SubGhzRemote* xremote_cross_remote_item_get_sg_signal(CrossRemoteItem* item);
+void xremote_cross_remote_item_set_sg_signal(CrossRemoteItem* item, SubGhzRemote* subghz);
+
+bool xremote_cross_remote_item_pause_save(FlipperFormat* ff, int32_t time, const char* name);
+bool xremote_cross_remote_item_ir_signal_save(InfraredSignal* signal, FlipperFormat* ff, const char* name);
+bool xremote_cross_remote_item_sg_signal_save(SubGhzRemote* remote, FlipperFormat* ff, const char* name);

+ 0 - 31
models/cross/xremote_remote_item.h

@@ -1,31 +0,0 @@
-#pragma once
-
-#include "../infrared/xremote_ir_signal.h"
-#include "../subghz/xremote_sg_remote.h"
-#include "../subghz/subghz_i.h"
-#include "../../xremote_i.h"
-
-bool xremote_remote_item_read(CrossRemoteItem* item, FlipperFormat* ff);
-bool xremote_remote_item_read_ir(CrossRemoteItem* item, FlipperFormat* ff);
-bool xremote_remote_item_read_ir_signal_raw(CrossRemoteItem* item, FlipperFormat* ff);
-bool xremote_remote_item_read_message(CrossRemoteItem* item, FlipperFormat* ff);
-
-bool xremote_remote_item_read_pause(CrossRemoteItem* item, FlipperFormat* ff);
-
-CrossRemoteItem* xremote_remote_item_alloc();
-void xremote_remote_item_free(CrossRemoteItem* item);
-
-void xremote_remote_item_set_name(CrossRemoteItem* item, const char* name);
-const char* xremote_remote_item_get_name(CrossRemoteItem* item);
-
-void xremote_remote_item_set_type(CrossRemoteItem* item, int type);
-void xremote_remote_item_set_time(CrossRemoteItem* item, int32_t time);
-
-InfraredSignal* xremote_remote_item_get_ir_signal(CrossRemoteItem* item);
-void xremote_remote_item_set_ir_signal(CrossRemoteItem* item, InfraredSignal* signal);
-SubGhzRemote* xremote_remote_item_get_sg_signal(CrossRemoteItem* item);
-void xremote_remote_item_set_sg_signal(CrossRemoteItem* item, SubGhzRemote* subghz);
-
-bool xremote_pause_save(FlipperFormat* ff, int32_t time, const char* name);
-bool xremote_ir_signal_save(InfraredSignal* signal, FlipperFormat* ff, const char* name);
-bool xremote_sg_signal_save(SubGhzRemote* remote, FlipperFormat* ff, const char* name);

+ 1 - 1
scenes/xremote_scene_create.c

@@ -37,7 +37,7 @@ void xremote_scene_create_on_enter(void* context) {
         CrossRemoteItem* item = xremote_cross_remote_get_item(app->cross_remote, i);
         button_menu_add_item(
             button_menu,
-            xremote_remote_item_get_name(item),
+            xremote_cross_remote_item_get_name(item),
             i,
             xremote_create_callback,
             ButtonMenuItemTypeCommon,

+ 1 - 1
scenes/xremote_scene_edit_item.c

@@ -1,5 +1,5 @@
 #include "../xremote.h"
-#include "../models/cross/xremote_remote.h"
+#include "../models/cross/xremote_cross_remote.h"
 
 enum SubmenuIndexEdit {
     SubmenuIndexRename = 10,

+ 1 - 1
scenes/xremote_scene_save_remote_item.c

@@ -1,5 +1,5 @@
 #include "../xremote.h"
-#include "../models/cross/xremote_remote.h"
+#include "../models/cross/xremote_cross_remote.h"
 
 #include <string.h>
 #include <toolbox/path.h>

+ 2 - 2
scenes/xremote_scene_transmit.c

@@ -47,7 +47,7 @@ void xremote_scene_transmit_stop_ir_signal(XRemote* app) {
 }
 
 void xremote_scene_transmit_send_ir_signal(XRemote* app, CrossRemoteItem* item) {
-    InfraredSignal* signal = xremote_remote_item_get_ir_signal(item);
+    InfraredSignal* signal = xremote_cross_remote_item_get_ir_signal(item);
     dolphin_deed(DolphinDeedIrSend);
     xremote_scene_ir_notification_message(app, InfraredNotificationMessageBlinkStartSend);
     if(xremote_scene_ir_signal_is_raw(signal)) {
@@ -93,7 +93,7 @@ void xremote_scene_transmit_send_signal(void* context, CrossRemoteItem* item) {
         return;
     }
 
-    xremote_transmit_model_set_name(app->xremote_transmit, xremote_remote_item_get_name(item));
+    xremote_transmit_model_set_name(app->xremote_transmit, xremote_cross_remote_item_get_name(item));
     xremote_transmit_model_set_type(app->xremote_transmit, item->type);
     if(item->type == XRemoteRemoteItemTypeInfrared) {
         xremote_scene_transmit_send_ir_signal(app, item);

+ 1 - 1
xremote.h

@@ -6,7 +6,7 @@
 #include "views/xremote_pause_set.h"
 #include "helpers/xremote_storage.h"
 #include "models/infrared/xremote_ir_remote.h"
-#include "models/cross/xremote_remote.h"
+#include "models/cross/xremote_cross_remote.h"
 #include "xremote_i.h"
 
 typedef struct {