mirror of https://github.com/rusefi/RomRaider.git
Added methods to EcuQueryData and refactor classes to use them
This commit is contained in:
parent
eb123a36da
commit
c1890eeeaa
|
@ -39,7 +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.EcuInitCallback;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQuery;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQueryDataType;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQueryData;
|
||||
import com.romraider.logger.ecu.definition.EcuData;
|
||||
import com.romraider.logger.ecu.definition.Module;
|
||||
|
||||
|
@ -104,7 +104,7 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
|
|||
Collection<EcuQuery> filteredQueries = filterDuplicates(queries);
|
||||
int numAddresses = 0;
|
||||
for (EcuQuery ecuQuery : filteredQueries) {
|
||||
numAddresses += EcuQueryDataType.getDataLength(ecuQuery);
|
||||
numAddresses += EcuQueryData.getDataLength(ecuQuery);
|
||||
}
|
||||
return new byte[requestSize + RESPONSE_NON_DATA_BYTES + numAddresses];
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
|
|||
|
||||
int srcPos = 0;
|
||||
for (EcuQuery filteredQuery : filteredQueries) {
|
||||
byte[] bytes = new byte[EcuQueryDataType.getDataLength(filteredQuery)];
|
||||
byte[] bytes = new byte[EcuQueryData.getDataLength(filteredQuery)];
|
||||
if (((EcuData) filteredQuery.getLoggerData()).getGroupSize() > 0) {
|
||||
srcPos = filteredQuery.getBytes()[0];
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
|
|||
|
||||
int srcPos = 0;
|
||||
for (EcuQuery filteredQuery : filteredQueries) {
|
||||
final byte[] bytes = new byte[EcuQueryDataType.getDataLength(filteredQuery)];
|
||||
final byte[] bytes = new byte[EcuQueryData.getDataLength(filteredQuery)];
|
||||
srcPos = Integer.parseInt(filteredQuery.getHex(), 16) - lowestAddress;
|
||||
arraycopy(responseData, srcPos, bytes, 0, bytes.length);
|
||||
addressResults.put(filteredQuery.getHex(), bytes);
|
||||
|
@ -266,7 +266,7 @@ public final class DS2LoggerProtocol implements LoggerProtocolDS2 {
|
|||
private int getDataLength(Collection<EcuQuery> queries) {
|
||||
int dataLength = 0;
|
||||
for (EcuQuery query : queries) {
|
||||
dataLength += EcuQueryDataType.getDataLength(query);
|
||||
dataLength += EcuQueryData.getDataLength(query);
|
||||
}
|
||||
return dataLength;
|
||||
}
|
||||
|
|
|
@ -38,7 +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.EcuInitCallback;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQuery;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQueryDataType;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQueryData;
|
||||
import com.romraider.logger.ecu.definition.Module;
|
||||
|
||||
public final class OBDLoggerProtocol implements LoggerProtocolOBD {
|
||||
|
@ -83,7 +83,7 @@ public final class OBDLoggerProtocol implements LoggerProtocolOBD {
|
|||
int numAddresses = 0;
|
||||
for (EcuQuery ecuQuery : filteredQueries) {
|
||||
numAddresses += ecuQuery.getBytes().length;
|
||||
numAddresses += EcuQueryDataType.getDataLength(ecuQuery);
|
||||
numAddresses += EcuQueryData.getDataLength(ecuQuery);
|
||||
}
|
||||
return new byte[(numAddresses + RESPONSE_NON_DATA_BYTES)];
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ public final class OBDLoggerProtocol implements LoggerProtocolOBD {
|
|||
int i = 0;
|
||||
for (EcuQuery filteredQuery : filteredQueries) {
|
||||
final int addrLength = filteredQuery.getBytes().length;
|
||||
final int dataLength = EcuQueryDataType.getDataLength(filteredQuery);
|
||||
final int dataLength = EcuQueryData.getDataLength(filteredQuery);
|
||||
final byte[] addr = new byte[addrLength];
|
||||
final byte[] data = new byte[dataLength];
|
||||
arraycopy(responseData, i, addr, 0, addrLength);
|
||||
|
|
|
@ -27,6 +27,7 @@ import java.util.List;
|
|||
|
||||
import com.romraider.Settings;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQuery;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQueryData;
|
||||
import com.romraider.logger.ecu.comms.query.EcuQueryImpl;
|
||||
import com.romraider.logger.ecu.definition.EcuAddress;
|
||||
import com.romraider.logger.ecu.definition.EcuAddressImpl;
|
||||
|
@ -65,13 +66,7 @@ public class SSMTableAxisQueryParameterSet {
|
|||
final String tableAddrStr = storageAddress.replaceAll("0x", "");
|
||||
final int tableAddrBase = Integer.parseInt(tableAddrStr, 16);
|
||||
|
||||
int dataSize = 1;
|
||||
if (storageType.toLowerCase().contains("int16")) {
|
||||
dataSize = 2;
|
||||
}
|
||||
if (storageType.toLowerCase().contains("float")) {
|
||||
dataSize = 4;
|
||||
}
|
||||
int dataSize = EcuQueryData.getDataLength(storageType);
|
||||
|
||||
final int count = Integer.parseInt(size, 10);
|
||||
for (int i = 0; i < count; i++) {
|
||||
|
|
|
@ -19,14 +19,26 @@
|
|||
|
||||
package com.romraider.logger.ecu.comms.query;
|
||||
|
||||
public final class EcuQueryDataType {
|
||||
import com.romraider.logger.ecu.definition.LoggerData;
|
||||
|
||||
private EcuQueryDataType() {}
|
||||
/**
|
||||
* @return the length of the data based on the data storage type
|
||||
* value set in the selected converter.
|
||||
*/
|
||||
public final class EcuQueryData {
|
||||
|
||||
public final static int getDataLength(EcuQuery ecuQuery) {
|
||||
int dataLength = 1;
|
||||
return getDataLength(ecuQuery.getLoggerData());
|
||||
}
|
||||
|
||||
public final static int getDataLength(LoggerData loggerData) {
|
||||
final String dataType =
|
||||
ecuQuery.getLoggerData().getSelectedConvertor().getDataType().toLowerCase();
|
||||
loggerData.getSelectedConvertor().getDataType().toLowerCase();
|
||||
return getDataLength(dataType);
|
||||
}
|
||||
|
||||
public final static int getDataLength(String dataType) {
|
||||
int dataLength = 1;
|
||||
if (dataType.contains("int16")) {
|
||||
dataLength = 2;
|
||||
}
|
||||
|
@ -36,4 +48,6 @@ public final class EcuQueryDataType {
|
|||
}
|
||||
return dataLength;
|
||||
}
|
||||
|
||||
private EcuQueryData() {}
|
||||
}
|
|
@ -25,8 +25,6 @@ import java.util.List;
|
|||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.romraider.logger.ecu.definition.EcuData;
|
||||
|
||||
/**
|
||||
* Inspect the address of each query to determine if a single query
|
||||
* with a start address and byte length can be substituted as opposed
|
||||
|
@ -60,16 +58,7 @@ public final class EcuQueryRangeTest {
|
|||
int lowestAddress = Integer.MAX_VALUE;
|
||||
int highestAddress = 0;
|
||||
for (EcuQuery query : queryList) {
|
||||
final EcuData parameter = (EcuData) query.getLoggerData();
|
||||
final String storageType = parameter.getSelectedConvertor().getDataType();
|
||||
int dataSize = 1;
|
||||
if (storageType.toLowerCase().contains("int16")) {
|
||||
dataSize = 2;
|
||||
}
|
||||
if (storageType.toLowerCase().contains("float") ||
|
||||
storageType.toLowerCase().contains("int32")) {
|
||||
dataSize = 4;
|
||||
}
|
||||
int dataSize = EcuQueryData.getDataLength(query);
|
||||
final int address = Integer.parseInt(query.getHex(), 16);
|
||||
if (address < lowestAddress) {
|
||||
lowestAddress = address;
|
||||
|
|
Loading…
Reference in New Issue