Refactor classes to use new data length calculator class

This commit is contained in:
Dale Schultz 2015-01-27 19:16:31 -05:00
parent 55dbbebb10
commit 5a49b91b97
2 changed files with 9 additions and 46 deletions

View File

@ -39,6 +39,7 @@ import com.romraider.logger.ecu.comms.manager.PollingState;
import com.romraider.logger.ecu.comms.query.EcuInit; import com.romraider.logger.ecu.comms.query.EcuInit;
import com.romraider.logger.ecu.comms.query.EcuInitCallback; import com.romraider.logger.ecu.comms.query.EcuInitCallback;
import com.romraider.logger.ecu.comms.query.EcuQuery; import com.romraider.logger.ecu.comms.query.EcuQuery;
import com.romraider.logger.ecu.comms.query.EcuQueryDataType;
import com.romraider.logger.ecu.definition.EcuData; import com.romraider.logger.ecu.definition.EcuData;
import com.romraider.logger.ecu.definition.Module; import com.romraider.logger.ecu.definition.Module;
@ -103,7 +104,7 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
Collection<EcuQuery> filteredQueries = filterDuplicates(queries); Collection<EcuQuery> filteredQueries = filterDuplicates(queries);
int numAddresses = 0; int numAddresses = 0;
for (EcuQuery ecuQuery : filteredQueries) { for (EcuQuery ecuQuery : filteredQueries) {
numAddresses += getDataLength(ecuQuery); numAddresses += EcuQueryDataType.getDataLength(ecuQuery);
} }
return new byte[requestSize + RESPONSE_NON_DATA_BYTES + numAddresses]; return new byte[requestSize + RESPONSE_NON_DATA_BYTES + numAddresses];
} }
@ -164,7 +165,7 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
int srcPos = 0; int srcPos = 0;
for (EcuQuery filteredQuery : filteredQueries) { for (EcuQuery filteredQuery : filteredQueries) {
byte[] bytes = new byte[getDataLength(filteredQuery)]; byte[] bytes = new byte[EcuQueryDataType.getDataLength(filteredQuery)];
if (((EcuData) filteredQuery.getLoggerData()).getGroupSize() > 0) { if (((EcuData) filteredQuery.getLoggerData()).getGroupSize() > 0) {
srcPos = filteredQuery.getBytes()[0]; srcPos = filteredQuery.getBytes()[0];
} }
@ -203,7 +204,7 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
int srcPos = 0; int srcPos = 0;
for (EcuQuery filteredQuery : filteredQueries) { for (EcuQuery filteredQuery : filteredQueries) {
final byte[] bytes = new byte[getDataLength(filteredQuery)]; final byte[] bytes = new byte[EcuQueryDataType.getDataLength(filteredQuery)];
srcPos = Integer.parseInt(filteredQuery.getHex(), 16) - lowestAddress; srcPos = Integer.parseInt(filteredQuery.getHex(), 16) - lowestAddress;
arraycopy(responseData, srcPos, bytes, 0, bytes.length); arraycopy(responseData, srcPos, bytes, 0, bytes.length);
addressResults.put(filteredQuery.getHex(), bytes); addressResults.put(filteredQuery.getHex(), bytes);
@ -262,35 +263,10 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
return addresses; return addresses;
} }
private int getDataLength(EcuQuery ecuQuery) {
int dataLength = 1;
final String dataType =
ecuQuery.getLoggerData().getSelectedConvertor().getDataType().toLowerCase();
if (dataType.contains("int16")) {
dataLength = 2;
}
else if (dataType.contains("int32") ||
dataType.contains("float")) {
dataLength = 4;
}
return dataLength;
}
private int getDataLength(Collection<EcuQuery> queries) { private int getDataLength(Collection<EcuQuery> queries) {
int dataLength = 0; int dataLength = 0;
for (EcuQuery query : queries) { for (EcuQuery query : queries) {
final String dataType = dataLength += EcuQueryDataType.getDataLength(query);
query.getLoggerData().getSelectedConvertor().getDataType().toLowerCase();
if (dataType.contains("int16")) {
dataLength += 2;
}
else if (dataType.contains("int32") ||
dataType.contains("float")) {
dataLength += 4;
}
else {
dataLength += 1;
}
} }
return dataLength; return dataLength;
} }

View File

@ -1,6 +1,6 @@
/* /*
* RomRaider Open-Source Tuning, Logging and Reflashing * RomRaider Open-Source Tuning, Logging and Reflashing
* Copyright (C) 2006-2014 RomRaider.com * Copyright (C) 2006-2015 RomRaider.com
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -38,6 +38,7 @@ import com.romraider.logger.ecu.comms.manager.PollingState;
import com.romraider.logger.ecu.comms.query.EcuInit; import com.romraider.logger.ecu.comms.query.EcuInit;
import com.romraider.logger.ecu.comms.query.EcuInitCallback; import com.romraider.logger.ecu.comms.query.EcuInitCallback;
import com.romraider.logger.ecu.comms.query.EcuQuery; import com.romraider.logger.ecu.comms.query.EcuQuery;
import com.romraider.logger.ecu.comms.query.EcuQueryDataType;
import com.romraider.logger.ecu.definition.Module; import com.romraider.logger.ecu.definition.Module;
public final class OBDLoggerProtocol implements LoggerProtocolOBD { public final class OBDLoggerProtocol implements LoggerProtocolOBD {
@ -82,7 +83,7 @@ public final class OBDLoggerProtocol implements LoggerProtocolOBD {
int numAddresses = 0; int numAddresses = 0;
for (EcuQuery ecuQuery : filteredQueries) { for (EcuQuery ecuQuery : filteredQueries) {
numAddresses += ecuQuery.getBytes().length; numAddresses += ecuQuery.getBytes().length;
numAddresses += getDataLength(ecuQuery); numAddresses += EcuQueryDataType.getDataLength(ecuQuery);
} }
return new byte[(numAddresses + RESPONSE_NON_DATA_BYTES)]; return new byte[(numAddresses + RESPONSE_NON_DATA_BYTES)];
} }
@ -122,7 +123,7 @@ public final class OBDLoggerProtocol implements LoggerProtocolOBD {
int i = 0; int i = 0;
for (EcuQuery filteredQuery : filteredQueries) { for (EcuQuery filteredQuery : filteredQueries) {
final int addrLength = filteredQuery.getBytes().length; final int addrLength = filteredQuery.getBytes().length;
final int dataLength = getDataLength(filteredQuery); final int dataLength = EcuQueryDataType.getDataLength(filteredQuery);
final byte[] addr = new byte[addrLength]; final byte[] addr = new byte[addrLength];
final byte[] data = new byte[dataLength]; final byte[] data = new byte[dataLength];
arraycopy(responseData, i, addr, 0, addrLength); arraycopy(responseData, i, addr, 0, addrLength);
@ -182,18 +183,4 @@ public final class OBDLoggerProtocol implements LoggerProtocolOBD {
} }
return addresses; return addresses;
} }
private int getDataLength(EcuQuery ecuQuery) {
int dataLength = 1;
final String dataType =
ecuQuery.getLoggerData().getSelectedConvertor().getDataType().toLowerCase();
if (dataType.contains("int16")) {
dataLength = 2;
}
else if (dataType.contains("int32") ||
dataType.contains("float")) {
dataLength = 4;
}
return dataLength;
}
} }