mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
fix setting migration issue (#18383)
* fix setting migration issue * next try to fix migration issue @arendst: I saw you made also some changes to the xdrv122. I copied this and it looks like setting the crc32 was the root of the issue. You removed it and I do the same now. Looks much better.
This commit is contained in:
parent
44dad1245d
commit
1c0936c6d5
@ -123,7 +123,8 @@ void (* const ShutterCommand[])(void) PROGMEM = {
|
|||||||
&CmndShutterSetHalfway, &CmndShutterSetClose, &CmndShutterSetOpen, &CmndShutterInvert, &CmndShutterCalibration , &CmndShutterMotorDelay,
|
&CmndShutterSetHalfway, &CmndShutterSetClose, &CmndShutterSetOpen, &CmndShutterInvert, &CmndShutterCalibration , &CmndShutterMotorDelay,
|
||||||
&CmndShutterFrequency, &CmndShutterButton, &CmndShutterLock, &CmndShutterEnableEndStopTime, &CmndShutterInvertWebButtons,
|
&CmndShutterFrequency, &CmndShutterButton, &CmndShutterLock, &CmndShutterEnableEndStopTime, &CmndShutterInvertWebButtons,
|
||||||
&CmndShutterStopOpen, &CmndShutterStopClose, &CmndShutterStopToggle, &CmndShutterStopToggleDir, &CmndShutterStopPosition, &CmndShutterIncDec,
|
&CmndShutterStopOpen, &CmndShutterStopClose, &CmndShutterStopToggle, &CmndShutterStopToggleDir, &CmndShutterStopPosition, &CmndShutterIncDec,
|
||||||
&CmndShutterUnitTest,&CmndShutterTiltConfig,&CmndShutterSetTilt,&CmndShutterTiltIncDec,&CmndShutterMotorStop};
|
&CmndShutterUnitTest,&CmndShutterTiltConfig,&CmndShutterSetTilt,&CmndShutterTiltIncDec,&CmndShutterMotorStop
|
||||||
|
};
|
||||||
|
|
||||||
const char JSON_SHUTTER_POS[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Position\":%d,\"Direction\":%d,\"Target\":%d,\"Tilt\":%d}";
|
const char JSON_SHUTTER_POS[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Position\":%d,\"Direction\":%d,\"Target\":%d,\"Tilt\":%d}";
|
||||||
const char JSON_SHUTTER_BUTTON[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Button%d\":%d}";
|
const char JSON_SHUTTER_BUTTON[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Button%d\":%d}";
|
||||||
@ -180,11 +181,6 @@ struct SHUTTERGLOBAL {
|
|||||||
* Driver Settings load and save
|
* Driver Settings load and save
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
uint32_t ShutterSettingsCrc32(void) {
|
|
||||||
// Use Tasmota CRC calculation function
|
|
||||||
return GetCfgCrc32((uint8_t*)&ShutterSettings +4, sizeof(ShutterSettings) -4); // Skip crc32
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShutterSettingsDefault(void) {
|
void ShutterSettingsDefault(void) {
|
||||||
// Init default values in case file is not found
|
// Init default values in case file is not found
|
||||||
|
|
||||||
@ -212,6 +208,7 @@ void ShutterSettingsDefault(void) {
|
|||||||
ShutterSettings.shutter_position[i] = Settings->shutter_position[i];
|
ShutterSettings.shutter_position[i] = Settings->shutter_position[i];
|
||||||
ShutterSettings.shutter_startrelay[i] = Settings->shutter_startrelay[i];
|
ShutterSettings.shutter_startrelay[i] = Settings->shutter_startrelay[i];
|
||||||
ShutterSettings.shutter_motordelay[i] = Settings->shutter_motordelay[i];
|
ShutterSettings.shutter_motordelay[i] = Settings->shutter_motordelay[i];
|
||||||
|
|
||||||
}
|
}
|
||||||
for (uint32_t i = 0; i < MAX_SHUTTER_KEYS; i++) {
|
for (uint32_t i = 0; i < MAX_SHUTTER_KEYS; i++) {
|
||||||
ShutterSettings.shutter_button[i].shutter_number = Settings->shutter_button[i] & 0x03;
|
ShutterSettings.shutter_button[i].shutter_number = Settings->shutter_button[i] & 0x03;
|
||||||
@ -233,15 +230,14 @@ void ShutterSettingsDefault(void) {
|
|||||||
|
|
||||||
void ShutterSettingsDelta(void) {
|
void ShutterSettingsDelta(void) {
|
||||||
// Fix possible setting deltas
|
// Fix possible setting deltas
|
||||||
|
|
||||||
if (ShutterSettings.version != SHUTTER_VERSION) { // Fix version dependent changes
|
if (ShutterSettings.version != SHUTTER_VERSION) { // Fix version dependent changes
|
||||||
/*
|
/*
|
||||||
if (ShutterSettings.version < 0x01010100) {
|
if (ShutterSettings.version < 0x01010100) {
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("DRV: Update oldest version restore"));
|
AddLog(LOG_LEVEL_INFO, PSTR("SHT: Update oldest version restore"));
|
||||||
|
|
||||||
}
|
}
|
||||||
if (ShutterSettings.version < 0x01010101) {
|
if (ShutterSettings.version < 0x01010101) {
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("DRV: Update old version restore"));
|
AddLog(LOG_LEVEL_INFO, PSTR("SHT: Update old version restore"));
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -251,13 +247,13 @@ void ShutterSettingsDelta(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShutterSettingsLoad(void) {
|
void ShutterSettingsLoad(bool erase) {
|
||||||
// Called from FUNC_PRE_INIT once at restart
|
// Called from FUNC_PRE_INIT once at restart
|
||||||
|
|
||||||
// Init default values in case file is not found
|
// Init default values in case file is not found
|
||||||
ShutterSettingsDefault();
|
ShutterSettingsDefault();
|
||||||
|
|
||||||
// Try to load file /.drvset122
|
// Try to load file /.drvset027
|
||||||
char filename[20];
|
char filename[20];
|
||||||
// Use for sensors:
|
// Use for sensors:
|
||||||
// snprintf_P(filename, sizeof(filename), PSTR(TASM_FILE_SENSOR), XSNS_27);
|
// snprintf_P(filename, sizeof(filename), PSTR(TASM_FILE_SENSOR), XSNS_27);
|
||||||
@ -267,26 +263,29 @@ void ShutterSettingsLoad(void) {
|
|||||||
AddLog(LOG_LEVEL_INFO, PSTR("SHUTTER: About to load settings from file %s"), filename);
|
AddLog(LOG_LEVEL_INFO, PSTR("SHUTTER: About to load settings from file %s"), filename);
|
||||||
|
|
||||||
#ifdef USE_UFILESYS
|
#ifdef USE_UFILESYS
|
||||||
if (TfsLoadFile(filename, (uint8_t*)&ShutterSettings, sizeof(ShutterSettings))) {
|
if (erase) {
|
||||||
|
TfsDeleteFile(filename); // Use defaults
|
||||||
|
}
|
||||||
|
else if (TfsLoadFile(filename, (uint8_t*)&ShutterSettings, sizeof(ShutterSettings))) {
|
||||||
// Fix possible setting deltas
|
// Fix possible setting deltas
|
||||||
ShutterSettingsDelta();
|
ShutterSettingsDelta();
|
||||||
} else {
|
} else {
|
||||||
// File system not ready: No flash space reserved for file system
|
// File system not ready: No flash space reserved for file system
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("DRV: ERROR File system not ready or file not found"));
|
AddLog(LOG_LEVEL_INFO, PSTR("DRV: ERROR File system not ready or file not found"));
|
||||||
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("DRV: ERROR File system not enabled"));
|
AddLog(LOG_LEVEL_INFO, PSTR("DRV: ERROR File system not enabled"));
|
||||||
#endif // USE_UFILESYS
|
#endif // USE_UFILESYS
|
||||||
|
|
||||||
ShutterSettings.crc32 = ShutterSettingsCrc32();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShutterSettingsSave(void) {
|
void ShutterSettingsSave(void) {
|
||||||
// Called from FUNC_SAVE_SETTINGS every SaveData second and at restart
|
// Called from FUNC_SAVE_SETTINGS every SaveData second and at restart
|
||||||
|
uint32_t crc32 = GetCfgCrc32((uint8_t*)&ShutterSettings +4, sizeof(ShutterSettings) -4); // Skip crc32
|
||||||
if (ShutterSettingsCrc32() != ShutterSettings.crc32) {
|
if (crc32 != ShutterSettings.crc32) {
|
||||||
// Try to save file /.drvset122
|
// Try to save file /.drvset027
|
||||||
ShutterSettings.crc32 = ShutterSettingsCrc32();
|
ShutterSettings.crc32 = crc32;
|
||||||
|
|
||||||
char filename[20];
|
char filename[20];
|
||||||
// Use for sensors:
|
// Use for sensors:
|
||||||
@ -1428,7 +1427,7 @@ void CmndShutterPosition(void)
|
|||||||
|
|
||||||
//override tiltposition if explicit set (shutterbutton)
|
//override tiltposition if explicit set (shutterbutton)
|
||||||
if (Shutter[index].tilt_target_pos_override != -128) {
|
if (Shutter[index].tilt_target_pos_override != -128) {
|
||||||
Shutter[index].tilt_target_pos = tmin(tmax( Shutter[index].tilt_config[0],Shutter[index].tilt_target_pos_override ), Shutter[index].tilt_config[1]);
|
Shutter[index].tilt_target_pos = tmin(tmax( Shutter[index].tilt_config[0],Shutter[index].tilt_target_pos_override ), Shutter[index].tilt_config[1]);
|
||||||
Shutter[index].tilt_target_pos_override = -128;
|
Shutter[index].tilt_target_pos_override = -128;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2048,9 +2047,12 @@ bool Xdrv27(uint32_t function)
|
|||||||
ShutterSettingsSave();
|
ShutterSettingsSave();
|
||||||
break;
|
break;
|
||||||
case FUNC_PRE_INIT:
|
case FUNC_PRE_INIT:
|
||||||
ShutterSettingsLoad();
|
ShutterSettingsLoad(0);
|
||||||
ShutterInit();
|
ShutterInit();
|
||||||
break;
|
break;
|
||||||
|
case FUNC_RESET_SETTINGS:
|
||||||
|
ShutterSettingsLoad(1);
|
||||||
|
break;
|
||||||
case FUNC_EVERY_50_MSECOND:
|
case FUNC_EVERY_50_MSECOND:
|
||||||
ShutterUpdatePosition();
|
ShutterUpdatePosition();
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user