Integrate filesystem

This commit is contained in:
Theo Arends 2021-01-08 16:22:06 +01:00
parent 8a269c8902
commit dcf22abd60
4 changed files with 42 additions and 17 deletions

View File

@ -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

View File

@ -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);
} }

View File

@ -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

View File

@ -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
\*********************************************************************************************/ \*********************************************************************************************/