mirror of
https://github.com/airgradienthq/arduino.git
synced 2025-07-04 11:46:32 +02:00
Merge pull request #101 from airgradienthq/hotfix/EEPROM-data-override-by-after-OTA-perform-success
fix issue EEPROM override after OTA perform by use `spiffs`
This commit is contained in:
@ -1,6 +1,14 @@
|
|||||||
#include "AgConfigure.h"
|
#include "AgConfigure.h"
|
||||||
#include "EEPROM.h"
|
|
||||||
#include "Libraries/Arduino_JSON/src/Arduino_JSON.h"
|
#include "Libraries/Arduino_JSON/src/Arduino_JSON.h"
|
||||||
|
#if ESP32
|
||||||
|
#include "FS.h"
|
||||||
|
#include "SPIFFS.h"
|
||||||
|
#else
|
||||||
|
#include "EEPROM.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define EEPROM_CONFIG_SIZE 512
|
||||||
|
#define CONFIG_FILE_NAME "/cfg.bin"
|
||||||
|
|
||||||
const char *CONFIGURATION_CONTROL_NAME[] = {
|
const char *CONFIGURATION_CONTROL_NAME[] = {
|
||||||
[ConfigurationControlLocal] = "local",
|
[ConfigurationControlLocal] = "local",
|
||||||
@ -54,10 +62,19 @@ void Configuration::saveConfig(void) {
|
|||||||
for (int i = 0; i < sizeof(config); i++) {
|
for (int i = 0; i < sizeof(config); i++) {
|
||||||
EEPROM.write(i, data[i]);
|
EEPROM.write(i, data[i]);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
EEPROM.writeBytes(0, &config, sizeof(config));
|
|
||||||
#endif
|
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
|
#else
|
||||||
|
File file = SPIFFS.open(CONFIG_FILE_NAME, "w", true);
|
||||||
|
if (file && !file.isDirectory()) {
|
||||||
|
if (file.write((const uint8_t *)&config, sizeof(config)) !=
|
||||||
|
sizeof(config)) {
|
||||||
|
logError("Write SPIFFS file failed");
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
} else {
|
||||||
|
logError("Open SPIFFS file to write failed");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
logInfo("Save Config");
|
logInfo("Save Config");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,9 +87,13 @@ void Configuration::loadConfig(void) {
|
|||||||
}
|
}
|
||||||
readSuccess = true;
|
readSuccess = true;
|
||||||
#else
|
#else
|
||||||
if (EEPROM.readBytes(0, &config, sizeof(config)) == sizeof(config)) {
|
File file = SPIFFS.open(CONFIG_FILE_NAME);
|
||||||
|
if (file && !file.isDirectory()) {
|
||||||
|
if (file.readBytes((char *)&config, sizeof(config)) == sizeof(config)) {
|
||||||
readSuccess = true;
|
readSuccess = true;
|
||||||
}
|
}
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!readSuccess) {
|
if (!readSuccess) {
|
||||||
@ -162,7 +183,20 @@ Configuration::~Configuration() {}
|
|||||||
* @return false Failure
|
* @return false Failure
|
||||||
*/
|
*/
|
||||||
bool Configuration::begin(void) {
|
bool Configuration::begin(void) {
|
||||||
EEPROM.begin(512);
|
if (sizeof(config) > EEPROM_CONFIG_SIZE) {
|
||||||
|
logError("Configuration over EEPROM_CONFIG_SIZE");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef ESP32
|
||||||
|
if (!SPIFFS.begin(true)) {
|
||||||
|
logError("Init SPIFFS failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
EEPROM.begin(EEPROM_CONFIG_SIZE);
|
||||||
|
#endif
|
||||||
|
|
||||||
loadConfig();
|
loadConfig();
|
||||||
printConfig();
|
printConfig();
|
||||||
|
|
||||||
@ -298,7 +332,8 @@ bool Configuration::parse(String data, bool isLocal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (inUSAQI != config.inUSAQI) {
|
if (inUSAQI != config.inUSAQI) {
|
||||||
configLogInfo("pmStandard", getPMStandardString(config.inUSAQI), pmStandard);
|
configLogInfo("pmStandard", getPMStandardString(config.inUSAQI),
|
||||||
|
pmStandard);
|
||||||
config.inUSAQI = inUSAQI;
|
config.inUSAQI = inUSAQI;
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
@ -384,7 +419,8 @@ bool Configuration::parse(String data, bool isLocal) {
|
|||||||
|
|
||||||
if (displayMode != config.displayMode) {
|
if (displayMode != config.displayMode) {
|
||||||
changed = true;
|
changed = true;
|
||||||
configLogInfo("displayMode", getDisplayModeString(config.displayMode), mode);
|
configLogInfo("displayMode", getDisplayModeString(config.displayMode),
|
||||||
|
mode);
|
||||||
config.displayMode = displayMode;
|
config.displayMode = displayMode;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -816,9 +852,7 @@ int Configuration::getNoxLearningOffset(void) {
|
|||||||
return config.noxLearningOffset;
|
return config.noxLearningOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
String Configuration::wifiSSID(void) {
|
String Configuration::wifiSSID(void) { return "airgradient-" + ag->deviceId(); }
|
||||||
return "airgradient-" + ag->deviceId();
|
|
||||||
}
|
|
||||||
|
|
||||||
String Configuration::wifiPass(void) { return String("cleanair"); }
|
String Configuration::wifiPass(void) { return String("cleanair"); }
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user