Integrate filesystem

This commit is contained in:
Theo Arends 2021-01-08 17:06:17 +01:00
parent dcf22abd60
commit 28714a9ac3
3 changed files with 17 additions and 10 deletions

View File

@ -137,7 +137,8 @@ int32_t NvmErase(const char *sNvsName) {
} }
void SettingsErase(uint8_t type) { void SettingsErase(uint8_t type) {
// All SDK and Tasmota data is held in default NVS partition // SDK and Tasmota data is held in default NVS partition
// Tasmota data is held also in file /settings on default filesystem
// cal_data - SDK PHY calibration data as documented in esp_phy_init.h // cal_data - SDK PHY calibration data as documented in esp_phy_init.h
// qpc - Tasmota Quick Power Cycle state // qpc - Tasmota Quick Power Cycle state
// main - Tasmota Settings data // main - Tasmota Settings data
@ -147,7 +148,8 @@ void SettingsErase(uint8_t type) {
// nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc. // nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc.
r1 = NvmErase("qpc"); r1 = NvmErase("qpc");
r2 = NvmErase("main"); r2 = NvmErase("main");
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d)"), r1, r2); r3 = TfsDeleteFile(TASM_FILE_SETTINGS);
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d,%d)"), r1, r2, r3);
break; break;
case 1: case 4: // Reset 3 or WIFI_FORCE_RF_CAL_ERASE = SDK parameter area case 1: case 4: // Reset 3 or WIFI_FORCE_RF_CAL_ERASE = SDK parameter area
r1 = esp_phy_erase_cal_data_in_nvs(); r1 = esp_phy_erase_cal_data_in_nvs();
@ -157,7 +159,8 @@ void SettingsErase(uint8_t type) {
case 2: // Not used = QPC and Tasmota parameter area (0x0F3xxx - 0x0FBFFF) case 2: // Not used = QPC and Tasmota parameter area (0x0F3xxx - 0x0FBFFF)
r1 = NvmErase("qpc"); r1 = NvmErase("qpc");
r2 = NvmErase("main"); r2 = NvmErase("main");
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d)"), r1, r2); r3 = TfsDeleteFile(TASM_FILE_SETTINGS);
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d,%d)"), r1, r2, r3);
break; break;
case 3: // QPC Reached = QPC, Tasmota and SDK parameter area (0x0F3xxx - 0x0FFFFF) case 3: // QPC Reached = QPC, Tasmota and SDK parameter area (0x0F3xxx - 0x0FFFFF)
// nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc. // nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc.
@ -166,14 +169,15 @@ void SettingsErase(uint8_t type) {
// r3 = esp_phy_erase_cal_data_in_nvs(); // r3 = esp_phy_erase_cal_data_in_nvs();
// r3 = NvmErase("cal_data"); // r3 = NvmErase("cal_data");
// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota (%d,%d) and PHY data (%d)"), r1, r2, r3); // AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota (%d,%d) and PHY data (%d)"), r1, r2, r3);
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d)"), r1, r2); r3 = TfsDeleteFile(TASM_FILE_SETTINGS);
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d,%d)"), r1, r2, r3);
break; break;
} }
} }
uint32_t SettingsRead(void *data, size_t size) { uint32_t SettingsRead(void *data, size_t size) {
uint32_t source = 1; uint32_t source = 1;
if (!TfsLoadFile("/settings", (uint8_t*)data, size)) { if (!TfsLoadFile(TASM_FILE_SETTINGS, (uint8_t*)data, size)) {
source = 0; source = 0;
NvmLoad("main", "Settings", data, size); NvmLoad("main", "Settings", data, size);
} }
@ -181,7 +185,7 @@ uint32_t SettingsRead(void *data, size_t size) {
} }
void SettingsWrite(const void *pSettings, unsigned nSettingsLen) { void SettingsWrite(const void *pSettings, unsigned nSettingsLen) {
TfsSaveFile("/settings", (const uint8_t*)pSettings, nSettingsLen); TfsSaveFile(TASM_FILE_SETTINGS, (const uint8_t*)pSettings, nSettingsLen);
NvmSave("main", "Settings", pSettings, nSettingsLen); NvmSave("main", "Settings", pSettings, nSettingsLen);
} }

View File

@ -225,6 +225,9 @@ const uint16_t LOG_BUFFER_SIZE = 4000; // Max number of characters in lo
#error "Arduino ESP8266 Core versions before 2.7.1 are not supported" #error "Arduino ESP8266 Core versions before 2.7.1 are not supported"
#endif #endif
#define TASM_FILE_SETTINGS "/settings"
#define TASM_FILE_ZIGBEE "/zb"
#ifndef MQTT_MAX_PACKET_SIZE #ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 1200 // Bytes #define MQTT_MAX_PACKET_SIZE 1200 // Bytes
#endif #endif

View File

@ -305,7 +305,7 @@ void loadZigbeeDevices(bool dump_only = false) {
return; return;
} }
#ifdef USE_UFILESYS #ifdef USE_UFILESYS
TfsLoadFile("/zb", spi_buffer, z_spi_len); TfsLoadFile(TASM_FILE_ZIGBEE, spi_buffer, z_spi_len);
#endif #endif
z_dev_start = spi_buffer; z_dev_start = spi_buffer;
#endif // ESP32 #endif // ESP32
@ -370,7 +370,7 @@ void saveZigbeeDevices(void) {
#endif // ESP8266 #endif // ESP8266
#ifdef ESP32 #ifdef ESP32
#ifdef USE_UFILESYS #ifdef USE_UFILESYS
TfsLoadFile("/zb", spi_buffer, z_spi_len); TfsLoadFile(TASM_FILE_ZIGBEE, spi_buffer, z_spi_len);
#endif #endif
#endif // ESP32 #endif // ESP32
@ -390,7 +390,7 @@ void saveZigbeeDevices(void) {
#endif // ESP8266 #endif // ESP8266
#ifdef ESP32 #ifdef ESP32
#ifdef USE_UFILESYS #ifdef USE_UFILESYS
TfsSaveFile("/zb", spi_buffer, z_spi_len); TfsSaveFile(TASM_FILE_ZIGBEE, spi_buffer, z_spi_len);
#endif #endif
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data saved in %s (%d bytes)"), PSTR("Flash"), buf_len); AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data saved in %s (%d bytes)"), PSTR("Flash"), buf_len);
#endif // ESP32 #endif // ESP32
@ -426,7 +426,7 @@ void eraseZigbeeDevices(void) {
#endif // ESP8266 #endif // ESP8266
#ifdef ESP32 #ifdef ESP32
#ifdef USE_UFILESYS #ifdef USE_UFILESYS
TfsInitFile("/zb", z_block_len, 0xFF); TfsInitFile(TASM_FILE_ZIGBEE, z_block_len, 0xFF);
#endif #endif
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased (%d bytes)"), z_block_len); AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased (%d bytes)"), z_block_len);
#endif // ESP32 #endif // ESP32