diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/Codec2Player.java b/codec2talkie/src/main/java/com/radio/codec2talkie/Codec2Player.java index ad55166..a76d74a 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/Codec2Player.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/Codec2Player.java @@ -52,7 +52,8 @@ public class Codec2Player extends Thread { private final byte CSMA_PERSISTENCE = (byte)0xff; private final byte CSMA_SLOT_TIME = (byte)0x00; - private final byte TX_TAIL_10MS_UNITS = (byte)20; // 200ms + private final byte TX_DELAY_10MS_UNITS = (byte)(250 / 10); + private final byte TX_TAIL_10MS_UNITS = (byte)(500 / 10); private final int RX_BUFFER_SIZE = 8192; @@ -183,7 +184,8 @@ public class Codec2Player extends Thread { _loopbackBuffer = ByteBuffer.allocateDirect(1024 * _audioEncodedBufferSize); - _kissProcessor = new KissProcessor(CSMA_PERSISTENCE, CSMA_SLOT_TIME, TX_TAIL_10MS_UNITS, _kissCallback); + _kissProcessor = new KissProcessor(CSMA_PERSISTENCE, CSMA_SLOT_TIME, + TX_DELAY_10MS_UNITS, TX_TAIL_10MS_UNITS, _kissCallback); } private final KissCallback _kissCallback = new KissCallback() { diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/kiss/KissProcessor.java b/codec2talkie/src/main/java/com/radio/codec2talkie/kiss/KissProcessor.java index 5999edf..1f4e037 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/kiss/KissProcessor.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/kiss/KissProcessor.java @@ -18,6 +18,7 @@ public class KissProcessor { private final byte KISS_TFESC = (byte)0xdd; private final byte KISS_CMD_DATA = (byte)0x00; + private final byte KISS_CMD_TX_DELAY = (byte)0x01; private final byte KISS_CMD_P = (byte)0x02; private final byte KISS_CMD_SLOT_TIME = (byte)0x03; private final byte KISS_CMD_TX_TAIL = (byte)0x04; @@ -35,6 +36,7 @@ public class KissProcessor { private final byte _tncCsmaPersistence; private final byte _tncCsmaSlotTime; + private final byte _tncTxDelay; private final byte _tncTxTail; private final byte[] _outputKissBuffer; @@ -45,12 +47,13 @@ public class KissProcessor { private int _outputKissBufferPos; private int _inputKissBufferPos; - public KissProcessor(byte csmaPersistence, byte csmaSlotTime, byte txTail, KissCallback callback) { + public KissProcessor(byte csmaPersistence, byte csmaSlotTime, byte txDelay, byte txTail, KissCallback callback) { _callback = callback; _outputKissBuffer = new byte[KISS_TX_FRAME_MAX_SIZE]; _inputKissBuffer = new byte[100 * KISS_TX_FRAME_MAX_SIZE]; _tncCsmaPersistence = csmaPersistence; _tncCsmaSlotTime = csmaSlotTime; + _tncTxDelay = txDelay; _tncTxTail = txTail; _outputKissBufferPos = 0; _inputKissBufferPos = 0; @@ -65,6 +68,10 @@ public class KissProcessor { sendKissByte(_tncCsmaSlotTime); completeKissPacket(); + startKissPacket(KISS_CMD_TX_DELAY); + sendKissByte(_tncTxTail); + completeKissPacket(); + startKissPacket(KISS_CMD_TX_TAIL); sendKissByte(_tncTxTail); completeKissPacket();