RE TS plugin to have continues tune auto-upload feature #1605
This commit is contained in:
parent
6edf92ba3d
commit
7a77e53c59
|
@ -0,0 +1,36 @@
|
|||
package com.rusefi.ts_plugin;
|
||||
|
||||
import com.opensr5.ini.IniFileMetaInfo;
|
||||
import com.opensr5.ini.RawIniFile;
|
||||
import com.rusefi.TsTuneReader;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
public class MetaDataCache {
|
||||
|
||||
private static String cachedProjectName;
|
||||
private static IniFileMetaInfo cache;
|
||||
|
||||
@Nullable
|
||||
public synchronized static IniFileMetaInfo getModel(String projectName) {
|
||||
if (projectName == null)
|
||||
return null;
|
||||
if (!projectName.equals(cachedProjectName)) {
|
||||
cache = null;
|
||||
}
|
||||
if (cache == null) {
|
||||
System.out.println("Reading meta " + projectName);
|
||||
String modeFileName = TsTuneReader.getProjectModeFileName(projectName);
|
||||
try {
|
||||
cache = new IniFileMetaInfo(RawIniFile.read(modeFileName));
|
||||
} catch (FileNotFoundException e) {
|
||||
System.out.println("No luck reading " + modeFileName + ": " + e);
|
||||
return null;
|
||||
}
|
||||
cachedProjectName = projectName;
|
||||
}
|
||||
return cache;
|
||||
}
|
||||
|
||||
}
|
|
@ -14,7 +14,6 @@ import com.rusefi.ts_plugin.util.ManifestHelper;
|
|||
import com.rusefi.tune.xml.Constant;
|
||||
import com.rusefi.tune.xml.Msq;
|
||||
import com.rusefi.ui.AuthTokenPanel;
|
||||
import com.rusefi.ui.storage.PersistentConfiguration;
|
||||
import com.rusefi.ui.util.URLLabel;
|
||||
import org.apache.http.concurrent.FutureCallback;
|
||||
import org.putgemin.VerticalFlowLayout;
|
||||
|
@ -50,13 +49,7 @@ public class PluginEntry implements TsPluginBody {
|
|||
}
|
||||
});
|
||||
|
||||
ControllerParameterChangeListener listener = new ControllerParameterChangeListener() {
|
||||
@Override
|
||||
public void parameterValueChanged(String parameterName) {
|
||||
System.out.println("Parameter value changed " + parameterName);
|
||||
timer.restart();
|
||||
}
|
||||
};
|
||||
private final ControllerParameterChangeListener listener;
|
||||
|
||||
/**
|
||||
* the real constructor - this one is invoked via reflection
|
||||
|
@ -70,6 +63,13 @@ public class PluginEntry implements TsPluginBody {
|
|||
timer.stop();
|
||||
timer.setRepeats(false);
|
||||
this.controllerAccessSupplier = controllerAccessSupplier;
|
||||
listener = parameterName -> {
|
||||
// System.out.println("Parameter value changed " + parameterName);
|
||||
timer.restart();
|
||||
if (UploadView.isAutoUpload()) {
|
||||
UploadQueue.enqueue(controllerAccessSupplier.get(), currentConfiguration);
|
||||
}
|
||||
};
|
||||
upload.setBackground(new Color(0x90EE90));
|
||||
|
||||
new Thread(new Runnable() {
|
||||
|
@ -205,11 +205,11 @@ public class PluginEntry implements TsPluginBody {
|
|||
public JComponent getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
/*
|
||||
public void close() {
|
||||
PersistentConfiguration.getConfig().save();
|
||||
}
|
||||
|
||||
*/
|
||||
private String getConfigurationName() {
|
||||
ControllerAccess controllerAccess = controllerAccessSupplier.get();
|
||||
if (controllerAccess == null) {
|
||||
|
|
|
@ -4,12 +4,14 @@ import com.efiAnalytics.plugin.ecu.ControllerAccess;
|
|||
import com.efiAnalytics.plugin.ecu.ControllerException;
|
||||
import com.efiAnalytics.plugin.ecu.ControllerParameter;
|
||||
import com.efiAnalytics.plugin.ecu.servers.ControllerParameterServer;
|
||||
import com.opensr5.ini.IniFileMetaInfo;
|
||||
import com.rusefi.TsTuneReader;
|
||||
import com.rusefi.tools.online.Online;
|
||||
import com.rusefi.tune.xml.Constant;
|
||||
import com.rusefi.tune.xml.Msq;
|
||||
import com.rusefi.tune.xml.Page;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.io.IOException;
|
||||
|
@ -17,12 +19,29 @@ import java.util.Collections;
|
|||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.TreeMap;
|
||||
import com.rusefi.config.generated.Fields;
|
||||
|
||||
public class TuneUploder {
|
||||
static Msq writeCurrentTune(ControllerAccess controllerAccess, String configurationName) {
|
||||
Msq msq = grabTune(controllerAccess, configurationName);
|
||||
if (msq == null)
|
||||
return null;
|
||||
try {
|
||||
String fileName = Online.outputXmlFileName;
|
||||
msq.writeXmlFile(fileName);
|
||||
return msq;
|
||||
} catch (JAXBException | IOException e) {
|
||||
System.out.println("Error writing XML: " + e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Msq grabTune(ControllerAccess controllerAccess, String configurationName) {
|
||||
Objects.requireNonNull(controllerAccess, "controllerAccess");
|
||||
Msq msq = Msq.create(Fields.TOTAL_CONFIG_SIZE, Fields.TS_SIGNATURE);
|
||||
IniFileMetaInfo meta = MetaDataCache.getModel(configurationName);
|
||||
if (meta == null)
|
||||
return null;
|
||||
Msq msq = Msq.create(meta.getTotalSize(), meta.getSignature());
|
||||
ControllerParameterServer controllerParameterServer = controllerAccess.getControllerParameterServer();
|
||||
Objects.requireNonNull(controllerParameterServer, "controllerParameterServer");
|
||||
|
||||
|
@ -31,16 +50,13 @@ public class TuneUploder {
|
|||
try {
|
||||
String[] parameterNames = controllerParameterServer.getParameterNames(configurationName);
|
||||
for (String parameterName : parameterNames) {
|
||||
handleParameter(configurationName, msq, controllerParameterServer, fileSystemValues, parameterName);
|
||||
applyParameterValue(configurationName, msq, controllerParameterServer, fileSystemValues, parameterName);
|
||||
}
|
||||
|
||||
String fileName = Online.outputXmlFileName;
|
||||
msq.writeXmlFile(fileName);
|
||||
return msq;
|
||||
} catch (JAXBException | IOException | ControllerException e) {
|
||||
System.out.println("Error writing XML: " + e);
|
||||
} catch (ControllerException e) {
|
||||
System.out.println("Error saving configuration: " + e);
|
||||
return null;
|
||||
}
|
||||
return msq;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
@ -60,7 +76,7 @@ public class TuneUploder {
|
|||
return byName;
|
||||
}
|
||||
|
||||
private static void handleParameter(String configurationName, Msq msq, ControllerParameterServer controllerParameterServer, Map<String, Constant> byName, String parameterName) throws ControllerException {
|
||||
private static void applyParameterValue(String configurationName, Msq msq, ControllerParameterServer controllerParameterServer, Map<String, Constant> byName, String parameterName) throws ControllerException {
|
||||
ControllerParameter cp = controllerParameterServer.getControllerParameter(configurationName, parameterName);
|
||||
Objects.requireNonNull(cp, "ControllerParameter");
|
||||
String type = cp.getParamClass();
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package com.rusefi.ts_plugin;
|
||||
|
||||
import com.efiAnalytics.plugin.ecu.ControllerAccess;
|
||||
import com.rusefi.tune.xml.Msq;
|
||||
|
||||
public class UploadQueue {
|
||||
public static void enqueue(ControllerAccess controllerAccess, String configurationName) {
|
||||
Msq msq = TuneUploder.grabTune(controllerAccess, configurationName);
|
||||
}
|
||||
}
|
|
@ -2,7 +2,6 @@ package com.rusefi.ts_plugin;
|
|||
|
||||
import com.rusefi.tools.online.UploadResult;
|
||||
import com.rusefi.ui.storage.PersistentConfiguration;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.putgemin.VerticalFlowLayout;
|
||||
|
||||
import javax.swing.*;
|
||||
|
@ -34,7 +33,7 @@ public class UploadView {
|
|||
uploadState.setVisible(false);
|
||||
}
|
||||
|
||||
private static boolean isAutoUpload() {
|
||||
public static boolean isAutoUpload() {
|
||||
return PersistentConfiguration.getConfig().getRoot().getBoolProperty(AUTO_UPLOAD, false);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ public interface TsPluginBody {
|
|||
String GET_VERSION = "getVersion";
|
||||
|
||||
JComponent getContent();
|
||||
|
||||
/*
|
||||
void close();
|
||||
*/
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue