From a630ae2a915e73c51069bf09991fb80e261871b5 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Mon, 21 Feb 2022 20:29:10 -0500 Subject: [PATCH] progress Bmw0A9 --- src/main/java/com/rusefi/can/SensorType.java | 1 + .../com/rusefi/can/decoders/bmw/Bmw0A9.java | 25 +++++++++++++++++++ .../com/rusefi/can/decoders/bmw/Bmw0B5.java | 2 +- .../com/rusefi/can/BmwE65DecoderTest.java | 9 +++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/rusefi/can/decoders/bmw/Bmw0A9.java diff --git a/src/main/java/com/rusefi/can/SensorType.java b/src/main/java/com/rusefi/can/SensorType.java index 6c0d740..92b8733 100644 --- a/src/main/java/com/rusefi/can/SensorType.java +++ b/src/main/java/com/rusefi/can/SensorType.java @@ -10,4 +10,5 @@ public enum SensorType { GEAR, GEARBOX_CURRENT_TORQUE, GEARBOX_TORQUE_CHANGE_REQUEST, + TORQ_AVL_MAX, } diff --git a/src/main/java/com/rusefi/can/decoders/bmw/Bmw0A9.java b/src/main/java/com/rusefi/can/decoders/bmw/Bmw0A9.java new file mode 100644 index 0000000..db743de --- /dev/null +++ b/src/main/java/com/rusefi/can/decoders/bmw/Bmw0A9.java @@ -0,0 +1,25 @@ +package com.rusefi.can.decoders.bmw; + +import com.rusefi.can.CANPacket; +import com.rusefi.can.PacketPayload; +import com.rusefi.can.SensorType; +import com.rusefi.can.SensorValue; +import com.rusefi.can.decoders.AbstractPacketDecoder; + +public class Bmw0A9 extends AbstractPacketDecoder { + public static final AbstractPacketDecoder INSTANCE = new Bmw0A9(); + + public static final int ID = 0xA9; + + public Bmw0A9() { + super(ID); + } + + @Override + public PacketPayload decode(CANPacket packet) { + int TORQ_AVL_MAX = (int) (packet.getByBitIndex(28, 12) * 0.5); + return new PacketPayload(packet.getTimeStamp(), + new SensorValue(SensorType.TORQ_AVL_MAX, TORQ_AVL_MAX) + ); + } +} diff --git a/src/main/java/com/rusefi/can/decoders/bmw/Bmw0B5.java b/src/main/java/com/rusefi/can/decoders/bmw/Bmw0B5.java index bef7223..0bec61e 100644 --- a/src/main/java/com/rusefi/can/decoders/bmw/Bmw0B5.java +++ b/src/main/java/com/rusefi/can/decoders/bmw/Bmw0B5.java @@ -7,7 +7,7 @@ import com.rusefi.can.SensorValue; import com.rusefi.can.decoders.AbstractPacketDecoder; public class Bmw0B5 extends AbstractPacketDecoder { - public static final Bmw0B5 INSTANCE = new Bmw0B5(); + public static final AbstractPacketDecoder INSTANCE = new Bmw0B5(); public Bmw0B5() { super(0xBA); diff --git a/src/test/java/com/rusefi/can/BmwE65DecoderTest.java b/src/test/java/com/rusefi/can/BmwE65DecoderTest.java index c909b9f..7685211 100644 --- a/src/test/java/com/rusefi/can/BmwE65DecoderTest.java +++ b/src/test/java/com/rusefi/can/BmwE65DecoderTest.java @@ -1,5 +1,6 @@ package com.rusefi.can; +import com.rusefi.can.decoders.bmw.Bmw0A9; import com.rusefi.can.decoders.bmw.Bmw0AA; import com.rusefi.can.decoders.bmw.Bmw0B5; import com.rusefi.can.decoders.bmw.Bmw1D0; @@ -31,6 +32,14 @@ public class BmwE65DecoderTest { assertValue(SensorType.FUEL_AMOUNT, 24443, payload.getValues()[2]); } + @Test + public void decodeTorque2() { + CANPacket packet = new CANPacket(1, + -1, new byte[]{(byte) 0x9C, 0x07, 0x42, 0x7F, 0x2E, (byte) 0xE9, 0x0F, 0x03}); + PacketPayload payload = Bmw0A9.INSTANCE.decode(packet); + assertValue(SensorType.TORQ_AVL_MAX, 371, payload.getValues()[0]); + } + @Test public void decodeTorqueRequestEGS() { CANPacket packet = new CANPacket(1,