From 5955e152c6d9c74ff3a2296381e0b6243ce7f400 Mon Sep 17 00:00:00 2001 From: Dale Schultz Date: Thu, 22 Sep 2011 03:21:36 +0000 Subject: [PATCH] More External data converter code git-svn-id: https://svn2.assembla.com/svn/romraider/trunk@339 38686702-15cf-42e4-a595-3071df8bf5ea --- release_notes.txt | 15 ++++++++-- src/com/romraider/logger/ecu/EcuLogger.java | 1 - .../definition/ExternalDataConvertorImpl.java | 28 +++++++++++++---- .../core/ExternalDataSourceLoaderImpl.java | 2 +- .../logger/external/te/plugin/TEDataItem.java | 4 +++ .../external/te/plugin/TEDataItemImpl.java | 19 ++++++++++-- .../external/te/plugin/TEDataSource.java | 30 ++++++++++++------- 7 files changed, 76 insertions(+), 23 deletions(-) diff --git a/release_notes.txt b/release_notes.txt index dd403230..21af1de0 100644 --- a/release_notes.txt +++ b/release_notes.txt @@ -34,12 +34,12 @@ documentation may be incomplete or out of date. ------------------------------- -- 0.5.3b RC10 Notes (09/12/2011) - +- 0.5.3b RC11 Notes (??/??/????) - ------------------------------- -This is the tenth beta release of the upcoming official 0.5.3b release. +This is the eleventh beta release of the upcoming official 0.5.3b release. --------------------------- -- 0.5.3b RC10 Known Issues - +- 0.5.3b RC11 Known Issues - --------------------------- - Editor - Pasting table data can cause hangs under certain circumstances @@ -55,6 +55,15 @@ This is the tenth beta release of the upcoming official 0.5.3b release. - Change Log - -------------- +0.5.3b RC11 (??/??/????) +----------------------- + +--- Logger --- +- TXS Tuner Wideband plugin added curtosy of, nitros +- Added support for ECU/TCU Switch filtering +- Added (msec) designation to logged CSV column heading +- Added support for sorting the Selected? & Description paramater list entries. + 0.5.3b RC10 (09/12/2011) ----------------------- diff --git a/src/com/romraider/logger/ecu/EcuLogger.java b/src/com/romraider/logger/ecu/EcuLogger.java index c91f28cd..223c1c32 100644 --- a/src/com/romraider/logger/ecu/EcuLogger.java +++ b/src/com/romraider/logger/ecu/EcuLogger.java @@ -627,7 +627,6 @@ public final class EcuLogger extends AbstractFrame implements MessageListener { for (ExternalDataSource dataSource : externalDataSources) { try { List dataItems = dataSource.getDataItems(); - for (ExternalDataItem item : dataItems) { externalDatas.add(new ExternalDataImpl(item, dataSource)); } diff --git a/src/com/romraider/logger/ecu/definition/ExternalDataConvertorImpl.java b/src/com/romraider/logger/ecu/definition/ExternalDataConvertorImpl.java index 1b5b7536..79964405 100644 --- a/src/com/romraider/logger/ecu/definition/ExternalDataConvertorImpl.java +++ b/src/com/romraider/logger/ecu/definition/ExternalDataConvertorImpl.java @@ -20,23 +20,41 @@ package com.romraider.logger.ecu.definition; import static com.romraider.logger.ecu.definition.xml.ConverterMaxMinDefaults.getMaxMin; +import static com.romraider.util.ByteUtil.asUnsignedInt; +import static com.romraider.util.JEPUtil.evaluate; +import static com.romraider.util.ParamChecker.isValidBit; +import static java.lang.Float.intBitsToFloat; import com.romraider.logger.ecu.ui.handler.dash.GaugeMinMax; import com.romraider.logger.external.core.ExternalDataItem; import java.text.DecimalFormat; +import java.util.Map; public final class ExternalDataConvertorImpl implements EcuDataConvertor { + private final String units; + private final String expression; + private final GaugeMinMax gaugeMinMax; private final ExternalDataItem dataItem; - private static final String FORMAT = "0.##"; - private DecimalFormat format = new DecimalFormat(FORMAT); + private DecimalFormat format; + +// +// +// +// public ExternalDataConvertorImpl(ExternalDataItem dataItem) { this.dataItem = dataItem; + this.units = dataItem.getUnits(); + this.expression = "x"; + this.gaugeMinMax = new GaugeMinMax(0,0,0); + this.format = new DecimalFormat("0.##"); } public double convert(byte[] bytes) { - return dataItem.getData(); + double value = dataItem.getData(); + double result = evaluate(expression, value); + return Double.isNaN(result) || Double.isInfinite(result) ? 0.0 : result; } public String format(double value) { @@ -44,7 +62,7 @@ public final class ExternalDataConvertorImpl implements EcuDataConvertor { } public String getUnits() { - return dataItem.getUnits(); + return units; } public GaugeMinMax getGaugeMinMax() { @@ -52,6 +70,6 @@ public final class ExternalDataConvertorImpl implements EcuDataConvertor { } public String getFormat() { - return FORMAT; + return format.toPattern(); } } diff --git a/src/com/romraider/logger/external/core/ExternalDataSourceLoaderImpl.java b/src/com/romraider/logger/external/core/ExternalDataSourceLoaderImpl.java index 5c2f42a2..0cb147ea 100644 --- a/src/com/romraider/logger/external/core/ExternalDataSourceLoaderImpl.java +++ b/src/com/romraider/logger/external/core/ExternalDataSourceLoaderImpl.java @@ -38,7 +38,7 @@ public final class ExternalDataSourceLoaderImpl implements ExternalDataSourceLoa try { File pluginsDir = new File("./plugins"); if (pluginsDir.exists() && pluginsDir.isDirectory()) { - externalDataSources = new ArrayList(); +// externalDataSources = new ArrayList(); File[] pluginPropertyFiles = pluginsDir.listFiles(new PluginFilenameFilter()); for (File pluginPropertyFile : pluginPropertyFiles) { Properties pluginProps = new Properties(); diff --git a/src/com/romraider/logger/external/te/plugin/TEDataItem.java b/src/com/romraider/logger/external/te/plugin/TEDataItem.java index e7f7eebe..e958a5d1 100644 --- a/src/com/romraider/logger/external/te/plugin/TEDataItem.java +++ b/src/com/romraider/logger/external/te/plugin/TEDataItem.java @@ -23,4 +23,8 @@ import com.romraider.logger.external.core.ExternalDataItem; public interface TEDataItem extends ExternalDataItem { void setRaw(int... raw); + + String getFormat(); + + String getExpression(); } diff --git a/src/com/romraider/logger/external/te/plugin/TEDataItemImpl.java b/src/com/romraider/logger/external/te/plugin/TEDataItemImpl.java index b723d206..5c1f125d 100644 --- a/src/com/romraider/logger/external/te/plugin/TEDataItemImpl.java +++ b/src/com/romraider/logger/external/te/plugin/TEDataItemImpl.java @@ -25,16 +25,21 @@ public final class TEDataItemImpl implements TEDataItem { private final TEConverter converter = new TEConverterImpl(); private final TESensorUnits sensorUnits; private final TESensorType sensorType; - private final String[] units; + private final String units; private final String name; + private final String format; + private final String expression; private int[] raw; - public TEDataItemImpl(String name, String[] units, TESensorType sensorType, TESensorUnits sensorUnits) { +// public TEDataItemImpl(String name, String[] units, TESensorType sensorType, TESensorUnits sensorUnits) { + public TEDataItemImpl(String name, String units, TESensorType sensorType, TESensorUnits sensorUnits, String format, String expression) { super(); this.name = name; this.units = units; this.sensorType = sensorType; this.sensorUnits = sensorUnits; + this.format = format; + this.expression = expression; } public String getName() { @@ -46,7 +51,15 @@ public final class TEDataItemImpl implements TEDataItem { } public String getUnits() { - return units[0]; + return units; + } + + public String getFormat() { + return format; + } + + public String getExpression() { + return expression; } public double getData() { diff --git a/src/com/romraider/logger/external/te/plugin/TEDataSource.java b/src/com/romraider/logger/external/te/plugin/TEDataSource.java index f1ec4587..d702f3b4 100644 --- a/src/com/romraider/logger/external/te/plugin/TEDataSource.java +++ b/src/com/romraider/logger/external/te/plugin/TEDataSource.java @@ -52,16 +52,26 @@ public final class TEDataSource implements ExternalDataSource { private String port; { - dataItems.put(Lambda, new TEDataItemImpl("Wideband", new String[]{"Lambda", "AFR"}, Lambda, WIDEBAND_AFR_LAMBDA)); - dataItems.put(AFR, new TEDataItemImpl("Wideband", new String[]{"AFR"}, Lambda, WIDEBAND_AFR_GASOLINE147)); - dataItems.put(USR1, new TEDataItemImpl("User 1", new String[]{"VDC"}, USR1, VDC)); - dataItems.put(USR2, new TEDataItemImpl("User 2", new String[]{"VDC"}, USR2, VDC)); - dataItems.put(USR3, new TEDataItemImpl("User 3", new String[]{"VDC"}, USR3, VDC)); - dataItems.put(TC1, new TEDataItemImpl("Thermocouple 1", new String[]{"raw"}, TC1, RAW)); - dataItems.put(TC2, new TEDataItemImpl("Thermocouple 2", new String[]{"raw"}, TC2, RAW)); - dataItems.put(TC3, new TEDataItemImpl("Thermocouple 3", new String[]{"raw"}, TC3, RAW)); - dataItems.put(TorVss, new TEDataItemImpl("Thermistor or Vss", new String[]{"raw"}, TorVss, RAW)); - dataItems.put(RPM, new TEDataItemImpl("Engine Speed (4-cyl)", new String[]{"RPM"}, RPM, ENGINE_SPEED)); +// dataItems.put(Lambda, new TEDataItemImpl("Wideband", new String[]{"Lambda", "AFR"}, Lambda, WIDEBAND_AFR_LAMBDA)); +// dataItems.put(AFR, new TEDataItemImpl("Wideband", new String[]{"AFR"}, Lambda, WIDEBAND_AFR_GASOLINE147)); +// dataItems.put(USR1, new TEDataItemImpl("User 1", new String[]{"VDC"}, USR1, VDC)); +// dataItems.put(USR2, new TEDataItemImpl("User 2", new String[]{"VDC"}, USR2, VDC)); +// dataItems.put(USR3, new TEDataItemImpl("User 3", new String[]{"VDC"}, USR3, VDC)); +// dataItems.put(TC1, new TEDataItemImpl("Thermocouple 1", new String[]{"raw"}, TC1, RAW)); +// dataItems.put(TC2, new TEDataItemImpl("Thermocouple 2", new String[]{"raw"}, TC2, RAW)); +// dataItems.put(TC3, new TEDataItemImpl("Thermocouple 3", new String[]{"raw"}, TC3, RAW)); +// dataItems.put(TorVss, new TEDataItemImpl("Thermistor or Vss", new String[]{"raw"}, TorVss, RAW)); +// dataItems.put(RPM, new TEDataItemImpl("Engine Speed (4-cyl)", new String[]{"RPM"}, RPM, ENGINE_SPEED)); + dataItems.put(Lambda, new TEDataItemImpl("Wideband", "Lambda", Lambda, WIDEBAND_AFR_LAMBDA, "x", "0.##")); + dataItems.put(AFR, new TEDataItemImpl("Wideband", "AFR", Lambda, WIDEBAND_AFR_GASOLINE147, "x", "0.##")); + dataItems.put(USR1, new TEDataItemImpl("User 1", "VDC", USR1, VDC, "x", "0.##")); + dataItems.put(USR2, new TEDataItemImpl("User 2", "VDC", USR2, VDC, "x", "0.##")); + dataItems.put(USR3, new TEDataItemImpl("User 3", "VDC", USR3, VDC, "x", "0.##")); + dataItems.put(TC1, new TEDataItemImpl("Thermocouple 1", "raw", TC1, RAW, "x", "0.##")); + dataItems.put(TC2, new TEDataItemImpl("Thermocouple 2", "raw", TC2, RAW, "x", "0.##")); + dataItems.put(TC3, new TEDataItemImpl("Thermocouple 3", "raw", TC3, RAW, "x", "0.##")); + dataItems.put(TorVss, new TEDataItemImpl("Thermistor or Vss", "raw", TorVss, RAW, "x", "0.##")); + dataItems.put(RPM, new TEDataItemImpl("Engine Speed (4-cyl)", "RPM", RPM, ENGINE_SPEED, "x", "0.##")); } public String getId() {