mirror of https://github.com/rusefi/RomRaider.git
More External data converter code
git-svn-id: https://svn2.assembla.com/svn/romraider/trunk@339 38686702-15cf-42e4-a595-3071df8bf5ea
This commit is contained in:
parent
4f35e04fb9
commit
5955e152c6
|
@ -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)
|
||||
-----------------------
|
||||
|
||||
|
|
|
@ -627,7 +627,6 @@ public final class EcuLogger extends AbstractFrame implements MessageListener {
|
|||
for (ExternalDataSource dataSource : externalDataSources) {
|
||||
try {
|
||||
List<? extends ExternalDataItem> dataItems = dataSource.getDataItems();
|
||||
|
||||
for (ExternalDataItem item : dataItems) {
|
||||
externalDatas.add(new ExternalDataImpl(item, dataSource));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
// <conversion units="psi" expr="x*37/255" format="0.00" gauge_min="-20" gauge_max="40" gauge_step="5" />
|
||||
// <conversion units="kPa" expr="x*37/255/14.50377*100" format="0" gauge_min="-120" gauge_max="280" gauge_step="40" />
|
||||
// <conversion units="hPa" expr="x*37/255/14.50377*1000" format="0" gauge_min="-1200" gauge_max="2800" gauge_step="400" />
|
||||
// <conversion units="bar" expr="x*37/255/14.50377" format="0.000" gauge_min="-1.2" gauge_max="2.8" gauge_step="0.4" />
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ public final class ExternalDataSourceLoaderImpl implements ExternalDataSourceLoa
|
|||
try {
|
||||
File pluginsDir = new File("./plugins");
|
||||
if (pluginsDir.exists() && pluginsDir.isDirectory()) {
|
||||
externalDataSources = new ArrayList<ExternalDataSource>();
|
||||
// externalDataSources = new ArrayList<ExternalDataSource>();
|
||||
File[] pluginPropertyFiles = pluginsDir.listFiles(new PluginFilenameFilter());
|
||||
for (File pluginPropertyFile : pluginPropertyFiles) {
|
||||
Properties pluginProps = new Properties();
|
||||
|
|
|
@ -23,4 +23,8 @@ import com.romraider.logger.external.core.ExternalDataItem;
|
|||
|
||||
public interface TEDataItem extends ExternalDataItem {
|
||||
void setRaw(int... raw);
|
||||
|
||||
String getFormat();
|
||||
|
||||
String getExpression();
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue