diff --git a/src/main/java/com/rusefi/can/SensorValue.java b/src/main/java/com/rusefi/can/SensorValue.java index cbf3ca1..7eef2c5 100644 --- a/src/main/java/com/rusefi/can/SensorValue.java +++ b/src/main/java/com/rusefi/can/SensorValue.java @@ -16,4 +16,12 @@ public class SensorValue { public double getValue() { return value; } + + @Override + public String toString() { + return "{" + + type + + ", value=" + value + + '}'; + } } diff --git a/src/main/java/com/rusefi/can/Util.java b/src/main/java/com/rusefi/can/Util.java index 88e616a..31f5760 100644 --- a/src/main/java/com/rusefi/can/Util.java +++ b/src/main/java/com/rusefi/can/Util.java @@ -1,8 +1,11 @@ package com.rusefi.can; +import com.rusefi.can.decoders.PacketDecoder; +import com.rusefi.can.decoders.bmw.BmwRegistry; import com.rusefi.can.reader.CANoeReader; import com.rusefi.can.writer.SteveWriter; +import java.io.FileWriter; import java.io.IOException; import java.util.List; @@ -12,8 +15,26 @@ public class Util { List packetList = reader.readFile("Log2.log"); - SteveWriter writer = new SteveWriter("loggerProgram0.log"); - writer.write(packetList); +// SteveWriter writer = new SteveWriter("loggerProgram0.log"); +// writer.write(packetList); + + FileWriter fw = new FileWriter("sensors.txt"); + + for (CANPacket packet : packetList) { + PacketDecoder decoder = BmwRegistry.INSTANCE.decoderMap.get(packet.getId()); + if (decoder == null) + continue; + PacketPayload payload = decoder.decode(packet); + if (payload == null) + continue; + + + for (SensorValue value : payload.getValues()) { + fw.write(packet.getTimeStamp() + "," + value + "\n"); + } + } + fw.close(); + } } diff --git a/src/main/java/com/rusefi/can/decoders/bmw/Bmw0AA.java b/src/main/java/com/rusefi/can/decoders/bmw/Bmw0AA.java index 231e99f..242024e 100644 --- a/src/main/java/com/rusefi/can/decoders/bmw/Bmw0AA.java +++ b/src/main/java/com/rusefi/can/decoders/bmw/Bmw0AA.java @@ -14,7 +14,10 @@ public class Bmw0AA extends AbstractPacketDecoder { @Override public PacketPayload decode(CANPacket packet) { SensorValue pedal = new SensorValue(SensorType.PPS, packet.getUnsigned(3) * 0.39063); - SensorValue rpm = new SensorValue(SensorType.RPM, packet.getTwoBytes(4) * 0.25); + int rawRpm = packet.getTwoBytes(4); + if (rawRpm == 0xFFFF) + return null; + SensorValue rpm = new SensorValue(SensorType.RPM, rawRpm * 0.25); return new PacketPayload(packet.getTimeStamp(), pedal, rpm); } diff --git a/src/main/java/com/rusefi/can/decoders/bmw/BmwRegistry.java b/src/main/java/com/rusefi/can/decoders/bmw/BmwRegistry.java index 72b5715..6b92d76 100644 --- a/src/main/java/com/rusefi/can/decoders/bmw/BmwRegistry.java +++ b/src/main/java/com/rusefi/can/decoders/bmw/BmwRegistry.java @@ -6,7 +6,7 @@ import java.util.HashMap; import java.util.Map; public class BmwRegistry { - BmwRegistry INSTANCE = new BmwRegistry(); + public static final BmwRegistry INSTANCE = new BmwRegistry(); public Map decoderMap = new HashMap<>();