Now we back up current .ini-file into `prev_calibrations.ini` file before updating firmware #7357
This commit is contained in:
parent
14a264e99d
commit
abb40ca09a
|
@ -9,17 +9,32 @@ import com.rusefi.binaryprotocol.BinaryProtocol;
|
||||||
import com.rusefi.io.UpdateOperationCallbacks;
|
import com.rusefi.io.UpdateOperationCallbacks;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static com.devexperts.logging.Logging.getLogging;
|
import static com.devexperts.logging.Logging.getLogging;
|
||||||
import static com.rusefi.binaryprotocol.BinaryProtocol.iniFileProvider;
|
import static com.rusefi.binaryprotocol.BinaryProtocol.iniFileProvider;
|
||||||
|
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
|
||||||
|
|
||||||
public class CalibrationsBackuper {
|
public class CalibrationsBackuper {
|
||||||
private static final Logging log = getLogging(CalibrationsBackuper.class);
|
private static final Logging log = getLogging(CalibrationsBackuper.class);
|
||||||
|
private static final String PREVIOUS_CALIBRATIONS_INI = "prev_calibrations.ini";
|
||||||
private static final String PREVIOUS_CALIBRATIONS_BINARY = "prev_calibrations.zip";
|
private static final String PREVIOUS_CALIBRATIONS_BINARY = "prev_calibrations.zip";
|
||||||
private static final String PREVIOUS_CALIBRATIONS_XML = "prev_calibrations.msq";
|
private static final String PREVIOUS_CALIBRATIONS_XML = "prev_calibrations.msq";
|
||||||
|
|
||||||
private static Optional<ConfigurationImageMetaVersion0_0> readMeta(
|
private static class CalibrationsMeta {
|
||||||
|
private final String iniFilePath;
|
||||||
|
private final ConfigurationImageMetaVersion0_0 meta;
|
||||||
|
|
||||||
|
CalibrationsMeta(final String iniFilePath, final ConfigurationImageMetaVersion0_0 meta) {
|
||||||
|
this.iniFilePath = iniFilePath;
|
||||||
|
this.meta = meta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Optional<CalibrationsMeta> readMeta(
|
||||||
final BinaryProtocol binaryProtocol,
|
final BinaryProtocol binaryProtocol,
|
||||||
final UpdateOperationCallbacks callbacks
|
final UpdateOperationCallbacks callbacks
|
||||||
) {
|
) {
|
||||||
|
@ -29,7 +44,10 @@ public class CalibrationsBackuper {
|
||||||
final IniFileModel iniFile = iniFileProvider.provide(signature);
|
final IniFileModel iniFile = iniFileProvider.provide(signature);
|
||||||
final int pageSize = iniFile.getMetaInfo().getTotalSize();
|
final int pageSize = iniFile.getMetaInfo().getTotalSize();
|
||||||
callbacks.logLine(String.format("Page size is %d", pageSize));
|
callbacks.logLine(String.format("Page size is %d", pageSize));
|
||||||
return Optional.of(new ConfigurationImageMetaVersion0_0(pageSize, signature));
|
return Optional.of(new CalibrationsMeta(
|
||||||
|
iniFile.getIniFilePath(),
|
||||||
|
new ConfigurationImageMetaVersion0_0(pageSize, signature)
|
||||||
|
));
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
log.error("Failed to read meta:", e);
|
log.error("Failed to read meta:", e);
|
||||||
callbacks.logLine("Failed to read meta");
|
callbacks.logLine("Failed to read meta");
|
||||||
|
@ -46,17 +64,28 @@ public class CalibrationsBackuper {
|
||||||
callbacks,
|
callbacks,
|
||||||
(binaryProtocol) -> {
|
(binaryProtocol) -> {
|
||||||
try {
|
try {
|
||||||
final Optional<ConfigurationImageMetaVersion0_0> meta = readMeta(binaryProtocol, callbacks);
|
final Optional<CalibrationsMeta> meta = readMeta(binaryProtocol, callbacks);
|
||||||
if (meta.isPresent()) {
|
if (meta.isPresent()) {
|
||||||
|
final CalibrationsMeta receivedMeta = meta.get();
|
||||||
callbacks.logLine("Reading current calibrations...");
|
callbacks.logLine("Reading current calibrations...");
|
||||||
final ConfigurationImageWithMeta image = binaryProtocol.readFullImageFromController(meta.get());
|
final ConfigurationImageWithMeta image = binaryProtocol.readFullImageFromController(
|
||||||
|
receivedMeta.meta
|
||||||
|
);
|
||||||
|
final Path iniFilePath = Paths.get(receivedMeta.iniFilePath);
|
||||||
|
callbacks.logLine(String.format("Backing up current file %s...", iniFilePath));
|
||||||
|
Files.copy(
|
||||||
|
iniFilePath,
|
||||||
|
Paths.get(PREVIOUS_CALIBRATIONS_INI),
|
||||||
|
REPLACE_EXISTING
|
||||||
|
);
|
||||||
|
callbacks.logLine(String.format("%s file is backed up", iniFilePath.getFileName()));
|
||||||
callbacks.logLine("Save current calibrations to files...");
|
callbacks.logLine("Save current calibrations to files...");
|
||||||
binaryProtocol.saveConfigurationImageToFiles(
|
binaryProtocol.saveConfigurationImageToFiles(
|
||||||
image,
|
image,
|
||||||
PREVIOUS_CALIBRATIONS_BINARY,
|
PREVIOUS_CALIBRATIONS_BINARY,
|
||||||
PREVIOUS_CALIBRATIONS_XML
|
PREVIOUS_CALIBRATIONS_XML
|
||||||
);
|
);
|
||||||
callbacks.logLine("Current calibrations are saved to files");
|
callbacks.logLine("Current calibrations are backed up to files");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue