diff --git a/build.gradle b/build.gradle index e49d9fc..f4d2991 100644 --- a/build.gradle +++ b/build.gradle @@ -7,8 +7,10 @@ apply from: 'dependencies.gradle' group 'org.rusefi' version '0.11-SNAPSHOT' -repositories { - mavenCentral() +allprojects { + repositories { + mavenCentral() + } } dependencies { diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..2facd4a --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +javaCanVersion=3.2.4 \ No newline at end of file diff --git a/playback/build.gradle b/playback/build.gradle index e9de817..c7c21ec 100644 --- a/playback/build.gradle +++ b/playback/build.gradle @@ -6,4 +6,6 @@ plugins { dependencies { api rootProject api project(':peak-can-basic') + api group: 'tel.schich', name: 'javacan-core', version: "$javaCanVersion" + api group: 'tel.schich', name: 'javacan-core', version: "$javaCanVersion", classifier: 'x86_64' } \ No newline at end of file diff --git a/playback/src/main/java/com/rusefi/io/can/SocketCANHelper.java b/playback/src/main/java/com/rusefi/io/can/SocketCANHelper.java new file mode 100644 index 0000000..24bc32c --- /dev/null +++ b/playback/src/main/java/com/rusefi/io/can/SocketCANHelper.java @@ -0,0 +1,39 @@ +package com.rusefi.io.can; + +import com.sun.istack.internal.NotNull; +import tel.schich.javacan.CanChannels; +import tel.schich.javacan.CanFrame; +import tel.schich.javacan.NetworkDevice; +import tel.schich.javacan.RawCanChannel; + +import java.io.IOException; + +import static tel.schich.javacan.CanFrame.FD_NO_FLAGS; +import static tel.schich.javacan.CanSocketOptions.RECV_OWN_MSGS; + +public class SocketCANHelper { + @NotNull + public static RawCanChannel createSocket() { + final RawCanChannel socket; + try { + NetworkDevice canInterface = NetworkDevice.lookup(System.getProperty("CAN_DEVICE_NAME", "can0")); + socket = CanChannels.newRawChannel(); + socket.bind(canInterface); + + socket.configureBlocking(true); // we want reader thread to wait for messages + socket.setOption(RECV_OWN_MSGS, false); + } catch (IOException e) { + throw new IllegalStateException("Error looking up", e); + } + return socket; + } + + public static void send(int id, byte[] payload, RawCanChannel channel) { + CanFrame packet = CanFrame.create(id, FD_NO_FLAGS, payload); + try { + channel.write(packet); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } +}