diff --git a/reader/src/main/java/com/rusefi/can/reader/dbc/DbcField.java b/reader/src/main/java/com/rusefi/can/reader/dbc/DbcField.java index 98ec1ee..694d12d 100644 --- a/reader/src/main/java/com/rusefi/can/reader/dbc/DbcField.java +++ b/reader/src/main/java/com/rusefi/can/reader/dbc/DbcField.java @@ -131,6 +131,8 @@ public class DbcField { public boolean coversByte(int byteIndex) { int startBit = byteIndex * 8; + if (isBigEndian && /* byte endianess less important for one byte fields */ length > 8) + startBit += 8; if (startOffset > startBit) return false; return startOffset + length >= startBit + 8; diff --git a/reader/src/test/java/com/rusefi/can/reader/dbc/DbcFieldTest.java b/reader/src/test/java/com/rusefi/can/reader/dbc/DbcFieldTest.java index df5bcf6..47c6fea 100644 --- a/reader/src/test/java/com/rusefi/can/reader/dbc/DbcFieldTest.java +++ b/reader/src/test/java/com/rusefi/can/reader/dbc/DbcFieldTest.java @@ -9,9 +9,9 @@ public class DbcFieldTest { @Test public void testBigEndian() { DbcField field = new DbcField("", 8, 16, 1, 0, null, true); - assertFalse(field.coversByte(0)); + assertTrue(field.coversByte(0)); assertTrue(field.coversByte(1)); - assertTrue(field.coversByte(2)); + assertFalse(field.coversByte(2)); assertFalse(field.coversByte(3)); }