From bc0700d0dcefc5677cb767b94cb1a1798322d996 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Mon, 20 Jun 2022 21:49:31 -0400 Subject: [PATCH] 1207.75 --- src/main/java/com/rusefi/can/reader/dbc/DbcField.java | 8 +++++++- .../java/com/rusefi/can/reader/impl/GetValueFromTrc.java | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rusefi/can/reader/dbc/DbcField.java b/src/main/java/com/rusefi/can/reader/dbc/DbcField.java index 4a44e29..139127a 100644 --- a/src/main/java/com/rusefi/can/reader/dbc/DbcField.java +++ b/src/main/java/com/rusefi/can/reader/dbc/DbcField.java @@ -1,5 +1,7 @@ package com.rusefi.can.reader.dbc; +import com.rusefi.can.CANPacket; + public class DbcField { private final String name; private final int startOffset; @@ -42,11 +44,15 @@ public class DbcField { public static int getBitIndex(byte[] data, int bitIndex, int bitWidth) { int byteIndex = bitIndex >> 3; int shift = bitIndex - byteIndex * 8; - int value = data[byteIndex]; + int value = data[byteIndex] & 0xff; if (shift + bitWidth > 8) { value = value + data[1 + byteIndex] * 256; } int mask = (1 << bitWidth) - 1; return (value >> shift) & mask; } + + public double getValue(CANPacket packet) { + return getBitIndex(packet.getData(), startOffset, length) * mult; + } } diff --git a/src/test/java/com/rusefi/can/reader/impl/GetValueFromTrc.java b/src/test/java/com/rusefi/can/reader/impl/GetValueFromTrc.java index 34966b8..d6c7d5e 100644 --- a/src/test/java/com/rusefi/can/reader/impl/GetValueFromTrc.java +++ b/src/test/java/com/rusefi/can/reader/impl/GetValueFromTrc.java @@ -13,6 +13,9 @@ import static com.rusefi.can.reader.impl.ParseDBC.VAG_MOTOR_1; import static org.junit.Assert.assertEquals; public class GetValueFromTrc { + + public static final double EPS = 0.01; + @Test public void test() throws IOException { DbcFile dbc = new DbcFile(); @@ -28,6 +31,7 @@ public class GetValueFromTrc { assertEquals(8, packet.getData().length); assertEquals(640, packet.getId()); + assertEquals(0x12DF, DbcField.getBitIndex(packet.getData(), 16, 16)); assertEquals(0xDF1D, DbcField.getBitIndex(packet.getData(), 8, 16)); assertEquals(1, DbcField.getBitIndex(packet.getData(), 0, 3)); @@ -36,6 +40,10 @@ public class GetValueFromTrc { assertEquals(13 , DbcField.getBitIndex(packet.getData(), 8, 4)); + DbcField bf = dbc.packets.get(0).find("rpm"); + + assertEquals(1207.75, bf.getValue(packet), EPS); + System.out.println(packet); } }