diff --git a/software/jna/README.md b/software/jna/README.md new file mode 100644 index 0000000..9b12132 --- /dev/null +++ b/software/jna/README.md @@ -0,0 +1,8 @@ +SSS7 for Java +============= +Wraps libsss7 into a java object. + +Dependencies +------------ + - libsss7.so build by the make file in the linux folder + - JNA https://github.com/java-native-access/jna diff --git a/software/jna/SSS7.java b/software/jna/SSS7.java index b9a4f32..507fd2c 100644 --- a/software/jna/SSS7.java +++ b/software/jna/SSS7.java @@ -32,15 +32,17 @@ public class SSS7 { this.lib = (NativeSSS7) Native.loadLibrary("libsss7.so", NativeSSS7.class); } - public boolean start(String serial) { + // All methods should be synchronized as libsss7 will a single mutex instance + // for all of them + public synchronized boolean start(String serial) { return this.lib.libsss7_start(this.serial) == 0; } - public boolean canSend() { + public synchronized boolean canSend() { return this.lib.libsss7_can_send() == 1; } - public void send(byte[] data) { + public synchronized void send(byte[] data) { Pointer p = new Memory(this.payloadLength); for(long i = 0; i < this.payloadLength; i++) { if(i < data.length) { @@ -54,21 +56,21 @@ public class SSS7 { this.lib.libsss7_send(p); } - public boolean sendFailed() { + public synchronized boolean sendFailed() { return this.lib.libsss7_send_failed() == 1; } - public boolean hasReceived() { + public synchronized boolean hasReceived() { return this.lib.libsss7_has_received() == 1; } - public byte[] getReceived() { + public synchronized byte[] getReceived() { Pointer p = new Memory(this.payloadLength); this.lib.libsss7_get_received(p); return p.getByteArray(0, this.payloadLength); } - public void stop() { + public synchronized void stop() { this.lib.libsss7_stop(); } }