mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-26 04:06:34 +00:00
Integrate filesystem
This commit is contained in:
parent
8a269c8902
commit
dcf22abd60
@ -562,8 +562,8 @@ void SettingsLoad(void) {
|
|||||||
}
|
}
|
||||||
#endif // ESP8266
|
#endif // ESP8266
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
SettingsRead(&Settings, sizeof(Settings));
|
uint32_t source = SettingsRead(&Settings, sizeof(Settings));
|
||||||
AddLog_P(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG "Loaded, " D_COUNT " %lu"), Settings.save_flag);
|
AddLog_P(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG "Loaded from %s, " D_COUNT " %lu"), (source)?"File":"Nvm", Settings.save_flag);
|
||||||
#endif // ESP32
|
#endif // ESP32
|
||||||
|
|
||||||
#ifndef FIRMWARE_MINIMAL
|
#ifndef FIRMWARE_MINIMAL
|
||||||
|
@ -171,20 +171,17 @@ void SettingsErase(uint8_t type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsRead(void *data, size_t size) {
|
uint32_t SettingsRead(void *data, size_t size) {
|
||||||
#ifdef USE_UFILESYS
|
uint32_t source = 1;
|
||||||
// if (!TfsLoadFile("/settings", (uint8_t*)data, size)) {
|
if (!TfsLoadFile("/settings", (uint8_t*)data, size)) {
|
||||||
|
source = 0;
|
||||||
NvmLoad("main", "Settings", data, size);
|
NvmLoad("main", "Settings", data, size);
|
||||||
// }
|
}
|
||||||
#else
|
return source;
|
||||||
NvmLoad("main", "Settings", data, size);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsWrite(const void *pSettings, unsigned nSettingsLen) {
|
void SettingsWrite(const void *pSettings, unsigned nSettingsLen) {
|
||||||
#ifdef USE_UFILESYS
|
TfsSaveFile("/settings", (const uint8_t*)pSettings, nSettingsLen);
|
||||||
// TfsSaveFile("/settings", (const uint8_t*)pSettings, nSettingsLen);
|
|
||||||
#endif
|
|
||||||
NvmSave("main", "Settings", pSettings, nSettingsLen);
|
NvmSave("main", "Settings", pSettings, nSettingsLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,6 @@
|
|||||||
#define FALLBACK_MODULE ODROID_GO // [Module2] Select default module on fast reboot where USER_MODULE is user template
|
#define FALLBACK_MODULE ODROID_GO // [Module2] Select default module on fast reboot where USER_MODULE is user template
|
||||||
|
|
||||||
#define USE_ODROID_GO // Add support for Odroid Go
|
#define USE_ODROID_GO // Add support for Odroid Go
|
||||||
#define USE_UFILESYS
|
|
||||||
#define USE_SDCARD
|
#define USE_SDCARD
|
||||||
#define USE_ADC
|
#define USE_ADC
|
||||||
#define USE_SPI
|
#define USE_SPI
|
||||||
|
@ -88,7 +88,7 @@ uint8_t ffs_type;
|
|||||||
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
|
|
||||||
void UfsInit(void) {
|
void UfsInitOnce(void) {
|
||||||
ufs_type = 0;
|
ufs_type = 0;
|
||||||
ffsp = 0;
|
ffsp = 0;
|
||||||
ufs_dir = 0;
|
ufs_dir = 0;
|
||||||
@ -162,6 +162,13 @@ void UfsInit(void) {
|
|||||||
dfsp = ufsp;
|
dfsp = ufsp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UfsInit(void) {
|
||||||
|
UfsInitOnce();
|
||||||
|
if (ufs_type) {
|
||||||
|
AddLog_P(LOG_LEVEL_INFO, PSTR("UFS: Type %d mounted with %dkB free"), ufs_type, UfsInfo(1, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t UfsInfo(uint32_t sel, uint32_t type) {
|
uint32_t UfsInfo(uint32_t sel, uint32_t type) {
|
||||||
uint32_t result = 0;
|
uint32_t result = 0;
|
||||||
FS *ifsp = ufsp;
|
FS *ifsp = ufsp;
|
||||||
@ -339,15 +346,25 @@ bool TfsLoadFile(const char *fname, uint8_t *buf, uint32_t len) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TfsDeleteFile(const char *fname) {
|
||||||
|
if (!ufs_type) { return false; }
|
||||||
|
|
||||||
|
if (!ffsp->remove(fname)) {
|
||||||
|
AddLog_P(LOG_LEVEL_INFO, PSTR("TFS: Delete failed"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* Commands
|
* Commands
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
const char kUFSCommands[] PROGMEM = "Ufs" "|" // Prefix
|
const char kUFSCommands[] PROGMEM = "Ufs|" // Prefix
|
||||||
"|" "Type" "|" "Size" "|" "Free";
|
"|Type|Size|Free|Delete";
|
||||||
|
|
||||||
void (* const kUFSCommand[])(void) PROGMEM = {
|
void (* const kUFSCommand[])(void) PROGMEM = {
|
||||||
&UFSInfo, &UFSType, &UFSSize, &UFSFree};
|
&UFSInfo, &UFSType, &UFSSize, &UFSFree, &UFSDelete};
|
||||||
|
|
||||||
void UFSInfo(void) {
|
void UFSInfo(void) {
|
||||||
Response_P(PSTR("{\"Ufs\":{\"Type\":%d,\"Size\":%d,\"Free\":%d}}"), ufs_type, UfsInfo(0, 0), UfsInfo(1, 0));
|
Response_P(PSTR("{\"Ufs\":{\"Type\":%d,\"Size\":%d,\"Free\":%d}}"), ufs_type, UfsInfo(0, 0), UfsInfo(1, 0));
|
||||||
@ -356,13 +373,25 @@ void UFSInfo(void) {
|
|||||||
void UFSType(void) {
|
void UFSType(void) {
|
||||||
ResponseCmndNumber(ufs_type);
|
ResponseCmndNumber(ufs_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UFSSize(void) {
|
void UFSSize(void) {
|
||||||
ResponseCmndNumber(UfsInfo(0, 0));
|
ResponseCmndNumber(UfsInfo(0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UFSFree(void) {
|
void UFSFree(void) {
|
||||||
ResponseCmndNumber(UfsInfo(1, 0));
|
ResponseCmndNumber(UfsInfo(1, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UFSDelete(void) {
|
||||||
|
if (XdrvMailbox.data_len > 0) {
|
||||||
|
if (!TfsDeleteFile(XdrvMailbox.data)) {
|
||||||
|
ResponseCmndChar(D_JSON_FAILED);
|
||||||
|
} else {
|
||||||
|
ResponseCmndDone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* Web support
|
* Web support
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user