diff --git a/java_console/io/src/main/java/com/rusefi/io/can/PCanHelper.java b/java_console/io/src/main/java/com/rusefi/io/can/PCanHelper.java new file mode 100644 index 0000000000..76ca3a0b60 --- /dev/null +++ b/java_console/io/src/main/java/com/rusefi/io/can/PCanHelper.java @@ -0,0 +1,27 @@ +package com.rusefi.io.can; + +import org.jetbrains.annotations.NotNull; +import peak.can.basic.*; + +import static peak.can.basic.TPCANMessageType.PCAN_MESSAGE_STANDARD; + +public class PCanHelper { + public static final TPCANHandle CHANNEL = TPCANHandle.PCAN_USBBUS1; + + @NotNull + public static PCANBasic create() { + PCANBasic can = new PCANBasic(); + can.initializeAPI(); + return can; + } + + static TPCANStatus init(PCANBasic can) { + return can.Initialize(CHANNEL, TPCANBaudrate.PCAN_BAUD_500K, TPCANType.PCAN_TYPE_NONE, 0, (short) 0); + } + + static TPCANStatus send(PCANBasic can, int id, byte[] payLoad) { + TPCANMsg msg = new TPCANMsg(id, PCAN_MESSAGE_STANDARD.getValue(), + (byte) payLoad.length, payLoad); + return can.Write(CHANNEL, msg); + } +} diff --git a/java_console/io/src/main/java/com/rusefi/io/can/PCanIoStream.java b/java_console/io/src/main/java/com/rusefi/io/can/PCanIoStream.java index 81e0d16055..22f236d7e7 100644 --- a/java_console/io/src/main/java/com/rusefi/io/can/PCanIoStream.java +++ b/java_console/io/src/main/java/com/rusefi/io/can/PCanIoStream.java @@ -20,13 +20,11 @@ import java.util.concurrent.Executors; import static com.devexperts.logging.Logging.getLogging; import static com.rusefi.config.generated.Fields.CAN_ECU_SERIAL_TX_ID; -import static peak.can.basic.TPCANMessageType.PCAN_MESSAGE_STANDARD; public class PCanIoStream extends AbstractIoStream { private static final int INFO_SKIP_RATE = 3-00; static Logging log = getLogging(PCanIoStream.class); - public static final TPCANHandle CHANNEL = TPCANHandle.PCAN_USBBUS1; private final IncomingDataBuffer dataBuffer; private final PCANBasic can; private final StatusConsumer statusListener; @@ -54,9 +52,8 @@ public class PCanIoStream extends AbstractIoStream { } public static PCanIoStream createStream(StatusConsumer statusListener) { - PCANBasic can = new PCANBasic(); - can.initializeAPI(); - TPCANStatus status = can.Initialize(CHANNEL, TPCANBaudrate.PCAN_BAUD_500K, TPCANType.PCAN_TYPE_NONE, 0, (short) 0); + PCANBasic can = PCanHelper.create(); + TPCANStatus status = PCanHelper.init(can); if (status != TPCANStatus.PCAN_ERROR_OK) { statusListener.append("Error initializing PCAN: " + status); return null; @@ -72,9 +69,7 @@ public class PCanIoStream extends AbstractIoStream { if (log.debugEnabled()) log.debug("Sending " + HexBinary.printHexBinary(payLoad)); - TPCANMsg msg = new TPCANMsg(Fields.CAN_ECU_SERIAL_RX_ID, PCAN_MESSAGE_STANDARD.getValue(), - (byte) payLoad.length, payLoad); - TPCANStatus status = can.Write(CHANNEL, msg); + TPCANStatus status = PCanHelper.send(can, Fields.CAN_ECU_SERIAL_RX_ID, payLoad); if (status != TPCANStatus.PCAN_ERROR_OK) { statusListener.append("Unable to write the CAN message: " + status); System.exit(0); @@ -108,7 +103,7 @@ public class PCanIoStream extends AbstractIoStream { // todo: should be? TPCANMsg rx = new TPCANMsg(); // https://github.com/rusefi/rusefi/issues/4370 nasty work-around TPCANMsg rx = new TPCANMsg(Byte.MAX_VALUE); - TPCANStatus status = can.Read(CHANNEL, rx, null); + TPCANStatus status = can.Read(PCanHelper.CHANNEL, rx, null); if (status == TPCANStatus.PCAN_ERROR_OK) { totalCounter.add(); if (rx.getID() != CAN_ECU_SERIAL_TX_ID) {