From 7888dfae3392320c78ea1bc6a08da57bf3eb6afc Mon Sep 17 00:00:00 2001 From: kascade Date: Wed, 18 Apr 2007 03:03:04 +0000 Subject: [PATCH] simplified ecu response handling - still buggy git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@620 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d --- src/enginuity/logger/ecu/EcuLogger.java | 43 +++++++++++-------- .../comms/controller/LoggerController.java | 5 +-- .../controller/LoggerControllerImpl.java | 21 ++++----- .../ecu/comms/manager/QueryManager.java | 5 +-- .../ecu/comms/manager/QueryManagerImpl.java | 36 +++++++++++----- .../logger/ecu/comms/query/EcuQuery.java | 2 +- .../logger/ecu/comms/query/EcuQueryImpl.java | 20 ++++++--- .../logger/ecu/comms/query/ExternalQuery.java | 5 +-- .../ecu/comms/query/ExternalQueryImpl.java | 16 ++++--- .../ecu/comms/query/LoggerCallback.java | 28 ------------ .../logger/ecu/comms/query/Query.java | 7 +++ .../logger/ecu/comms/query/Response.java | 16 +++++++ .../logger/ecu/comms/query/ResponseImpl.java | 32 ++++++++++++++ .../ecu/ui/DataRegistrationBrokerImpl.java | 10 +---- .../ecu/ui/handler/DataUpdateHandler.java | 3 +- .../handler/DataUpdateHandlerManagerImpl.java | 5 ++- .../DataUpdateHandlerThreadWrapper.java | 41 ++++-------------- .../handler/dash/DashboardUpdateHandler.java | 11 +++-- .../handler/file/FileUpdateHandlerImpl.java | 9 ++-- .../ui/handler/graph/GraphUpdateHandler.java | 20 +++++---- .../livedata/LiveDataUpdateHandler.java | 16 ++++--- .../ui/handler/table/TableUpdateHandler.java | 15 ++++--- 22 files changed, 203 insertions(+), 163 deletions(-) delete mode 100644 src/enginuity/logger/ecu/comms/query/LoggerCallback.java create mode 100644 src/enginuity/logger/ecu/comms/query/Response.java create mode 100644 src/enginuity/logger/ecu/comms/query/ResponseImpl.java diff --git a/src/enginuity/logger/ecu/EcuLogger.java b/src/enginuity/logger/ecu/EcuLogger.java index be249e01..66b67364 100644 --- a/src/enginuity/logger/ecu/EcuLogger.java +++ b/src/enginuity/logger/ecu/EcuLogger.java @@ -27,7 +27,6 @@ import enginuity.logger.ecu.comms.controller.LoggerController; import enginuity.logger.ecu.comms.controller.LoggerControllerImpl; import enginuity.logger.ecu.comms.query.EcuInit; import enginuity.logger.ecu.comms.query.EcuInitCallback; -import enginuity.logger.ecu.comms.query.LoggerCallback; import enginuity.logger.ecu.definition.EcuDataLoader; import enginuity.logger.ecu.definition.EcuDataLoaderImpl; import enginuity.logger.ecu.definition.EcuParameter; @@ -142,6 +141,7 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC private JLabel statsLabel; private JTabbedPane tabbedPane; private SerialPortComboBox portsComboBox; + private DataUpdateHandlerManager dataUpdateHandlerManager; private DataUpdateHandlerManager dataHandlerManager; private DataRegistrationBroker dataTabBroker; private ParameterListTableModel dataTabParamListTableModel; @@ -199,7 +199,8 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC } } }; - controller = new LoggerControllerImpl(settings, ecuInitCallback, this); + dataUpdateHandlerManager = new DataUpdateHandlerManagerImpl(); + controller = new LoggerControllerImpl(settings, ecuInitCallback, this, dataUpdateHandlerManager); messageLabel = new JLabel(ENGINUITY_ECU_LOGGER_TITLE); ecuIdLabel = new JLabel(buildEcuIdLabelText()); statsLabel = buildStatsLabel(); @@ -227,6 +228,9 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC graphUpdateHandler = new GraphUpdateHandler(graphPanel); dashboardPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 3)); dashboardUpdateHandler = new DashboardUpdateHandler(dashboardPanel); + dataUpdateHandlerManager.addHandler(dataHandlerManager); + dataUpdateHandlerManager.addHandler(graphHandlerManager); + dataUpdateHandlerManager.addHandler(dashboardHandlerManager); } private void initControllerListeners() { @@ -302,20 +306,23 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC private void initFileLoggingController(final EcuSwitch fileLoggingControllerSwitch) { // add logger and setup callback - controller.setFileLoggerSwitch(fileLoggingControllerSwitch, new LoggerCallback() { - public void callback(double value) { - // update handlers - if (settings.isFileLoggingControllerSwitchActive()) { - boolean logToFile = (int) value == 1; - logToFileButton.setSelected(logToFile); - if (logToFile) { - fileUpdateHandler.start(); - } else { - fileUpdateHandler.stop(); - } - } - } - }); + controller.setFileLoggerSwitch(fileLoggingControllerSwitch); + + //FIXME: Add auto button toggle on defog switch back in somehow! Use a FileLoggingUpdateHandler or something +// controller.setFileLoggerSwitch(fileLoggingControllerSwitch, new LoggerCallback() { +// public void callback(double value) { +// // update handlers +// if (settings.isFileLoggingControllerSwitchActive()) { +// boolean logToFile = (int) value == 1; +// logToFileButton.setSelected(logToFile); +// if (logToFile) { +// fileUpdateHandler.start(); +// } else { +// fileUpdateHandler.stop(); +// } +// } +// } +// }); } private void applyUserProfile(UserProfile profile) { @@ -778,9 +785,7 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC } private void cleanUpUpdateHandlers() { - dataHandlerManager.cleanUp(); - graphHandlerManager.cleanUp(); - dashboardHandlerManager.cleanUp(); + dataUpdateHandlerManager.cleanUp(); } public Settings getSettings() { diff --git a/src/enginuity/logger/ecu/comms/controller/LoggerController.java b/src/enginuity/logger/ecu/comms/controller/LoggerController.java index 60a78df6..5295527c 100644 --- a/src/enginuity/logger/ecu/comms/controller/LoggerController.java +++ b/src/enginuity/logger/ecu/comms/controller/LoggerController.java @@ -21,16 +21,15 @@ package enginuity.logger.ecu.comms.controller; -import enginuity.logger.ecu.comms.query.LoggerCallback; import enginuity.logger.ecu.definition.EcuSwitch; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.StatusChangeListener; public interface LoggerController { - void setFileLoggerSwitch(EcuSwitch ecuSwitch, LoggerCallback callback); + void setFileLoggerSwitch(EcuSwitch ecuSwitch); - void addLogger(String callerId, LoggerData loggerData, LoggerCallback callback); + void addLogger(String callerId, LoggerData loggerData); void removeLogger(String callerId, LoggerData loggerData); diff --git a/src/enginuity/logger/ecu/comms/controller/LoggerControllerImpl.java b/src/enginuity/logger/ecu/comms/controller/LoggerControllerImpl.java index da7ec6c0..aa756718 100644 --- a/src/enginuity/logger/ecu/comms/controller/LoggerControllerImpl.java +++ b/src/enginuity/logger/ecu/comms/controller/LoggerControllerImpl.java @@ -25,19 +25,20 @@ import enginuity.Settings; import enginuity.logger.ecu.comms.manager.QueryManager; import enginuity.logger.ecu.comms.manager.QueryManagerImpl; import enginuity.logger.ecu.comms.query.EcuInitCallback; -import enginuity.logger.ecu.comms.query.LoggerCallback; import enginuity.logger.ecu.definition.EcuSwitch; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.MessageListener; import enginuity.logger.ecu.ui.StatusChangeListener; +import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManager; import static enginuity.util.ParamChecker.checkNotNull; public final class LoggerControllerImpl implements LoggerController { private final QueryManager queryManager; - public LoggerControllerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener) { - checkNotNull(settings, ecuInitCallback, messageListener); - queryManager = new QueryManagerImpl(settings, ecuInitCallback, messageListener); + public LoggerControllerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener, + DataUpdateHandlerManager dataUpdateHandlerManager) { + checkNotNull(settings, ecuInitCallback, messageListener, dataUpdateHandlerManager); + queryManager = new QueryManagerImpl(settings, ecuInitCallback, messageListener, dataUpdateHandlerManager); } public synchronized void addListener(StatusChangeListener listener) { @@ -45,16 +46,16 @@ public final class LoggerControllerImpl implements LoggerController { queryManager.addListener(listener); } - public void setFileLoggerSwitch(EcuSwitch ecuSwitch, LoggerCallback callback) { - checkNotNull(ecuSwitch, callback); + public void setFileLoggerSwitch(EcuSwitch ecuSwitch) { + checkNotNull(ecuSwitch); System.out.println("Setting file logger switch: " + ecuSwitch.getName()); - queryManager.setFileLoggerQuery(ecuSwitch, callback); + queryManager.setFileLoggerQuery(ecuSwitch); } - public void addLogger(String callerId, LoggerData loggerData, LoggerCallback callback) { - checkNotNull(loggerData, callback); + public void addLogger(String callerId, LoggerData loggerData) { + checkNotNull(loggerData); System.out.println("Adding logger: " + loggerData.getName()); - queryManager.addQuery(callerId, loggerData, callback); + queryManager.addQuery(callerId, loggerData); } public void removeLogger(String callerId, LoggerData loggerData) { diff --git a/src/enginuity/logger/ecu/comms/manager/QueryManager.java b/src/enginuity/logger/ecu/comms/manager/QueryManager.java index 1eaf1df0..13deceed 100644 --- a/src/enginuity/logger/ecu/comms/manager/QueryManager.java +++ b/src/enginuity/logger/ecu/comms/manager/QueryManager.java @@ -21,16 +21,15 @@ package enginuity.logger.ecu.comms.manager; -import enginuity.logger.ecu.comms.query.LoggerCallback; import enginuity.logger.ecu.definition.EcuSwitch; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.StatusChangeListener; public interface QueryManager extends Runnable { - void setFileLoggerQuery(EcuSwitch ecuSwitch, LoggerCallback callback); + void setFileLoggerQuery(EcuSwitch ecuSwitch); - void addQuery(String callerId, LoggerData loggerData, LoggerCallback callback); + void addQuery(String callerId, LoggerData loggerData); void removeQuery(String callerId, LoggerData loggerData); diff --git a/src/enginuity/logger/ecu/comms/manager/QueryManagerImpl.java b/src/enginuity/logger/ecu/comms/manager/QueryManagerImpl.java index b043c0fc..73ef8284 100644 --- a/src/enginuity/logger/ecu/comms/manager/QueryManagerImpl.java +++ b/src/enginuity/logger/ecu/comms/manager/QueryManagerImpl.java @@ -31,8 +31,9 @@ import enginuity.logger.ecu.comms.query.EcuQuery; import enginuity.logger.ecu.comms.query.EcuQueryImpl; import enginuity.logger.ecu.comms.query.ExternalQuery; import enginuity.logger.ecu.comms.query.ExternalQueryImpl; -import enginuity.logger.ecu.comms.query.LoggerCallback; import enginuity.logger.ecu.comms.query.Query; +import enginuity.logger.ecu.comms.query.Response; +import enginuity.logger.ecu.comms.query.ResponseImpl; import enginuity.logger.ecu.definition.EcuData; import static enginuity.logger.ecu.definition.EcuDataType.EXTERNAL; import enginuity.logger.ecu.definition.EcuSwitch; @@ -40,6 +41,7 @@ import enginuity.logger.ecu.definition.ExternalData; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.MessageListener; import enginuity.logger.ecu.ui.StatusChangeListener; +import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManager; import static enginuity.util.HexUtil.asHex; import static enginuity.util.ParamChecker.checkNotNull; import static enginuity.util.ThreadUtil.sleep; @@ -63,16 +65,19 @@ public final class QueryManagerImpl implements QueryManager { private final Settings settings; private final EcuInitCallback ecuInitCallback; private final MessageListener messageListener; + private final DataUpdateHandlerManager dataUpdateHandlerManager; private EcuQuery fileLoggerQuery; private Thread queryManagerThread; private boolean started; private boolean stop; - public QueryManagerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener) { - checkNotNull(settings, ecuInitCallback, messageListener); + public QueryManagerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener, + DataUpdateHandlerManager dataUpdateHandlerManager) { + checkNotNull(settings, ecuInitCallback, messageListener, dataUpdateHandlerManager); this.settings = settings; this.ecuInitCallback = ecuInitCallback; this.messageListener = messageListener; + this.dataUpdateHandlerManager = dataUpdateHandlerManager; } public synchronized void addListener(StatusChangeListener listener) { @@ -80,19 +85,19 @@ public final class QueryManagerImpl implements QueryManager { listeners.add(listener); } - public void setFileLoggerQuery(EcuSwitch ecuSwitch, LoggerCallback callback) { - checkNotNull(ecuSwitch, callback); - fileLoggerQuery = new EcuQueryImpl(ecuSwitch, callback); + public void setFileLoggerQuery(EcuSwitch ecuSwitch) { + checkNotNull(ecuSwitch); + fileLoggerQuery = new EcuQueryImpl(ecuSwitch); } - public synchronized void addQuery(String callerId, LoggerData loggerData, LoggerCallback callback) { - checkNotNull(callerId, loggerData, callback); + public synchronized void addQuery(String callerId, LoggerData loggerData) { + checkNotNull(callerId, loggerData); //FIXME: This is a hack!! String queryId = buildQueryId(callerId, loggerData); if (loggerData.getDataType() == EXTERNAL) { - addList.put(queryId, new ExternalQueryImpl((ExternalData) loggerData, callback)); + addList.put(queryId, new ExternalQueryImpl((ExternalData) loggerData)); } else { - addList.put(queryId, new EcuQueryImpl((EcuData) loggerData, callback)); + addList.put(queryId, new EcuQueryImpl((EcuData) loggerData)); } } @@ -176,8 +181,9 @@ public final class QueryManagerImpl implements QueryManager { List externalQueries = filterExternalQueries(queryMap.values()); for (ExternalQuery externalQuery : externalQueries) { //FIXME: This is a hack!! - externalQuery.setResponse(externalQuery.getExternalData().getSelectedConvertor().convert(null)); + externalQuery.setResponse(externalQuery.getLoggerData().getSelectedConvertor().convert(null)); } + dataUpdateHandlerManager.handleDataUpdate(buildResponse(queryMap.values())); count++; messageListener.reportMessage("Querying ECU..."); messageListener.reportStats(buildStatsMessage(start, count)); @@ -190,6 +196,14 @@ public final class QueryManagerImpl implements QueryManager { } } + private Response buildResponse(Collection queries) { + Response response = new ResponseImpl(); + for (Query query : queries) { + response.setDataValue(query.getLoggerData(), query.getResponse()); + } + return response; + } + //FIXME: This is a hack!! private List filterEcuQueries(Collection queries) { List filtered = new ArrayList(); diff --git a/src/enginuity/logger/ecu/comms/query/EcuQuery.java b/src/enginuity/logger/ecu/comms/query/EcuQuery.java index 82633e35..3242b5a2 100644 --- a/src/enginuity/logger/ecu/comms/query/EcuQuery.java +++ b/src/enginuity/logger/ecu/comms/query/EcuQuery.java @@ -29,5 +29,5 @@ public interface EcuQuery extends Query { String getHex(); - void setResponse(byte[] response); + void setResponse(byte[] bytes); } diff --git a/src/enginuity/logger/ecu/comms/query/EcuQueryImpl.java b/src/enginuity/logger/ecu/comms/query/EcuQueryImpl.java index b5688c1c..4b4cb0d6 100644 --- a/src/enginuity/logger/ecu/comms/query/EcuQueryImpl.java +++ b/src/enginuity/logger/ecu/comms/query/EcuQueryImpl.java @@ -22,23 +22,27 @@ package enginuity.logger.ecu.comms.query; import enginuity.logger.ecu.definition.EcuData; +import enginuity.logger.ecu.definition.LoggerData; import static enginuity.util.HexUtil.asHex; import static enginuity.util.ParamChecker.checkNotNull; public final class EcuQueryImpl implements EcuQuery { private final EcuData ecuData; - private final LoggerCallback callback; private final byte[] bytes; private final String hex; + private double response; - public EcuQueryImpl(EcuData ecuData, LoggerCallback callback) { - checkNotNull(ecuData, callback); + public EcuQueryImpl(EcuData ecuData) { + checkNotNull(ecuData); this.ecuData = ecuData; - this.callback = callback; bytes = ecuData.getAddress().getBytes(); hex = asHex(bytes); } + public LoggerData getLoggerData() { + return ecuData; + } + public String[] getAddresses() { return ecuData.getAddress().getAddresses(); } @@ -51,8 +55,12 @@ public final class EcuQueryImpl implements EcuQuery { return hex; } - public void setResponse(byte[] response) { - callback.callback(ecuData.getSelectedConvertor().convert(response)); + public double getResponse() { + return response; + } + + public void setResponse(byte[] bytes) { + this.response = ecuData.getSelectedConvertor().convert(bytes); } public boolean equals(Object object) { diff --git a/src/enginuity/logger/ecu/comms/query/ExternalQuery.java b/src/enginuity/logger/ecu/comms/query/ExternalQuery.java index 5fd18bcc..5d1572b0 100644 --- a/src/enginuity/logger/ecu/comms/query/ExternalQuery.java +++ b/src/enginuity/logger/ecu/comms/query/ExternalQuery.java @@ -1,10 +1,7 @@ package enginuity.logger.ecu.comms.query; -import enginuity.logger.ecu.definition.ExternalData; - public interface ExternalQuery extends Query { - ExternalData getExternalData(); - void setResponse(double response); + } diff --git a/src/enginuity/logger/ecu/comms/query/ExternalQueryImpl.java b/src/enginuity/logger/ecu/comms/query/ExternalQueryImpl.java index 020adf4d..cf13bf88 100644 --- a/src/enginuity/logger/ecu/comms/query/ExternalQueryImpl.java +++ b/src/enginuity/logger/ecu/comms/query/ExternalQueryImpl.java @@ -1,23 +1,27 @@ package enginuity.logger.ecu.comms.query; import enginuity.logger.ecu.definition.ExternalData; +import enginuity.logger.ecu.definition.LoggerData; import static enginuity.util.ParamChecker.checkNotNull; public final class ExternalQueryImpl implements ExternalQuery { private final ExternalData externalData; - private final LoggerCallback callback; + private double response; - public ExternalQueryImpl(ExternalData externalData, LoggerCallback callback) { - checkNotNull(externalData, callback); + public ExternalQueryImpl(ExternalData externalData) { + checkNotNull(externalData); this.externalData = externalData; - this.callback = callback; } - public ExternalData getExternalData() { + public LoggerData getLoggerData() { return externalData; } public void setResponse(double response) { - callback.callback(response); + this.response = response; + } + + public double getResponse() { + return response; } } diff --git a/src/enginuity/logger/ecu/comms/query/LoggerCallback.java b/src/enginuity/logger/ecu/comms/query/LoggerCallback.java deleted file mode 100644 index 4515bdf3..00000000 --- a/src/enginuity/logger/ecu/comms/query/LoggerCallback.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * - * Enginuity Open-Source Tuning, Logging and Reflashing - * Copyright (C) 2006 Enginuity.org - * - * 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 enginuity.logger.ecu.comms.query; - -public interface LoggerCallback { - - void callback(double value); - -} diff --git a/src/enginuity/logger/ecu/comms/query/Query.java b/src/enginuity/logger/ecu/comms/query/Query.java index 33dfbd80..ab40b7f9 100644 --- a/src/enginuity/logger/ecu/comms/query/Query.java +++ b/src/enginuity/logger/ecu/comms/query/Query.java @@ -1,4 +1,11 @@ package enginuity.logger.ecu.comms.query; +import enginuity.logger.ecu.definition.LoggerData; + public interface Query { + + LoggerData getLoggerData(); + + double getResponse(); + } diff --git a/src/enginuity/logger/ecu/comms/query/Response.java b/src/enginuity/logger/ecu/comms/query/Response.java new file mode 100644 index 00000000..ca265f50 --- /dev/null +++ b/src/enginuity/logger/ecu/comms/query/Response.java @@ -0,0 +1,16 @@ +package enginuity.logger.ecu.comms.query; + +import enginuity.logger.ecu.definition.LoggerData; + +import java.util.Set; + +public interface Response { + + void setDataValue(LoggerData data, double value); + + Set getData(); + + double getDataValue(LoggerData data); + + long getTimestamp(); +} diff --git a/src/enginuity/logger/ecu/comms/query/ResponseImpl.java b/src/enginuity/logger/ecu/comms/query/ResponseImpl.java new file mode 100644 index 00000000..9a09ce84 --- /dev/null +++ b/src/enginuity/logger/ecu/comms/query/ResponseImpl.java @@ -0,0 +1,32 @@ +package enginuity.logger.ecu.comms.query; + +import enginuity.logger.ecu.definition.LoggerData; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +public class ResponseImpl implements Response { + private final Map dataValues = new LinkedHashMap(); + private final long timestamp; + + public ResponseImpl() { + timestamp = System.currentTimeMillis(); + } + + public void setDataValue(LoggerData data, double value) { + dataValues.put(data, value); + } + + public Set getData() { + return dataValues.keySet(); + } + + public double getDataValue(LoggerData data) { + return dataValues.get(data); + } + + public long getTimestamp() { + return timestamp; + } +} diff --git a/src/enginuity/logger/ecu/ui/DataRegistrationBrokerImpl.java b/src/enginuity/logger/ecu/ui/DataRegistrationBrokerImpl.java index 1e903140..d6273171 100644 --- a/src/enginuity/logger/ecu/ui/DataRegistrationBrokerImpl.java +++ b/src/enginuity/logger/ecu/ui/DataRegistrationBrokerImpl.java @@ -22,7 +22,6 @@ package enginuity.logger.ecu.ui; import enginuity.logger.ecu.comms.controller.LoggerController; -import enginuity.logger.ecu.comms.query.LoggerCallback; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManager; import static enginuity.util.ParamChecker.checkNotNull; @@ -49,13 +48,8 @@ public final class DataRegistrationBrokerImpl implements DataRegistrationBroker // register param with handlers handlerManager.registerData(loggerData); - // add logger and setup callback - controller.addLogger(id, loggerData, new LoggerCallback() { - public void callback(double value) { - // update handlers - handlerManager.handleDataUpdate(loggerData, value, System.currentTimeMillis()); - } - }); + // add logger + controller.addLogger(id, loggerData); // add to registered parameters list registeredLoggerData.add(loggerData); diff --git a/src/enginuity/logger/ecu/ui/handler/DataUpdateHandler.java b/src/enginuity/logger/ecu/ui/handler/DataUpdateHandler.java index 6e7de90c..d561e437 100644 --- a/src/enginuity/logger/ecu/ui/handler/DataUpdateHandler.java +++ b/src/enginuity/logger/ecu/ui/handler/DataUpdateHandler.java @@ -21,13 +21,14 @@ package enginuity.logger.ecu.ui.handler; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.LoggerData; public interface DataUpdateHandler { void registerData(LoggerData loggerData); - void handleDataUpdate(LoggerData loggerData, double value, long timestamp); + void handleDataUpdate(Response response); void deregisterData(LoggerData loggerData); diff --git a/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerManagerImpl.java b/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerManagerImpl.java index 5081529f..4a74f527 100644 --- a/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerManagerImpl.java +++ b/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerManagerImpl.java @@ -21,6 +21,7 @@ package enginuity.logger.ecu.ui.handler; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.LoggerData; import java.util.ArrayList; @@ -39,9 +40,9 @@ public final class DataUpdateHandlerManagerImpl implements DataUpdateHandlerMana } } - public synchronized void handleDataUpdate(LoggerData loggerData, double value, long timestamp) { + public synchronized void handleDataUpdate(Response response) { for (DataUpdateHandler handler : handlers) { - handler.handleDataUpdate(loggerData, value, timestamp); + handler.handleDataUpdate(response); } } diff --git a/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerThreadWrapper.java b/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerThreadWrapper.java index 2be9155d..5576fc3c 100644 --- a/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerThreadWrapper.java +++ b/src/enginuity/logger/ecu/ui/handler/DataUpdateHandlerThreadWrapper.java @@ -21,6 +21,7 @@ package enginuity.logger.ecu.ui.handler; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.LoggerData; import static enginuity.util.ThreadUtil.sleep; @@ -29,8 +30,8 @@ import static java.util.Collections.synchronizedList; import java.util.List; public final class DataUpdateHandlerThreadWrapper implements DataUpdateHandler, Runnable { - private final List updateList = synchronizedList(new ArrayList()); - private final List workingList = synchronizedList(new ArrayList()); + private final List updateList = synchronizedList(new ArrayList()); + private final List workingList = synchronizedList(new ArrayList()); private final DataUpdateHandler wrappee; private boolean stop = false; @@ -42,8 +43,8 @@ public final class DataUpdateHandlerThreadWrapper implements DataUpdateHandler, wrappee.registerData(loggerData); } - public synchronized void handleDataUpdate(LoggerData loggerData, double value, long timestamp) { - updateList.add(new DataUpdate(loggerData, value, timestamp)); + public synchronized void handleDataUpdate(Response response) { + updateList.add(response); } public void deregisterData(LoggerData loggerData) { @@ -62,8 +63,8 @@ public final class DataUpdateHandlerThreadWrapper implements DataUpdateHandler, public void run() { while (!stop) { updateWorkingList(); - for (final DataUpdate dataUpdate : workingList) { - wrappee.handleDataUpdate(dataUpdate.getLoggerData(), dataUpdate.getValue(), dataUpdate.getTimestamp()); + for (final Response response : workingList) { + wrappee.handleDataUpdate(response); } sleep(3); } @@ -71,34 +72,10 @@ public final class DataUpdateHandlerThreadWrapper implements DataUpdateHandler, private synchronized void updateWorkingList() { workingList.clear(); - for (DataUpdate dataUpdate : updateList) { - workingList.add(dataUpdate); + for (Response response : updateList) { + workingList.add(response); } updateList.clear(); } - private static final class DataUpdate { - private final LoggerData loggerData; - private final double value; - private final long timestamp; - - public DataUpdate(LoggerData loggerData, double value, long timestamp) { - this.loggerData = loggerData; - this.value = value; - this.timestamp = timestamp; - } - - public LoggerData getLoggerData() { - return loggerData; - } - - public long getTimestamp() { - return timestamp; - } - - public double getValue() { - return value; - } - - } } diff --git a/src/enginuity/logger/ecu/ui/handler/dash/DashboardUpdateHandler.java b/src/enginuity/logger/ecu/ui/handler/dash/DashboardUpdateHandler.java index 8563d1cb..6234f3e7 100644 --- a/src/enginuity/logger/ecu/ui/handler/dash/DashboardUpdateHandler.java +++ b/src/enginuity/logger/ecu/ui/handler/dash/DashboardUpdateHandler.java @@ -21,6 +21,7 @@ package enginuity.logger.ecu.ui.handler.dash; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.ConvertorUpdateListener; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.handler.DataUpdateHandler; @@ -46,10 +47,12 @@ public final class DashboardUpdateHandler implements DataUpdateHandler, Converto repaintDashboardPanel(); } - public synchronized void handleDataUpdate(LoggerData loggerData, double value, long timestamp) { - Gauge gauge = gauges.get(loggerData); - if (gauge != null) { - gauge.updateValue(value); + public synchronized void handleDataUpdate(Response response) { + for (LoggerData loggerData : response.getData()) { + Gauge gauge = gauges.get(loggerData); + if (gauge != null) { + gauge.updateValue(response.getDataValue(loggerData)); + } } } diff --git a/src/enginuity/logger/ecu/ui/handler/file/FileUpdateHandlerImpl.java b/src/enginuity/logger/ecu/ui/handler/file/FileUpdateHandlerImpl.java index 07f88477..33d0f5b6 100644 --- a/src/enginuity/logger/ecu/ui/handler/file/FileUpdateHandlerImpl.java +++ b/src/enginuity/logger/ecu/ui/handler/file/FileUpdateHandlerImpl.java @@ -22,6 +22,7 @@ package enginuity.logger.ecu.ui.handler.file; import enginuity.Settings; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.ConvertorUpdateListener; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.MessageListener; @@ -61,11 +62,13 @@ public final class FileUpdateHandlerImpl implements FileUpdateHandler, Convertor } } - public synchronized void handleDataUpdate(LoggerData loggerData, double value, long timestamp) { + public synchronized void handleDataUpdate(Response response) { if (fileLogger.isStarted()) { - currentLine.updateParamValue(loggerData, loggerData.getSelectedConvertor().format(value)); + for (LoggerData loggerData : response.getData()) { + currentLine.updateParamValue(loggerData, loggerData.getSelectedConvertor().format(response.getDataValue(loggerData))); + } if (currentLine.isFull()) { - fileLogger.writeLine(currentLine.values(), timestamp); + fileLogger.writeLine(currentLine.values(), response.getTimestamp()); resetLine(); } } diff --git a/src/enginuity/logger/ecu/ui/handler/graph/GraphUpdateHandler.java b/src/enginuity/logger/ecu/ui/handler/graph/GraphUpdateHandler.java index 4338d6c1..36027551 100644 --- a/src/enginuity/logger/ecu/ui/handler/graph/GraphUpdateHandler.java +++ b/src/enginuity/logger/ecu/ui/handler/graph/GraphUpdateHandler.java @@ -1,5 +1,6 @@ package enginuity.logger.ecu.ui.handler.graph; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.ConvertorUpdateListener; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.handler.DataUpdateHandler; @@ -116,15 +117,16 @@ public final class GraphUpdateHandler implements DataUpdateHandler, ConvertorUpd makeCompactGrid(graphPanel, 1, 1, 2, 2, 2, 2); } - public synchronized void handleDataUpdate(LoggerData loggerData, final double value, final long timestamp) { - // update chart - final XYSeries series = seriesMap.get(loggerData); - if (series != null && !paused) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - series.add((timestamp - startTime) / 1000.0, value); - } - }); + public synchronized void handleDataUpdate(final Response response) { + for (final LoggerData loggerData : response.getData()) { + final XYSeries series = seriesMap.get(loggerData); + if (series != null && !paused) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + series.add((response.getTimestamp() - startTime) / 1000.0, response.getDataValue(loggerData)); + } + }); + } } } diff --git a/src/enginuity/logger/ecu/ui/handler/livedata/LiveDataUpdateHandler.java b/src/enginuity/logger/ecu/ui/handler/livedata/LiveDataUpdateHandler.java index 0ca2da22..30da5a97 100644 --- a/src/enginuity/logger/ecu/ui/handler/livedata/LiveDataUpdateHandler.java +++ b/src/enginuity/logger/ecu/ui/handler/livedata/LiveDataUpdateHandler.java @@ -21,6 +21,7 @@ package enginuity.logger.ecu.ui.handler.livedata; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.ConvertorUpdateListener; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.handler.DataUpdateHandler; @@ -39,13 +40,14 @@ public final class LiveDataUpdateHandler implements DataUpdateHandler, Convertor dataTableModel.addParam(loggerData); } - public synchronized void handleDataUpdate(final LoggerData loggerData, final double value, long timestamp) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - // update data table - dataTableModel.updateParam(loggerData, value); - } - }); + public synchronized void handleDataUpdate(final Response response) { + for (final LoggerData loggerData : response.getData()) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + dataTableModel.updateParam(loggerData, response.getDataValue(loggerData)); + } + }); + } } public synchronized void deregisterData(LoggerData loggerData) { diff --git a/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java b/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java index b348d670..583309a8 100644 --- a/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java +++ b/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java @@ -21,6 +21,7 @@ package enginuity.logger.ecu.ui.handler.table; +import enginuity.logger.ecu.comms.query.Response; import enginuity.logger.ecu.definition.LoggerData; import enginuity.logger.ecu.ui.handler.DataUpdateHandler; import enginuity.maps.Table; @@ -41,12 +42,14 @@ public final class TableUpdateHandler implements DataUpdateHandler { public void registerData(LoggerData loggerData) { } - public void handleDataUpdate(LoggerData loggerData, double value, long timestamp) { - List tables = tableMap.get(loggerData.getId()); - if (tables != null && !tables.isEmpty()) { - String formattedValue = loggerData.getSelectedConvertor().format(value); - for (Table table : tables) { - table.setLiveValue(formattedValue); + public void handleDataUpdate(Response response) { + for (LoggerData loggerData : response.getData()) { + List
tables = tableMap.get(loggerData.getId()); + if (tables != null && !tables.isEmpty()) { + String formattedValue = loggerData.getSelectedConvertor().format(response.getDataValue(loggerData)); + for (Table table : tables) { + table.setLiveValue(formattedValue); + } } } }