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 87b66ef9..d3a962d2 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 @@ -42,6 +42,7 @@ import org.xml.sax.helpers.DefaultHandler; import com.romraider.Settings; import com.romraider.io.connection.ConnectionProperties; +import com.romraider.io.connection.KwpSerialConnectionProperties; import com.romraider.io.connection.SerialConnectionProperties; import com.romraider.logger.ecu.comms.query.EcuInit; import com.romraider.logger.ecu.definition.EcuAddress; @@ -112,6 +113,9 @@ public final class LoggerDefinitionHandler extends DefaultHandler { private static final String ATTR_ADDRESS = "address"; private static final String ATTR_TESTER = "tester"; private static final String ATTR_FASTPOLL = "fastpoll"; + private static final String ATTR_P1_MAX = "p1_max"; + private static final String ATTR_P3_MIN = "p3_min"; + private static final String ATTR_P4_MIN = "p4_min"; private final String protocol; private final String fileLoggingControllerSwitchId; private final EcuInit ecuInit; @@ -180,10 +184,19 @@ public final class LoggerDefinitionHandler extends DefaultHandler { protocolId = attributes.getValue(ATTR_ID); parseProtocol = protocol.equalsIgnoreCase(protocolId); if (parseProtocol) { + if ("NCS".equalsIgnoreCase(protocolId)) { + connectionProperties = new KwpSerialConnectionProperties(Integer.parseInt(attributes.getValue(ATTR_BAUD)), + Integer.parseInt(attributes.getValue(ATTR_DATABITS)), Integer.parseInt(attributes.getValue(ATTR_STOPBITS)), + Integer.parseInt(attributes.getValue(ATTR_PARITY)), Integer.parseInt(attributes.getValue(ATTR_CONNECT_TIMEOUT)), + Integer.parseInt(attributes.getValue(ATTR_SEND_TIMEOUT)), Integer.parseInt(attributes.getValue(ATTR_P1_MAX)), + Integer.parseInt(attributes.getValue(ATTR_P3_MIN)), Integer.parseInt(attributes.getValue(ATTR_P4_MIN))); + } + else { connectionProperties = new SerialConnectionProperties(Integer.parseInt(attributes.getValue(ATTR_BAUD)), Integer.parseInt(attributes.getValue(ATTR_DATABITS)), Integer.parseInt(attributes.getValue(ATTR_STOPBITS)), Integer.parseInt(attributes.getValue(ATTR_PARITY)), Integer.parseInt(attributes.getValue(ATTR_CONNECT_TIMEOUT)), Integer.parseInt(attributes.getValue(ATTR_SEND_TIMEOUT))); + } } transportMap = new HashMap>(); } else if (TAG_TRANSPORT.equals(qName)) { @@ -260,6 +273,8 @@ public final class LoggerDefinitionHandler extends DefaultHandler { group = attributes.getValue(ATTR_GROUP); subgroup = attributes.getValue(ATTR_SUBGROUP); groupsize = attributes.getValue(ATTR_GROUPSIZE); + conversionStorageType = attributes.getValue(ATTR_STORAGETYPE); + conversionUnits = attributes.getValue(ATTR_UNITS); target = attributes.getValue(ATTR_TARGET); address = new EcuAddressImpl(attributes.getValue(ATTR_BYTE), 1, Integer.valueOf(attributes.getValue(ATTR_BIT))); resetLists(); @@ -367,7 +382,11 @@ public final class LoggerDefinitionHandler extends DefaultHandler { } else if (TAG_SWITCH.equals(qName)) { if (ecuByteIndex == null || ecuBit == null || ecuInit == null || isSupportedParameter(ecuInit, ecuByteIndex, ecuBit)) { - EcuDataConvertor[] convertors = new EcuDataConvertor[]{new EcuSwitchConvertorImpl(address.getBit())}; + EcuDataConvertor[] convertors = + new EcuDataConvertor[]{new EcuSwitchConvertorImpl( + address.getBit(), + conversionStorageType, + conversionUnits)}; EcuSwitch ecuSwitch = new EcuSwitchImpl( id, name, desc, address, group, subgroup, groupsize, convertors);