diff --git a/software/jna/SSS7.java b/software/jna/SSS7.java index 7ab99bc..7d1a4b7 100644 --- a/software/jna/SSS7.java +++ b/software/jna/SSS7.java @@ -1,17 +1,21 @@ import com.sun.jna.Library; import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.Memory; public class SSS7 { private interface NativeSSS7 extends Library { public int libsss7_start(String serialport); public int libsss7_can_send(); - public void libsss7_send(String data); + public void libsss7_send(Pointer data); public int libsss7_send_failed(); public int libsss7_has_received(); - public void libsss7_get_received(String data); + public void libsss7_get_received(Pointer data); public void libsss7_stop(); }; + public final int payloadLength = 16; + private NativeSSS7 lib; private String serial; @@ -28,6 +32,20 @@ public class SSS7 { return this.lib.libsss7_can_send() == 1; } + public void send(byte[] data) { + Pointer p = new Memory(this.payloadLength); + for(long i = 0; i < this.payloadLength; i++) { + if(i < data.length) { + p.setByte(i, data[(int) i]); + } + else { + p.setByte(i, (byte) 0); + } + } + + this.lib.libsss7_send(p); + } + public boolean sendFailed() { return this.lib.libsss7_send_failed() == 1; } @@ -36,9 +54,13 @@ public class SSS7 { return this.lib.libsss7_has_received() == 1; } - public String getReceived() { - String tmp = new String(); - this.lib.libsss7_get_received(tmp); - return tmp; + public byte[] getReceived() { + Pointer p = new Memory(this.payloadLength); + this.lib.libsss7_get_received(p); + return p.getByteArray(0, this.payloadLength); + } + + public void stop() { + this.lib.libsss7_stop(); } } diff --git a/software/jna/SSS7Test.java b/software/jna/SSS7Test.java index 29ed8d0..7db06a1 100644 --- a/software/jna/SSS7Test.java +++ b/software/jna/SSS7Test.java @@ -9,5 +9,17 @@ public class SSS7Test { bus.start(); + while(!bus.canSend()); + bus.send("Hallo Java".getBytes()); + while(!bus.canSend()); + + + while(!bus.hasReceived()); + byte[] data = bus.getReceived(); + String str = new String(data); + System.out.println(str); + + + bus.stop(); } }