MAYBE this would even work?

This commit is contained in:
rusefi 2020-05-20 02:51:14 -04:00
parent b71403de7a
commit bd8dd3f7a7
7 changed files with 55 additions and 32 deletions

View File

@ -13,6 +13,7 @@ import java.util.*;
public class IniFileModel {
public static final String RUSEFI_INI_PREFIX = "rusefi";
public static final String RUSEFI_INI_SUFFIX = ".ini";
public static final String INI_FILE_PATH = System.getProperty("ini_file_path", "..");
private static final String SECTION_PAGE = "page";
private static final String FIELD_TYPE_SCALAR = "scalar";
private static final String FIELD_TYPE_STRING = "string";
@ -31,7 +32,7 @@ public class IniFileModel {
public Map<String, String> tooltips = new TreeMap<>();
public static void main(String[] args) {
System.out.println(IniFileModel.getInstance("..").dialogs);
System.out.println(IniFileModel.getInstance().dialogs);
}
private boolean isInSettingContextHelp = false;
@ -200,10 +201,10 @@ public class IniFileModel {
DIALOG
}
public static synchronized IniFileModel getInstance(String iniFilePath) {
public static synchronized IniFileModel getInstance() {
if (INSTANCE == null) {
INSTANCE = new IniFileModel();
INSTANCE.readIniFile(iniFilePath);
INSTANCE.readIniFile(INI_FILE_PATH);
}
return INSTANCE;
}

View File

@ -43,7 +43,6 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
*/
public class Launcher {
public static final int CONSOLE_VERSION = 20200520;
public static final String INI_FILE_PATH = System.getProperty("ini_file_path", "..");
public static final String INPUT_FILES_PATH = System.getProperty("input_files_path", "..");
public static final String TOOLS_PATH = System.getProperty("tools_path", ".");
public static final String TAB_INDEX = "main_tab";

View File

@ -3,7 +3,6 @@ package com.rusefi.tools;
import com.fathzer.soft.javaluator.DoubleEvaluator;
import com.opensr5.ConfigurationImage;
import com.opensr5.ini.IniFileModel;
import com.opensr5.ini.field.IniField;
import com.opensr5.io.ConfigurationImageFile;
import com.rusefi.*;
import com.rusefi.autodetect.PortDetector;
@ -16,9 +15,9 @@ import com.rusefi.io.LinkManager;
import com.rusefi.io.serial.SerialIoStreamJSerialComm;
import com.rusefi.maintenance.ExecHelper;
import com.rusefi.tools.online.Online;
import com.rusefi.tune.xml.Constant;
import com.rusefi.tune.xml.Msq;
import com.rusefi.xml.XmlUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.xml.bind.JAXBException;
@ -204,7 +203,6 @@ public class ConsoleTools {
}
private static void convertBinaryToXml(String[] args) throws IOException, JAXBException {
Msq tune = new Msq();
if (args.length < 2) {
System.err.println("Binary file input expected");
@ -214,28 +212,18 @@ public class ConsoleTools {
ConfigurationImage image = ConfigurationImageFile.readFromFile(inputBinaryFileName);
System.out.println("Got " + image.getSize() + " of configuration from " + inputBinaryFileName);
IniFileModel ini = IniFileModel.getInstance(Launcher.INI_FILE_PATH);
Msq tune = toMsq(image);
XmlUtil.writeXml(tune, Msq.class, Msq.outputXmlFileName);
Online.upload(new File(Msq.outputXmlFileName), "x");
}
@NotNull
public static Msq toMsq(ConfigurationImage image) {
IniFileModel ini = IniFileModel.getInstance();
Msq tune = new Msq();
for (String key : ini.allIniFields.keySet())
handle(tune, ini, key, image);
// handle(tune, ini, "injector_battLagCorrBins");
String outputXmlFile = "output.msq";
XmlUtil.writeXml(tune, Msq.class, outputXmlFile);
Online.upload(new File(outputXmlFile), "x");
}
private static void handle(Msq tune, IniFileModel ini, String key, ConfigurationImage image) {
IniField field = ini.allIniFields.get(key);
tune.getPage().constant.add(prepareConstant(field, image));
}
private static Constant prepareConstant(IniField field, ConfigurationImage image) {
String value = field.getValue(image);
return new Constant(field.getName(), field.getUnits(), value);
tune.loadConstant(ini, key, image);
return tune;
}
interface ConsoleTool {

View File

@ -1,11 +1,17 @@
package com.rusefi.tune.xml;
import com.opensr5.ConfigurationImage;
import com.opensr5.ini.IniFileModel;
import com.opensr5.ini.field.IniField;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Msq {
public static final String outputXmlFileName = "output.msq";
private final Page page = new Page();
private final VersionInfo versionInfo;
@ -14,6 +20,12 @@ public class Msq {
versionInfo = new VersionInfo("rusEFI+2020");
}
public void loadConstant(IniFileModel ini, String key, ConfigurationImage image) {
IniField field = ini.allIniFields.get(key);
String value = field.getValue(image);
getPage().constant.add(new Constant(field.getName(), field.getUnits(), value));
}
@XmlAttribute
public String getXmlns() {
return "http://www.msefi.com/:msq";

View File

@ -1,11 +1,19 @@
package com.rusefi.ui;
import com.rusefi.io.LinkManager;
import com.rusefi.tools.ConsoleTools;
import com.rusefi.tools.online.Online;
import com.rusefi.tune.xml.Msq;
import com.rusefi.xml.XmlUtil;
import org.putgemin.VerticalFlowLayout;
import javax.swing.*;
import javax.xml.bind.JAXBException;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
@ -30,6 +38,23 @@ public class OnlineTab {
}
});
content.add(save);
JButton upload = new JButton("Upload");
upload.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
Msq tune = ConsoleTools.toMsq(LinkManager.connector.getBinaryProtocol().getControllerConfiguration());
try {
XmlUtil.writeXml(tune, Msq.class, Msq.outputXmlFileName);
// todo: network upload should not happen on UI thread
Online.upload(new File(Msq.outputXmlFileName), textField.getText());
} catch (JAXBException | IOException ex) {
throw new IllegalStateException(ex);
}
}
});
content.add(upload);
}
public JPanel getContent() {

View File

@ -2,7 +2,6 @@ package com.rusefi.ui.console;
import com.opensr5.ini.DialogModel;
import com.opensr5.ini.IniFileModel;
import com.rusefi.Launcher;
import com.rusefi.config.Field;
import com.rusefi.config.FieldType;
import com.rusefi.config.FieldsMap;
@ -40,7 +39,7 @@ public class SettingsTab {
}
public void showContent() {
final Map<String, DialogModel> dialogs = IniFileModel.getInstance(Launcher.INI_FILE_PATH).getDialogs();
final Map<String, DialogModel> dialogs = IniFileModel.getInstance().getDialogs();
if (dialogs.isEmpty()) {
content.removeAll();
content.add(new JLabel("Meta data not found: " + RUSEFI_INI_PREFIX + "*" + RUSEFI_INI_SUFFIX));
@ -132,7 +131,7 @@ public class SettingsTab {
dialog.setText(name);
dialogBody.removeAll();
DialogModel m = IniFileModel.getInstance(Launcher.INI_FILE_PATH).getDialogs().get(name);
DialogModel m = IniFileModel.getInstance().getDialogs().get(name);
dialogBody.setLayout(new GridLayout(m.getFields().size(), 1));

View File

@ -1,7 +1,6 @@
package com.rusefi.ui.livedocs;
import com.opensr5.ConfigurationImage;
import com.rusefi.Launcher;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.config.Field;
import com.rusefi.config.generated.Fields;
@ -163,7 +162,7 @@ public class LiveDocPanel {
}
private static String getTooltipText(String configurationFieldName) {
DialogModel.Field dialogField = IniFileModel.getInstance(Launcher.INI_FILE_PATH).getField(configurationFieldName);
DialogModel.Field dialogField = IniFileModel.getInstance().getField(configurationFieldName);
if (dialogField == null) {
return "Configuration " + configurationFieldName;
}