From 1f47c7a8dbbb86411b4285c760467569ccd68920 Mon Sep 17 00:00:00 2001 From: sh123 Date: Thu, 28 Jan 2021 09:37:25 +0200 Subject: [PATCH] Add interface for protocol --- .../java/com/radio/codec2talkie/AudioProcessor.java | 4 ++-- .../java/com/radio/codec2talkie/protocol/Kiss.java | 13 ++++++++----- .../com/radio/codec2talkie/protocol/Protocol.java | 10 ++++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/AudioProcessor.java b/codec2talkie/src/main/java/com/radio/codec2talkie/AudioProcessor.java index 44a4558..0904505 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/AudioProcessor.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/AudioProcessor.java @@ -69,7 +69,7 @@ public class AudioProcessor extends Thread { _rxDataBuffer = new byte[RX_BUFFER_SIZE]; _transport = TransportFactory.create(transportType); - _protocol = new Kiss(_protocolCallback); + _protocol = new Kiss(); constructCodec2(codec2Mode); constructSystemAudioDevices(); @@ -281,7 +281,7 @@ public class AudioProcessor extends Thread { try { sendStatusUpdate(PROCESSOR_LISTENING, 0); - _protocol.initialize(); + _protocol.initialize(_protocolCallback); while (_isRunning) if (!process()) diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Kiss.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Kiss.java index 1128455..d2d3f74 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Kiss.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Kiss.java @@ -6,7 +6,7 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; -public class Kiss { +public class Kiss implements Protocol { private static final String TAG = Kiss.class.getSimpleName(); @@ -47,24 +47,27 @@ public class Kiss { private final byte[] _outputKissBuffer; private final byte[] _inputKissBuffer; - private final Callback _callback; + private Callback _callback; private int _outputKissBufferPos; private int _inputKissBufferPos; - public Kiss(Callback callback) { - _callback = callback; + public Kiss() { _outputKissBuffer = new byte[KISS_TX_FRAME_MAX_SIZE]; _inputKissBuffer = new byte[100 * KISS_TX_FRAME_MAX_SIZE]; + _tncCsmaPersistence = CSMA_PERSISTENCE; _tncCsmaSlotTime = CSMA_SLOT_TIME; _tncTxDelay = TX_DELAY_10MS_UNITS; _tncTxTail = TX_TAIL_10MS_UNITS; + _outputKissBufferPos = 0; _inputKissBufferPos = 0; } - public void initialize() throws IOException { + public void initialize(Callback callback) throws IOException { + _callback = callback; + startKissPacket(KISS_CMD_P); sendKissByte(_tncCsmaPersistence); completeKissPacket(); diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java new file mode 100644 index 0000000..ecb8471 --- /dev/null +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java @@ -0,0 +1,10 @@ +package com.radio.codec2talkie.protocol; + +import java.io.IOException; + +public interface Protocol { + void initialize(Callback callback) throws IOException; + void send(byte [] frame) throws IOException; + void receive(byte[] data); + void flush() throws IOException; +}