add LM2 MTS support

git-svn-id: https://svn2.assembla.com/svn/romraider/trunk@246 38686702-15cf-42e4-a595-3071df8bf5ea
This commit is contained in:
kascade 2009-10-18 05:19:13 +00:00
parent 35b0afbdc1
commit f4e1c0231a
41 changed files with 248 additions and 460 deletions

View File

@ -1,4 +1,4 @@
log4j.rootLogger=debug, stdout, file
log4j.rootLogger=trace, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

View File

@ -1 +1 @@
datasource.class=com.romraider.logger.innovate.lc1.plugin.Lc1DataSource
datasource.class=com.romraider.logger.innovate.lc1.serial.plugin.Lc1DataSource

View File

@ -1 +1 @@
datasource.class=com.romraider.logger.innovate.lm1.plugin.Lm1DataSource
datasource.class=com.romraider.logger.innovate.lm1.serial.plugin.Lm1DataSource

View File

@ -1 +0,0 @@
#datasource.class=com.romraider.logger.innovate.lm2.plugin.Lm2DataSource

1
plugins/lm2_mts.plugin Normal file
View File

@ -0,0 +1 @@
datasource.class=com.romraider.logger.innovate.lm2.mts.plugin.Lm2MtsDataSource

View File

@ -0,0 +1 @@
datasource.class=com.romraider.logger.innovate.lm2.serial.plugin.Lm2SerialDataSource

View File

@ -37,8 +37,8 @@ public final class SerialConnectionManager implements ConnectionManager {
checkNotNullOrEmpty(portName, "portName");
checkNotNull(connectionProperties, "connectionProperties");
// Use TestSerialConnection for testing!!
connection = new SerialConnectionImpl(portName, connectionProperties);
// connection = new TestSerialConnection(portName, connectionProperties);
// connection = new SerialConnectionImpl(portName, connectionProperties);
connection = new TestSerialConnection(portName, connectionProperties);
}
// Send request and wait for response with known length

View File

