mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-29 13:46:37 +00:00
Plug zip (#13746)
This commit is contained in:
parent
26dddb5b74
commit
cc5f799bdf
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user