diff --git a/src/main/java/com/romraider/logger/ecu/EcuLogger.java b/src/main/java/com/romraider/logger/ecu/EcuLogger.java index 94c1ad55..0f4dc0b5 100644 --- a/src/main/java/com/romraider/logger/ecu/EcuLogger.java +++ b/src/main/java/com/romraider/logger/ecu/EcuLogger.java @@ -272,6 +272,7 @@ public final class EcuLogger extends AbstractFrame implements MessageListener { private final JLabel startText = new JLabel(" Initializing Logger..."); private final String HOME = System.getProperty("user.home"); private StatusIndicator statusIndicator; + private List dtcodes = new ArrayList(); public EcuLogger(Settings settings) { super(ECU_LOGGER_TITLE); @@ -523,6 +524,7 @@ public final class EcuLogger extends AbstractFrame implements MessageListener { addConvertorUpdateListeners(ecuParams); loadEcuParams(ecuParams); loadEcuSwitches(dataLoader.getEcuSwitches()); + dtcodes = dataLoader.getEcuCodes(); if (target.equals("ECU")) initFileLoggingController(dataLoader.getFileLoggingControllerSwitch()); settings.setLoggerConnectionProperties(dataLoader.getConnectionProperties()); if (dataLoader.getDefVersion() == null) { diff --git a/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoader.java b/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoader.java index d8d090d5..84399624 100644 --- a/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoader.java +++ b/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoader.java @@ -1,6 +1,6 @@ /* * RomRaider Open-Source Tuning, Logging and Reflashing - * Copyright (C) 2006-2012 RomRaider.com + * Copyright (C) 2006-2013 RomRaider.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,4 +42,6 @@ public interface EcuDataLoader { ConnectionProperties getConnectionProperties(); String getDefVersion(); + + List getEcuCodes(); } diff --git a/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoaderImpl.java b/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoaderImpl.java index af8a1765..6a8dc9dd 100644 --- a/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoaderImpl.java +++ b/src/main/java/com/romraider/logger/ecu/definition/EcuDataLoaderImpl.java @@ -1,6 +1,6 @@ /* * RomRaider Open-Source Tuning, Logging and Reflashing - * Copyright (C) 2006-2012 RomRaider.com + * Copyright (C) 2006-2013 RomRaider.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,6 +42,7 @@ public final class EcuDataLoaderImpl implements EcuDataLoader { private Map ecuDefinitionMap = new HashMap(); private List ecuParameters = new ArrayList(); private List ecuSwitches = new ArrayList(); + private List dtcodes = new ArrayList(); private EcuSwitch fileLoggingControllerSwitch; private ConnectionProperties connectionProperties; private String defVersion; @@ -81,6 +82,7 @@ public final class EcuDataLoaderImpl implements EcuDataLoader { fileLoggingControllerSwitch = handler.getFileLoggingControllerSwitch(); connectionProperties = handler.getConnectionProperties(); defVersion = handler.getVersion(); + dtcodes = handler.getEcuCodes(); } finally { inputStream.close(); } @@ -117,4 +119,8 @@ public final class EcuDataLoaderImpl implements EcuDataLoader { public String getDefVersion() { return defVersion; } + + public List getEcuCodes() { + return dtcodes; + } } diff --git a/src/main/java/com/romraider/logger/ecu/definition/xml/LoggerDefinitionHandler.java b/src/main/java/com/romraider/logger/ecu/definition/xml/LoggerDefinitionHandler.java index dfbc0946..a6bbab70 100644 --- a/src/main/java/com/romraider/logger/ecu/definition/xml/LoggerDefinitionHandler.java +++ b/src/main/java/com/romraider/logger/ecu/definition/xml/LoggerDefinitionHandler.java @@ -67,6 +67,7 @@ public final class LoggerDefinitionHandler extends DefaultHandler { private static final String TAG_SWITCH = "switch"; private static final String TAG_ECUPARAM = "ecuparam"; private static final String TAG_ECU = "ecu"; + private static final String TAG_DTCODE = "dtcode"; private static final String ATTR_VERSION = "version"; private static final String ATTR_ID = "id"; private static final String ATTR_NAME = "name"; @@ -93,11 +94,14 @@ public final class LoggerDefinitionHandler extends DefaultHandler { private static final String ATTR_GAUGE_MAX = "gauge_max"; private static final String ATTR_GAUGE_STEP = "gauge_step"; private static final String ATTR_TARGET = "target"; + private static final String ATTR_TMPADDR = "tmpaddr"; + private static final String ATTR_MEMADDR = "memaddr"; private final String protocol; private final String fileLoggingControllerSwitchId; private final EcuInit ecuInit; private List params = new ArrayList(); private List switches = new ArrayList(); + private List dtcodes = new ArrayList(); private EcuSwitch fileLoggingControllerSwitch; private ConnectionProperties connectionProperties; private Map ecuDataMap; @@ -140,6 +144,7 @@ public final class LoggerDefinitionHandler extends DefaultHandler { params = new ArrayList(); switches = new ArrayList(); ecuDataMap = new HashMap(); + dtcodes = new ArrayList(); } public void startElement(String uri, String localName, String qName, Attributes attributes) { @@ -208,6 +213,17 @@ public final class LoggerDefinitionHandler extends DefaultHandler { derived = false; } else if (TAG_ECU.equals(qName)) { ecuIds = attributes.getValue(ATTR_ID); + } else if (TAG_DTCODE.equals(qName)) { + id = attributes.getValue(ATTR_ID); + name = attributes.getValue(ATTR_NAME); + desc = attributes.getValue(ATTR_DESC); + address = new EcuAddressImpl( + new String[] {attributes.getValue(ATTR_TMPADDR), + attributes.getValue(ATTR_MEMADDR) + }, + 1, + Integer.valueOf(attributes.getValue(ATTR_BIT))); + resetLists(); } } charBuffer = new StringBuilder(); @@ -288,6 +304,11 @@ public final class LoggerDefinitionHandler extends DefaultHandler { fileLoggingControllerSwitch = new EcuSwitchImpl(id, name, desc, address, convertors); } } + } else if (TAG_DTCODE.equals(qName)) { + final EcuDataConvertor[] convertors = new EcuDataConvertor[]{new EcuSwitchConvertorImpl(address.getBit())}; + final EcuSwitch ecuSwitch = new EcuSwitchImpl(id, name, desc, address, convertors); + dtcodes.add(ecuSwitch); + ecuDataMap.put(ecuSwitch.getId(), ecuSwitch); } } } @@ -312,6 +333,10 @@ public final class LoggerDefinitionHandler extends DefaultHandler { return version; } + public List getEcuCodes() { + return dtcodes; + } + private void resetLists() { addrStrings.clear(); EcuAddressCreated = false;