@ -28,10 +28,11 @@ import static com.romraider.util.ParamChecker.checkNotNullOrEmpty;
import org.apache.log4j.Logger;
import static org.apache.log4j.Logger.getLogger;
import java.nio.charset.Charset;
import static java.nio.charset.Charset.forName;
public final class AemConnectionImpl implements AemConnection {
private static final Logger LOGGER = getLogger(AemConnectionImpl.class);
private static final Charset CHARSET_UTF8 = Charset.forName("UTF-8");
private static final Charset CHARSET_UTF8 = forName("UTF-8");
private final SerialConnection connection;
public AemConnectionImpl(String portName, ConnectionProperties connectionProperties) {

View File

@ -20,14 +20,14 @@
package com.romraider.logger.aem.io;
import com.romraider.logger.aem.plugin.AemSettings;
import com.romraider.logger.aem.plugin.DataListener;
import com.romraider.logger.aem.plugin.RawDataListener;
public final class AemRunnerImpl implements AemRunner {
private final AemConnection connection;
private final DataListener listener;
private final RawDataListener listener;
private boolean stop;
public AemRunnerImpl(AemSettings aemSettings, DataListener listener) {
public AemRunnerImpl(AemSettings aemSettings, RawDataListener listener) {
connection = new AemConnectionImpl(aemSettings.getPort(), new AemConnectionProperties());
this.listener = listener;
}

View File

@ -21,7 +21,7 @@ package com.romraider.logger.aem.plugin;
import com.romraider.logger.ecu.external.ExternalDataItem;
public final class AemDataItem implements ExternalDataItem, DataListener {
public final class AemDataItem implements ExternalDataItem, RawDataListener {
private final AemConvertor convertor = new AemConvertorImpl();
private byte[] bytes;

View File

@ -19,6 +19,7 @@
package com.romraider.logger.aem.plugin;
import com.romraider.logger.aem.io.AemRunner;
import com.romraider.logger.aem.io.AemRunnerImpl;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataItem;
@ -31,7 +32,7 @@ import java.util.List;
public final class AemDataSource implements ExternalDataSource {
private AemSettings settings = new AemSettingsImpl();
private AemDataItem dataItem = new AemDataItem();
private AemRunnerImpl runner;
private AemRunner runner;
public String getName() {
return "AEM UEGO";

View File

@ -19,6 +19,6 @@
package com.romraider.logger.aem.plugin;
public interface DataListener {
public interface RawDataListener {
void setBytes(byte[] bytes);
}

View File

@ -24,7 +24,6 @@ import javax.swing.Action;
import java.util.List;
public interface ExternalDataSource {
String getName();
String getVersion();

View File

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.io;
package com.romraider.logger.innovate.generic.serial.io;
public interface InnovateConnection {
byte[] read();

View File

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.io;
package com.romraider.logger.innovate.generic.serial.io;
import com.romraider.io.connection.ConnectionProperties;
import com.romraider.io.serial.connection.SerialConnection;

View File

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.io;
package com.romraider.logger.innovate.generic.serial.io;
import com.romraider.io.connection.ConnectionProperties;

View File

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.io;
package com.romraider.logger.innovate.generic.serial.io;
public interface InnovateRunner extends Runnable {
void stop();

View File

@ -17,17 +17,17 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.io;
package com.romraider.logger.innovate.generic.serial.io;
import com.romraider.logger.innovate.generic.plugin.DataListener;
import com.romraider.logger.innovate.generic.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.serial.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.serial.plugin.RawDataListener;
public final class InnovateRunnerImpl implements InnovateRunner {
private final InnovateConnection connection;
private final DataListener listener;
private final RawDataListener listener;
private boolean stop;
public InnovateRunnerImpl(String device, InnovateSettings innovateSettings, DataListener listener, int responseLength) {
public InnovateRunnerImpl(String device, InnovateSettings innovateSettings, RawDataListener listener, int responseLength) {
connection = new InnovateConnectionImpl(device, innovateSettings.getPort(), new InnovateConnectionProperties(), responseLength);
this.listener = listener;
}

View File

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.plugin;
package com.romraider.logger.innovate.generic.serial.plugin;
public interface DataConvertor {
double convert(byte[] bytes);

View File

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.plugin;
package com.romraider.logger.innovate.generic.serial.plugin;
public interface InnovateSettings {
void setPort(String port);

View File

@ -17,7 +17,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.plugin;
package com.romraider.logger.innovate.generic.serial.plugin;
public final class InnovateSettingsImpl implements InnovateSettings {
private String port;

View File

@ -17,8 +17,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.generic.plugin;
package com.romraider.logger.innovate.generic.serial.plugin;
public interface DataListener {
public interface RawDataListener {
void setBytes(byte[] bytes);
}

View File

@ -17,9 +17,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lc1.plugin;
package com.romraider.logger.innovate.lc1.serial.plugin;
import com.romraider.logger.innovate.generic.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.serial.plugin.DataConvertor;
import static com.romraider.util.ByteUtil.matchOnes;
import static com.romraider.util.ByteUtil.matchZeroes;
import static com.romraider.util.HexUtil.asHex;

View File

@ -17,13 +17,13 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lc1.plugin;
package com.romraider.logger.innovate.lc1.serial.plugin;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.innovate.generic.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.plugin.DataListener;
import com.romraider.logger.innovate.generic.serial.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.serial.plugin.RawDataListener;
public final class Lc1DataItem implements ExternalDataItem, DataListener {
public final class Lc1DataItem implements ExternalDataItem, RawDataListener {
private final DataConvertor convertor = new Lc1DataConvertor();
private byte[] bytes;

View File

@ -17,14 +17,15 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lc1.plugin;
package com.romraider.logger.innovate.lc1.serial.plugin;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.ecu.external.ExternalDataSource;
import com.romraider.logger.innovate.generic.io.InnovateRunnerImpl;
import com.romraider.logger.innovate.generic.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.plugin.InnovateSettingsImpl;
import com.romraider.logger.innovate.generic.serial.io.InnovateRunner;
import com.romraider.logger.innovate.generic.serial.io.InnovateRunnerImpl;
import com.romraider.logger.innovate.generic.serial.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.serial.plugin.InnovateSettingsImpl;
import static com.romraider.util.ThreadUtil.runAsDaemon;
import javax.swing.Action;
import static java.util.Arrays.asList;
@ -33,7 +34,7 @@ import java.util.List;
public final class Lc1DataSource implements ExternalDataSource {
private InnovateSettings settings = new InnovateSettingsImpl();
private Lc1DataItem dataItem = new Lc1DataItem();
private InnovateRunnerImpl runner;
private InnovateRunner runner;
public String getName() {
return "Innovate LC-1";

View File

@ -17,9 +17,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm1.plugin;
package com.romraider.logger.innovate.lm1.serial.plugin;
import com.romraider.logger.innovate.generic.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.serial.plugin.DataConvertor;
import static com.romraider.util.ByteUtil.matchOnes;
import static com.romraider.util.ByteUtil.matchZeroes;
import static com.romraider.util.HexUtil.asBytes;

View File

@ -17,13 +17,13 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm1.plugin;
package com.romraider.logger.innovate.lm1.serial.plugin;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.innovate.generic.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.plugin.DataListener;
import com.romraider.logger.innovate.generic.serial.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.serial.plugin.RawDataListener;
public final class Lm1DataItem implements ExternalDataItem, DataListener {
public final class Lm1DataItem implements ExternalDataItem, RawDataListener {
private final DataConvertor convertor = new Lm1DataConvertor();
private byte[] bytes;

View File

@ -17,14 +17,15 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm1.plugin;
package com.romraider.logger.innovate.lm1.serial.plugin;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.ecu.external.ExternalDataSource;
import com.romraider.logger.innovate.generic.io.InnovateRunnerImpl;
import com.romraider.logger.innovate.generic.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.plugin.InnovateSettingsImpl;
import com.romraider.logger.innovate.generic.serial.io.InnovateRunner;
import com.romraider.logger.innovate.generic.serial.io.InnovateRunnerImpl;
import com.romraider.logger.innovate.generic.serial.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.serial.plugin.InnovateSettingsImpl;
import static com.romraider.util.ThreadUtil.runAsDaemon;
import javax.swing.Action;
import static java.util.Arrays.asList;
@ -33,7 +34,7 @@ import java.util.List;
public final class Lm1DataSource implements ExternalDataSource {
private InnovateSettings settings = new InnovateSettingsImpl();
private Lm1DataItem dataItem = new Lm1DataItem();
private InnovateRunnerImpl runner;
private InnovateRunner runner;
public String getName() {
return "Innovate LM-1";

View File

@ -17,18 +17,31 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.mts;
package com.romraider.logger.innovate.lm2.mts.plugin;
import static com4j.COM4J.createInstance;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.innovate.generic.mts.plugin.DataListener;
public final class MTSFactory {
private MTSFactory() {
public final class Lm2MtsDataItem implements ExternalDataItem, DataListener {
private double data;
public String getName() {
return "Innovate LM-2 [mts]";
}
/**
* MTS SDK v1.0
*/
public static MTS createMTS() {
return createInstance(MTS.class, "{74087A4E-4AF1-4F8C-BACB-3959C212AAD2}");
public String getDescription() {
return "Innovate LM-2 AFR data";
}
}
public String getUnits() {
return "AFR";
}
public double getData() {
return data;
}
public void setData(double data) {
this.data = data;
}
}

View File

@ -0,0 +1,82 @@
/*
* RomRaider Open-Source Tuning, Logging and Reflashing
* Copyright (C) 2006-2009 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm2.mts.plugin;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.ecu.external.ExternalDataSource;
import com.romraider.logger.innovate.generic.mts.io.MTSRunner;
import com.romraider.logger.innovate.generic.mts.io.MTSRunnerImpl;
import static com.romraider.util.ThreadUtil.runAsDaemon;
import org.apache.log4j.Logger;
import static org.apache.log4j.Logger.getLogger;
import javax.swing.Action;
import static java.lang.Integer.parseInt;
import static java.util.Arrays.asList;
import java.util.List;
public final class Lm2MtsDataSource implements ExternalDataSource {
private static final Logger LOGGER = getLogger(Lm2MtsDataSource.class);
private final Lm2MtsDataItem dataItem = new Lm2MtsDataItem();
private MTSRunner runner;
private int mtsPort = 0;
public String getName() {
return "Innovate LM-2 [mts]";
}
public String getVersion() {
return "0.01";
}
public List<? extends ExternalDataItem> getDataItems() {
return asList(dataItem);
}
public Action getMenuAction(EcuLogger logger) {
return new Lm2MtsPluginMenuAction(logger, this);
}
public void setPort(String port) {
mtsPort = mtsPort(port);
}
public String getPort() {
return "" + mtsPort;
}
public void connect() {
runner = new MTSRunnerImpl(mtsPort, dataItem);
runAsDaemon(runner);
}
public void disconnect() {
if (runner != null) runner.stop();
}
private int mtsPort(String port) {
try {
return parseInt(port);
} catch (Exception e) {
LOGGER.warn("Bad MTS port: " + port);
return 0;
}
}
}

View File

@ -0,0 +1,61 @@
/*
* RomRaider Open-Source Tuning, Logging and Reflashing
* Copyright (C) 2006-2009 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm2.mts.plugin;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataSource;
import com.romraider.logger.ecu.ui.swing.menubar.action.AbstractAction;
import com.romraider.logger.innovate.generic.mts.io.MTS;
import static com.romraider.logger.innovate.generic.mts.io.MTSFactory.createMTS;
import static javax.swing.JOptionPane.QUESTION_MESSAGE;
import static javax.swing.JOptionPane.showInputDialog;
import java.awt.event.ActionEvent;
public final class Lm2MtsPluginMenuAction extends AbstractAction {
private final ExternalDataSource dataSource;
public Lm2MtsPluginMenuAction(EcuLogger logger, ExternalDataSource dataSource) {
super(logger);
this.dataSource = dataSource;
}
public void actionPerformed(ActionEvent actionEvent) {
String port = (String) showInputDialog(logger, "Select MTS port:", dataSource.getName() + " Plugin Settings", QUESTION_MESSAGE, null,
getPorts(), dataSource.getPort());
dataSource.setPort(port);
}
private String[] getPorts() {
MTS mts = createMTS();
try {
int portCount = mts.portCount();
String[] result = new String[portCount];
for (int i = 0; i < portCount; i++) {
result[i] = "" + i;
mts.currentPort(i);
String name = mts.portName();
System.out.println("MTS: found port [" + i + "]: " + name);
}
return result;
} finally {
mts.dispose();
}
}
}

View File

@ -17,9 +17,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm2.plugin;
package com.romraider.logger.innovate.lm2.serial.plugin;
import com.romraider.logger.innovate.generic.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.serial.plugin.DataConvertor;
import static com.romraider.util.ByteUtil.matchOnes;
import static com.romraider.util.ByteUtil.matchZeroes;
import static com.romraider.util.HexUtil.asBytes;
@ -27,8 +27,8 @@ import static com.romraider.util.HexUtil.asHex;
import org.apache.log4j.Logger;
//TODO: Remove dupe with Lc1DataConvertor
public final class Lm2DataConvertor implements DataConvertor {
private static final Logger LOGGER = Logger.getLogger(Lm2DataConvertor.class);
public final class Lm2SerialDataConvertor implements DataConvertor {
private static final Logger LOGGER = Logger.getLogger(Lm2SerialDataConvertor.class);
private static final double MAX_AFR = 20.33;
public double convert(byte[] bytes) {
@ -87,7 +87,7 @@ public final class Lm2DataConvertor implements DataConvertor {
public static void main(String[] args) {
byte[] bytes = asBytes("0xB2808113036F1E650124007000470039003A");
DataConvertor convertor = new Lm2DataConvertor();
DataConvertor convertor = new Lm2SerialDataConvertor();
double result = convertor.convert(bytes);
System.out.println("result = " + result);
}

View File

@ -17,18 +17,18 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm2.plugin;
package com.romraider.logger.innovate.lm2.serial.plugin;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.innovate.generic.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.plugin.DataListener;
import com.romraider.logger.innovate.generic.serial.plugin.DataConvertor;
import com.romraider.logger.innovate.generic.serial.plugin.RawDataListener;
public final class Lm2DataItem implements ExternalDataItem, DataListener {
private final DataConvertor convertor = new Lm2DataConvertor();
public final class Lm2SerialDataItem implements ExternalDataItem, RawDataListener {
private final DataConvertor convertor = new Lm2SerialDataConvertor();
private byte[] bytes;
public String getName() {
return "Innovate LM-2";
return "Innovate LM-2 [serial]";
}
public String getDescription() {

View File

@ -17,26 +17,27 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.lm2.plugin;
package com.romraider.logger.innovate.lm2.serial.plugin;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.ecu.external.ExternalDataSource;
import com.romraider.logger.innovate.generic.io.InnovateRunnerImpl;
import com.romraider.logger.innovate.generic.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.plugin.InnovateSettingsImpl;
import com.romraider.logger.innovate.generic.serial.io.InnovateRunner;
import com.romraider.logger.innovate.generic.serial.io.InnovateRunnerImpl;
import com.romraider.logger.innovate.generic.serial.plugin.InnovateSettings;
import com.romraider.logger.innovate.generic.serial.plugin.InnovateSettingsImpl;
import static com.romraider.util.ThreadUtil.runAsDaemon;
import javax.swing.Action;
import static java.util.Arrays.asList;
import java.util.List;
public final class Lm2DataSource implements ExternalDataSource {
public final class Lm2SerialDataSource implements ExternalDataSource {
private InnovateSettings settings = new InnovateSettingsImpl();
private Lm2DataItem dataItem = new Lm2DataItem();
private InnovateRunnerImpl runner;
private Lm2SerialDataItem dataItem = new Lm2SerialDataItem();
private InnovateRunner runner;
public String getName() {
return "Innovate LM-2";
return "Innovate LM-2 [serial]";
}
public String getVersion() {

View File

@ -1,165 +0,0 @@
/*
* RomRaider Open-Source Tuning, Logging and Reflashing
* Copyright (C) 2006-2009 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.mts;
import com4j.Com4jObject;
import com4j.IID;
import com4j.VTID;
@IID("{FCE3DA3F-110C-4781-B751-ABDC039BCF18}")
public interface MTS extends Com4jObject {
/**
* Get number of MTS ports available
*/
@VTID(7)
int portCount();
/**
* CurrentMTSPort
*/
@VTID(8)
int currentPort();
/**
* CurrentMTSPort
*/
@VTID(9)
void currentPort(int pVal);
/**
* MTS Port Name
*/
@VTID(10)
String portName();
/**
* Attempt an MTS Connection
*/
@VTID(11)
void connect();
/**
* Disconnect MTS Port
*/
@VTID(12)
void disconnect();
/**
* Number of MTS Inputs
*/
@VTID(13)
int inputCount();
/**
* Current MTS Input
*/
@VTID(14)
int currentInput();
/**
* Current MTS Input
*/
@VTID(15)
void currentInput(int pVal);
/**
* Name of Current Input
*/
@VTID(16)
String inputName();
/**
* Units used by Input
*/
@VTID(17)
String inputUnit();
/**
* Name of Device Providing Input
*/
@VTID(18)
String inputDeviceName();
/**
* Type of Device Providing Input
*/
@VTID(19)
int inputDeviceType();
/**
* Type of Input
*/
@VTID(20)
int inputType();
/**
* Channel on Device providing Input
*/
@VTID(21)
int inputDeviceChannel();
/**
* AFR Multiplier for Input (if used)
*/
@VTID(22)
float inputAFRMultiplier();
/**
* Minimum Value (units) for Input
*/
@VTID(23)
float inputMinValue();
/**
* Max value (in units) for Input
*/
@VTID(24)
float inputMaxValue();
/**
* Voltage equivelent to Input Min Value
*/
@VTID(25)
float inputMinVolt();
/**
* Voltage equivelent to Input Max Value
*/
@VTID(26)
float inputMaxVolt();
/**
* Raw Sample (0-1023) for Input
*/
@VTID(27)
int inputSample();
/**
* Status and Function of Input Sample
*/
@VTID(28)
int inputFunction();
/**
* Call to start NewData events from MTS Connection
*/
@VTID(29)
void startData();
}

View File

@ -1,44 +0,0 @@
/*
* RomRaider Open-Source Tuning, Logging and Reflashing
* Copyright (C) 2006-2009 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.mts;
import com4j.DISPID;
import com4j.IID;
@IID("{4A8AA6AC-E180-433E-8871-A2F8D2413F03}")
public interface MTSEvents {
/**
* Triggered to indicate MTS connection result
*/
@DISPID(1)
void connectionEvent(int result);
/**
* Triggered when an error occurs on the MTS data stream
*/
@DISPID(2)
void connectionError();
/**
* Triggered when new sample data is available
*/
@DISPID(3)
void newData();
}

View File

@ -1,165 +0,0 @@
/*
* RomRaider Open-Source Tuning, Logging and Reflashing
* Copyright (C) 2006-2009 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.romraider.logger.innovate.mts;
import com4j.EventCookie;
public class Test implements MTSEvents {
private MTS mts;
private EventCookie connectionEventCookie;
public Test() {
mts = null;
connectionEventCookie = null;
}
private void printAvailableInputs() {
System.out.println("Available inputs:");
for (int idx = 0; idx < mts.inputCount(); ++idx) {
mts.currentInput(idx);
String inputName = mts.inputName();
int inputType = mts.inputType();
System.out.printf("%s : %d\n", inputName, inputType);
}
}
private void waitFor(int milliseconds) throws InterruptedException {
synchronized (this) {
this.wait(milliseconds);
}
}
private void getSamples(int numberOfSamples) throws InterruptedException {
// note:
// it sounds like the SDK allows up to 12.21 samples per second, which
// should be more than sufficient for RomRaider
System.out.println("Getting data samples:");
// give the device time to start the acquisition of data
waitFor(1000);
for (int sampleCount = 0; sampleCount < numberOfSamples; ++sampleCount) {
int data = mts.inputSample();
int function = mts.inputFunction();
// note if the sample data is lambda, you might need to multiply by 14.7 or inputAFRMultiplier()
System.out.printf("\tSample %d: data = %d, function = %d\n", sampleCount + 1, data, function);
// wait 200 milliseconds before grabbing the next sample
waitFor(200);
}
}
public void Run() throws InterruptedException {
// create an instance of the MTSSDK COM component
mts = MTSFactory.createMTS();
// Note: you MUST call portCount() at least one before attempting to set
// the current inputPort or the inputPort(int) will not do anything!
int portCount = mts.portCount();
System.out.printf("Found %d ports.\n", portCount);
// set the current port before attempting to connect
mts.currentPort(0);
String portName = mts.portName();
System.out.printf("Set current port to 0; port name = %s\n", portName);
// register for MTS component events
connectionEventCookie = mts.advise(MTSEvents.class, this);
// attempt to connect to the specified device
System.out.println("connect() called.");
mts.connect();
// show available inputs
printAvailableInputs();
// attempt to get data
mts.currentInput(0);
mts.startData();
// notes:
// the inputFunction() method retrieves the meaning of the sample - this can be lambda/AFR,
// error code, etc. The inputSample() method retrieves the current data.
// for instance, running this without having the O2 sensor plugged in will cause inputFunction() to
// return 6 and inputSample() to return 9.
// see the LM-2 manual for more information on error codes.
//
// list of function codes:
//
// MTS_FUNC_LAMBDA 0
// MTS_FUNC_O2 1
// MTS_FUNC_INCALIB 2
// MTS_FUNC_RQCALIB 3
// MTS_FUNC_WARMUP 4
// MTS_FUNC_HTRCAL 5
// MTS_FUNC_ERROR 6
// MTS_FUNC_FLASHLEV 7
// MTS_FUNC_SERMODE 8
// MTS_FUNC_NOTLAMBDA 9
// MTS_FUNC_INVALID 10
// retrieve 10 samples
getSamples(10);
// dispose of the event handler instance
connectionEventCookie.close();
// close the connection to the device
System.out.println("disconnect() called.");
mts.disconnect();
// release COM resources
mts.dispose();
}
// generated in response to a call to connect()
// see the SDK doc for explanation of error codes
public void connectionEvent(int result) {
System.out.printf("connectionEvent raised. result = %d\n", result);
}
public void connectionError() {
// occurs when there is an error in the data stream (i.e. I assume connection lost, protocol error)
}
public void newData() {
//int data = mts.inputSample();
//float multiplier = mts.inputAFRMultiplier();
//int sampleMeaning = mts.inputFunction();
//System.out.printf("newData raised. data = %f\n", data * multiplier);
}
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
Test test = new Test();
test.Run();
}
}

View File

@ -22,6 +22,7 @@ package com.romraider.logger.plx.plugin;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.ecu.external.ExternalDataSource;
import com.romraider.logger.plx.io.PlxRunner;
import com.romraider.logger.plx.io.PlxRunnerImpl;
import com.romraider.logger.plx.io.PlxSensorType;
import static com.romraider.logger.plx.io.PlxSensorType.WIDEBAND_AFR;
@ -36,7 +37,7 @@ import java.util.Map;
public final class PlxDataSource implements ExternalDataSource {
private final Map<PlxSensorType, PlxDataItem> dataItems = new HashMap<PlxSensorType, PlxDataItem>();
private final PlxSettings settings = new PlxSettingsImpl();
private PlxRunnerImpl runner;
private PlxRunner runner;
{
dataItems.put(WIDEBAND_AFR, new PlxDataItemImpl("Wideband AFR", "AFR", WIDEBAND_AFR, WIDEBAND_AFR_GASOLINE147));

View File

@ -22,6 +22,7 @@ package com.romraider.logger.zt2.plugin;
import com.romraider.logger.ecu.EcuLogger;
import com.romraider.logger.ecu.external.ExternalDataItem;
import com.romraider.logger.ecu.external.ExternalDataSource;
import com.romraider.logger.zt2.io.ZT2Runner;
import com.romraider.logger.zt2.io.ZT2RunnerImpl;
import com.romraider.logger.zt2.io.ZT2SensorType;
import static com.romraider.logger.zt2.io.ZT2SensorType.AFR;
@ -38,9 +39,9 @@ import java.util.List;
import java.util.Map;
public final class ZT2DataSource implements ExternalDataSource {
private ZT2Settings settings = new ZT2SettingsImpl();
private final Map<ZT2SensorType, ZT2DataItem> dataItems = new HashMap<ZT2SensorType, ZT2DataItem>();
private ZT2Settings settings = new ZT2SettingsImpl();
private ZT2Runner runner;
{
dataItems.put(AFR, new ZT2DataItemImpl("Wideband AFR", "AFR", AFR));
@ -50,8 +51,6 @@ public final class ZT2DataSource implements ExternalDataSource {
dataItems.put(EGT, new ZT2DataItemImpl("EGT", "Celsius", EGT));
}
private ZT2RunnerImpl runner;
public String getName() {
return "Zeitronix ZT-2";
}

View File

@ -50,7 +50,7 @@
<file src="plugins/aem.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lc1.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lm1.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lm2.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lm2_serial.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/plx.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/zt2.plugin" targetdir="$INSTALL_PATH/plugins"/>

View File

@ -51,7 +51,8 @@
<file src="plugins/aem.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lc1.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lm1.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lm2.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lm2_serial.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/lm2_mts.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/plx.plugin" targetdir="$INSTALL_PATH/plugins"/>
<file src="plugins/zt2.plugin" targetdir="$INSTALL_PATH/plugins"/>