This commit is contained in:
s-hadinger 2021-11-20 12:40:46 +01:00 committed by GitHub
parent 26dddb5b74
commit cc5f799bdf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -121,6 +121,12 @@ void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *c
************************************************************/ ************************************************************/
#ifdef USE_UFILESYS #ifdef USE_UFILESYS
#include <FS.h>
#include "ZipReadFS.h"
extern FS *ffsp;
FS lv_zip_ufsp(ZipReadFSImplPtr(new ZipReadFSImpl(&ffsp)));
extern "C" { extern "C" {
typedef void lvbe_FILE; typedef void lvbe_FILE;
@ -132,7 +138,7 @@ extern "C" {
String file_path = "/"; String file_path = "/";
file_path += filename; file_path += filename;
File f = dfsp->open(file_path, mode); File f = lv_zip_ufsp.open(file_path, mode);
// AddLog(LOG_LEVEL_INFO, "LVG: lvbe_fopen(%s) -> %i", file_path.c_str(), (int32_t)f); // AddLog(LOG_LEVEL_INFO, "LVG: lvbe_fopen(%s) -> %i", file_path.c_str(), (int32_t)f);
// AddLog(LOG_LEVEL_INFO, "LVG: F=%*_H", sizeof(f), &f); // AddLog(LOG_LEVEL_INFO, "LVG: F=%*_H", sizeof(f), &f);
if (f) { if (f) {
@ -202,15 +208,9 @@ static void * lvbe_fs_open(lv_fs_drv_t * drv, const char * path, lv_fs_mode_t mo
// AddLog(LOG_LEVEL_INFO, "LVG: lvbe_fs_open(%p, %p, %s, %i) %i", drv, file_p, path, mode, sizeof(File)); // AddLog(LOG_LEVEL_INFO, "LVG: lvbe_fs_open(%p, %p, %s, %i) %i", drv, file_p, path, mode, sizeof(File));
const char * modes = nullptr; const char * modes = nullptr;
switch (mode) { switch (mode) {
case LV_FS_MODE_WR: case LV_FS_MODE_WR: modes = "w"; break;
modes = "w"; case LV_FS_MODE_RD: modes = "r"; break;
break; case LV_FS_MODE_WR | LV_FS_MODE_RD: modes = "rw"; break;
case LV_FS_MODE_RD:
modes = "r";
break;
case LV_FS_MODE_WR | LV_FS_MODE_RD:
modes = "rw";
break;
} }
if (modes == nullptr) { if (modes == nullptr) {
@ -218,28 +218,12 @@ static void * lvbe_fs_open(lv_fs_drv_t * drv, const char * path, lv_fs_mode_t mo
return nullptr; return nullptr;
} }
// Add "/" prefix return (void*) lvbe_fopen(path, modes);
String file_path = "/";
file_path += path;
File f = dfsp->open(file_path.c_str(), modes);
// AddLog(LOG_LEVEL_INFO, "LVG: lvbe_fs_open(%s) -> %i", file_path.c_str(), (int32_t)f);
// AddLog(LOG_LEVEL_INFO, "LVG: F=%*_H", sizeof(f), &f);
if (f) {
File * f_ptr = new File(f); // copy to dynamic object
return f_ptr;
} else {
return nullptr;
}
} }
static lv_fs_res_t lvbe_fs_close(lv_fs_drv_t * drv, void * file_p); static lv_fs_res_t lvbe_fs_close(lv_fs_drv_t * drv, void * file_p);
static lv_fs_res_t lvbe_fs_close(lv_fs_drv_t * drv, void * file_p) { static lv_fs_res_t lvbe_fs_close(lv_fs_drv_t * drv, void * file_p) {
// AddLog(LOG_LEVEL_INFO, "LVG: lvbe_fs_close(%p, %p)", drv, file_p); return lvbe_fclose((void*)file_p);
File * f_ptr = (File*) file_p;
f_ptr->close();
delete f_ptr;
return LV_FS_RES_OK;
} }
static lv_fs_res_t lvbe_fs_read(lv_fs_drv_t * drv, void * file_p, void * buf, uint32_t btr, uint32_t * br); static lv_fs_res_t lvbe_fs_read(lv_fs_drv_t * drv, void * file_p, void * buf, uint32_t btr, uint32_t * br);