diff --git a/java_console/io/src/main/java/com/opensr5/io/WriteStream.java b/java_console/io/src/main/java/com/opensr5/io/WriteStream.java index 4190fa18ab..fa5e27f26f 100644 --- a/java_console/io/src/main/java/com/opensr5/io/WriteStream.java +++ b/java_console/io/src/main/java/com/opensr5/io/WriteStream.java @@ -16,6 +16,14 @@ public interface WriteStream { write(new byte[]{value}); } + default void writeShort(int v) throws IOException { + byte[] array = new byte[2]; + + array[0] = (byte) ((v >>> 8) & 0xFF); + array[1] = (byte) ((v >>> 0) & 0xFF); + write(array); + } + default void writeInt(int v) throws IOException { byte[] array = new byte[4]; diff --git a/java_console/io/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java b/java_console/io/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java index 4afdb431aa..27720ee559 100644 --- a/java_console/io/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java +++ b/java_console/io/src/main/java/com/rusefi/binaryprotocol/BinaryProtocol.java @@ -81,6 +81,25 @@ public class BinaryProtocol implements BinaryProtocolCommands { private List compositeLogs = new ArrayList<>(); + public static String findCommand(byte command) { + switch (command) { + case Fields.TS_CRC_CHECK_COMMAND: + return "CRC_CHECK"; + case Fields.TS_BURN_COMMAND: + return "BURN"; + case Fields.TS_HELLO_COMMAND: + return "HELLO"; + case Fields.TS_READ_COMMAND: + return "READ"; + case Fields.TS_GET_FIRMWARE_VERSION: + return "GET_FW_VERSION"; + case Fields.TS_CHUNK_WRITE_COMMAND: + return "WRITE_CHUNK"; + default: + return "command " + (char) + command + "/" + command; + } + } + private void createCompositesIfNeeded() { if (!compositeLogs.isEmpty()) return; diff --git a/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java b/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java index 28729b51fc..cfaa32dfb9 100644 --- a/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java +++ b/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolProxy.java @@ -1,6 +1,7 @@ package com.rusefi.io.tcp; import com.opensr5.Logger; +import com.rusefi.binaryprotocol.BinaryProtocol; import com.rusefi.io.IoStream; import java.io.ByteArrayInputStream; @@ -71,10 +72,9 @@ public class BinaryProtocolProxy { DataInputStream dis = new DataInputStream(new ByteArrayInputStream(packet.getPacket())); byte command = (byte) dis.read(); - System.out.println("Relaying client command" + (char) command + "/" + command + " length=" + length); + System.out.println("Relaying client command " + BinaryProtocol.findCommand(command)); // sending proxies packet to controller - targetOutputStream.write(firstByte); - targetOutputStream.write(secondByte); + targetOutputStream.writeShort(length); targetOutputStream.write(packet.getPacket()); targetOutputStream.writeInt(packet.getCrc()); } diff --git a/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java b/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java index 4ae5c26784..f2e6e86dcf 100644 --- a/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java +++ b/java_console/io/src/main/java/com/rusefi/io/tcp/BinaryProtocolServer.java @@ -3,10 +3,7 @@ package com.rusefi.io.tcp; import com.opensr5.ConfigurationImage; import com.opensr5.Logger; import com.rusefi.Listener; -import com.rusefi.binaryprotocol.BinaryProtocolCommands; -import com.rusefi.binaryprotocol.BinaryProtocolState; -import com.rusefi.binaryprotocol.IncomingDataBuffer; -import com.rusefi.binaryprotocol.IoHelper; +import com.rusefi.binaryprotocol.*; import com.rusefi.config.generated.Fields; import com.rusefi.io.LinkManager; import com.rusefi.io.commands.HelloCommand; @@ -126,7 +123,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands { byte command = payload[0]; - System.out.println("Got [" + (char) command + "/" + command + "] command"); + System.out.println("Got [" + BinaryProtocol.findCommand(command)); if (command == Fields.TS_HELLO_COMMAND) { new HelloCommand(logger, Fields.TS_SIGNATURE).handle(packet, stream); @@ -171,7 +168,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands { } else { unknownCommands.incrementAndGet(); new IllegalStateException().printStackTrace(); - logger.info("Error: unknown command " + (char) command + "/" + command); + logger.info("Error: unexpected " + BinaryProtocol.findCommand(command)); } } }