diff --git a/src/fs/file.c b/src/fs/file.c index 9ea5ebd..135278a 100644 --- a/src/fs/file.c +++ b/src/fs/file.c @@ -247,6 +247,18 @@ uint8_t file_read_uint8(const uint8_t *addr) { return flash_read_uint8((uintptr_t)addr); } +uint8_t *file_get_data(const file_t *tf) { + if (!tf || !tf->data) + return NULL; + return file_read(tf->data+sizeof(uint16_t)); +} + +uint16_t file_get_size(const file_t *tf) { + if (!tf || !tf->data) + return 0; + return file_read_uint16(tf->data); +} + file_t *search_dynamic_file(uint16_t fid) { for (int i = 0; i < dynamic_files; i++) { if (dynamic_file[i].fid == fid) diff --git a/src/fs/file.h b/src/fs/file.h index f35b069..89f96bf 100644 --- a/src/fs/file.h +++ b/src/fs/file.h @@ -106,6 +106,8 @@ extern file_t file_entries[]; extern uint8_t *file_read(const uint8_t *addr); extern uint16_t file_read_uint16(const uint8_t *addr); extern uint8_t file_read_uint8(const uint8_t *addr); +extern uint8_t *file_get_data(const file_t *tf); +extern uint16_t file_get_size(const file_t *tf); extern file_t *file_new(uint16_t); file_t *get_parent(file_t *f);