diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java b/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java index 75b3cce..dc51819 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.util.Timer; import java.util.TimerTask; -import com.radio.codec2talkie.R; import com.radio.codec2talkie.protocol.aprs.tools.AprsIsData; import com.radio.codec2talkie.protocol.message.TextMessage; import com.radio.codec2talkie.storage.log.LogItem; @@ -55,8 +54,6 @@ public class AppWorker extends Thread { private final Protocol _protocol; private final Transport _transport; - private final int _codec2Mode; - // input data, bt -> audio private AudioTrack _systemAudioPlayer; @@ -88,9 +85,6 @@ public class AppWorker extends Thread { _context = context; _sharedPreferences = PreferenceManager.getDefaultSharedPreferences(_context); - String codec2ModeName = _sharedPreferences.getString(PreferenceKeys.CODEC2_MODE, _context.getResources().getStringArray(R.array.codec2_modes)[0]); - _codec2Mode = AudioTools.extractCodec2ModeId(codec2ModeName); - _logItemRepository = new LogItemRepository((Application)context); _messageItemRepository = new MessageItemRepository((Application)context); _positionItemRepository = new PositionItemRepository((Application)context); @@ -260,7 +254,7 @@ public class AppWorker extends Thread { private void recordAndSendAudioFrame() throws IOException { _systemAudioRecorder.read(_recordAudioBuffer, 0, _recordAudioBuffer.length); - _protocol.sendPcmAudio(null, null, _codec2Mode, _recordAudioBuffer); + _protocol.sendPcmAudio(null, null, _recordAudioBuffer); } private final ProtocolCallback _protocolCallback = new ProtocolCallback() { @@ -279,7 +273,7 @@ public class AppWorker extends Thread { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { String note = (src == null ? "UNK" : src) + "→" + (dst == null ? "UNK" : dst); sendStatusUpdate(AppMessage.EV_VOICE_RECEIVED, note); sendRxAudioLevelUpdate(pcmFrame); @@ -290,7 +284,7 @@ public class AppWorker extends Thread { } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrame) { + protected void onReceiveCompressedAudio(String src, String dst, byte[] audioFrame) { throw new UnsupportedOperationException(); } @@ -330,14 +324,14 @@ public class AppWorker extends Thread { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { String note = (src == null ? "UNK" : src) + "→" + (dst == null ? "UNK" : dst); sendStatusUpdate(AppMessage.EV_TRANSMITTED_VOICE, note); sendTxAudioLevelUpdate(frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { throw new UnsupportedOperationException(); } diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Aprs.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Aprs.java index 585863e..2695efa 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Aprs.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Aprs.java @@ -80,8 +80,8 @@ public class Aprs implements Protocol { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] frame) throws IOException { - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, frame); + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { + _childProtocol.sendCompressedAudio(src, dst, frame); } @Override @@ -101,11 +101,11 @@ public class Aprs implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec2Mode, short[] pcmFrame) throws IOException { + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { if (_isVoax25Enabled) { - _childProtocol.sendPcmAudio(src == null ? _srcCallsign : src, dst == null ? _dstCallsign : dst, codec2Mode, pcmFrame); + _childProtocol.sendPcmAudio(src == null ? _srcCallsign : src, dst == null ? _dstCallsign : dst, pcmFrame); } else { - _childProtocol.sendPcmAudio(src, dst, codec2Mode, pcmFrame); + _childProtocol.sendPcmAudio(src, dst, pcmFrame); } } @@ -126,14 +126,14 @@ public class Aprs implements Protocol { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { String dstCallsign = new AprsCallsign(dst).isSoftware() ? "*" : dst; - _parentProtocolCallback.onReceivePcmAudio(src, dstCallsign, codec, pcmFrame); + _parentProtocolCallback.onReceivePcmAudio(src, dstCallsign, pcmFrame); } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrame) { - _parentProtocolCallback.onReceiveCompressedAudio(src, dst, codec2Mode, audioFrame); + protected void onReceiveCompressedAudio(String src, String dst, byte[] audioFrame) { + _parentProtocolCallback.onReceiveCompressedAudio(src, dst, audioFrame); } @Override @@ -177,14 +177,14 @@ public class Aprs implements Protocol { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { String dstCallsign = new AprsCallsign(dst).isSoftware() ? "*" : dst; - _parentProtocolCallback.onTransmitPcmAudio(src, dstCallsign, codec, frame); + _parentProtocolCallback.onTransmitPcmAudio(src, dstCallsign, frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { - _parentProtocolCallback.onTransmitCompressedAudio(src, dst, codec, frame); + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { + _parentProtocolCallback.onTransmitCompressedAudio(src, dst, frame); } @Override diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AprsIs.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AprsIs.java index 9228ca3..3622609 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AprsIs.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AprsIs.java @@ -40,7 +40,6 @@ public class AprsIs implements Protocol, Runnable { private static final String TAG = AprsIs.class.getSimpleName(); private static final int APRSIS_RETRY_WAIT_MS = 10000; - private static final int APRSIS_DEFAULT_PORT = 14580; private static final int HEARD_LIST_DURATION_SECONDS = 60; @@ -110,8 +109,8 @@ public class AprsIs implements Protocol, Runnable { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] frame) throws IOException { - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, frame); + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { + _childProtocol.sendCompressedAudio(src, dst, frame); } @Override @@ -120,8 +119,8 @@ public class AprsIs implements Protocol, Runnable { } @Override - public void sendPcmAudio(String src, String dst, int codec2Mode, short[] pcmFrame) throws IOException { - _childProtocol.sendPcmAudio(src, dst, codec2Mode, pcmFrame); + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { + _childProtocol.sendPcmAudio(src, dst, pcmFrame); } @Override @@ -179,13 +178,13 @@ public class AprsIs implements Protocol, Runnable { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { - _parentProtocolCallback.onReceivePcmAudio(src, dst, codec, pcmFrame); + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { + _parentProtocolCallback.onReceivePcmAudio(src, dst, pcmFrame); } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrame) { - _parentProtocolCallback.onReceiveCompressedAudio(src, dst, codec2Mode, audioFrame); + protected void onReceiveCompressedAudio(String src, String dst, byte[] audioFrame) { + _parentProtocolCallback.onReceiveCompressedAudio(src, dst, audioFrame); } @Override @@ -229,13 +228,13 @@ public class AprsIs implements Protocol, Runnable { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, frame); + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { + _parentProtocolCallback.onTransmitPcmAudio(src, dst, frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { - _parentProtocolCallback.onTransmitCompressedAudio(src, dst, codec, frame); + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { + _parentProtocolCallback.onTransmitCompressedAudio(src, dst, frame); } @Override diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioCodec2.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioCodec2.java index 91fd781..cc406fe 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioCodec2.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioCodec2.java @@ -48,8 +48,8 @@ public class AudioCodec2 implements Protocol { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] frame) throws IOException { - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, frame); + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { + _childProtocol.sendCompressedAudio(src, dst, frame); } @Override @@ -58,8 +58,8 @@ public class AudioCodec2 implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec2Mode, short[] pcmFrame) throws IOException { - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec2Mode, pcmFrame); + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { + _parentProtocolCallback.onTransmitPcmAudio(src, dst, pcmFrame); Codec2.encode(_codec2Con, pcmFrame, _recordAudioEncodedBuffer); @@ -68,7 +68,7 @@ public class AudioCodec2 implements Protocol { for (int i = 0; i < _recordAudioEncodedBuffer.length; i++) { frame[i] = (byte)_recordAudioEncodedBuffer[i]; } - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, frame); + _childProtocol.sendCompressedAudio(src, dst, frame); } @Override @@ -88,14 +88,14 @@ public class AudioCodec2 implements Protocol { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { - _parentProtocolCallback.onReceivePcmAudio(src, dst, codec, pcmFrame); + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { + _parentProtocolCallback.onReceivePcmAudio(src, dst, pcmFrame); } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrame) { + protected void onReceiveCompressedAudio(String src, String dst, byte[] audioFrame) { Codec2.decode(_codec2Con, _playbackAudioBuffer, audioFrame); - _parentProtocolCallback.onReceivePcmAudio(src, dst, codec2Mode, _playbackAudioBuffer); + _parentProtocolCallback.onReceivePcmAudio(src, dst, _playbackAudioBuffer); } @Override @@ -124,13 +124,13 @@ public class AudioCodec2 implements Protocol { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, frame); + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { + _parentProtocolCallback.onTransmitPcmAudio(src, dst, frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { - _parentProtocolCallback.onTransmitCompressedAudio(src, dst, codec, frame); + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { + _parentProtocolCallback.onTransmitCompressedAudio(src, dst, frame); } @Override diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioFrameAggregator.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioFrameAggregator.java index 78d0493..7f3a1d1 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioFrameAggregator.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AudioFrameAggregator.java @@ -31,7 +31,6 @@ public class AudioFrameAggregator implements Protocol { private String _lastSrc; private String _lastDst; - private int _lastCodec2Mode; private final SharedPreferences _sharedPreferences; private ProtocolCallback _parentProtocolCallback; @@ -68,14 +67,13 @@ public class AudioFrameAggregator implements Protocol { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] frame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { if ( _outputBufferPos + frame.length >= _outputBufferSize) { - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, Arrays.copyOf(_outputBuffer, _outputBufferPos)); + _childProtocol.sendCompressedAudio(src, dst, Arrays.copyOf(_outputBuffer, _outputBufferPos)); _outputBufferPos = 0; } _lastSrc = src; _lastDst = dst; - _lastCodec2Mode = codec2Mode; System.arraycopy(frame, 0, _outputBuffer, _outputBufferPos, frame.length); _outputBufferPos += frame.length; } @@ -86,8 +84,8 @@ public class AudioFrameAggregator implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException { - _childProtocol.sendPcmAudio(src, dst, codec, pcmFrame); + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { + _childProtocol.sendPcmAudio(src, dst, pcmFrame); } @Override @@ -107,12 +105,12 @@ public class AudioFrameAggregator implements Protocol { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { - _parentProtocolCallback.onReceivePcmAudio(src, dst, codec, pcmFrame); + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { + _parentProtocolCallback.onReceivePcmAudio(src, dst, pcmFrame); } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrames) { + protected void onReceiveCompressedAudio(String src, String dst, byte[] audioFrames) { if (audioFrames.length % _codec2FrameSize != 0) { Log.e(TAG, "Ignoring audio frame of wrong size: " + audioFrames.length); _parentProtocolCallback.onProtocolRxError(); @@ -123,7 +121,7 @@ public class AudioFrameAggregator implements Protocol { for (int j = 0; j < _codec2FrameSize && (j + i) < audioFrames.length; j++) { audioFrame[j] = audioFrames[i + j]; } - _parentProtocolCallback.onReceiveCompressedAudio(src, dst, codec2Mode, audioFrame); + _parentProtocolCallback.onReceiveCompressedAudio(src, dst, audioFrame); } } } @@ -154,13 +152,13 @@ public class AudioFrameAggregator implements Protocol { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, frame); + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { + _parentProtocolCallback.onTransmitPcmAudio(src, dst, frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { - _parentProtocolCallback.onTransmitCompressedAudio(src, dst, codec, frame); + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { + _parentProtocolCallback.onTransmitCompressedAudio(src, dst, frame); } @Override @@ -202,7 +200,7 @@ public class AudioFrameAggregator implements Protocol { @Override public void flush() throws IOException { if (_outputBufferPos > 0) { - _childProtocol.sendCompressedAudio(_lastSrc, _lastDst, _lastCodec2Mode, Arrays.copyOf(_outputBuffer, _outputBufferPos)); + _childProtocol.sendCompressedAudio(_lastSrc, _lastDst, Arrays.copyOf(_outputBuffer, _outputBufferPos)); _outputBufferPos = 0; } _childProtocol.flush(); diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Ax25.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Ax25.java index 0763685..a6073c0 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Ax25.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Ax25.java @@ -15,8 +15,6 @@ import com.radio.codec2talkie.settings.SettingsWrapper; import com.radio.codec2talkie.transport.Transport; import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; public class Ax25 implements Protocol { @@ -57,13 +55,12 @@ public class Ax25 implements Protocol { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] frame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { if (_isVoax25Enabled) { AX25Packet ax25Packet = new AX25Packet(); ax25Packet.src = src; ax25Packet.dst = dst; ax25Packet.digipath = _digipath; - ax25Packet.codec2Mode = codec2Mode; ax25Packet.isAudio = true; ax25Packet.rawData = frame; byte[] ax25Frame = ax25Packet.toBinary(); @@ -71,10 +68,10 @@ public class Ax25 implements Protocol { Log.e(TAG, "Cannot convert AX.25 voice packet to binary"); _parentProtocolCallback.onProtocolTxError(); } else { - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, ax25Frame); + _childProtocol.sendCompressedAudio(src, dst, ax25Frame); } } else { - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, frame); + _childProtocol.sendCompressedAudio(src, dst, frame); } } @@ -84,8 +81,8 @@ public class Ax25 implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException { - _childProtocol.sendPcmAudio(src, dst, codec, pcmFrame); + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { + _childProtocol.sendPcmAudio(src, dst, pcmFrame); } @Override @@ -119,17 +116,17 @@ public class Ax25 implements Protocol { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { - _parentProtocolCallback.onReceivePcmAudio(src, dst, codec, pcmFrame); + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { + _parentProtocolCallback.onReceivePcmAudio(src, dst, pcmFrame); } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrames) { + protected void onReceiveCompressedAudio(String src, String dst, byte[] audioFrames) { AX25Packet ax25Data = new AX25Packet(); ax25Data.fromBinary(audioFrames); if (ax25Data.isValid) { if (ax25Data.isAudio) { - _parentProtocolCallback.onReceiveCompressedAudio(ax25Data.src, ax25Data.dst, ax25Data.codec2Mode, ax25Data.rawData); + _parentProtocolCallback.onReceiveCompressedAudio(ax25Data.src, ax25Data.dst, ax25Data.rawData); } else { _parentProtocolCallback.onReceiveLog(ax25Data.toString()); _parentProtocolCallback.onReceiveData(ax25Data.src, ax25Data.dst, ax25Data.digipath, ax25Data.rawData); @@ -137,7 +134,7 @@ public class Ax25 implements Protocol { } } else { // fallback to raw audio if ax25 frame is invalid - _parentProtocolCallback.onReceiveCompressedAudio(src, dst, codec2Mode, audioFrames); + _parentProtocolCallback.onReceiveCompressedAudio(src, dst, audioFrames); } } @@ -167,13 +164,13 @@ public class Ax25 implements Protocol { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, frame); + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { + _parentProtocolCallback.onTransmitPcmAudio(src, dst, frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { - _parentProtocolCallback.onTransmitCompressedAudio(src, dst, codec, frame); + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { + _parentProtocolCallback.onTransmitCompressedAudio(src, dst, frame); } @Override diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java index f7e3e99..b3ec62f 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Freedv.java @@ -73,15 +73,15 @@ public class Freedv implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException { + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { Codec2.freedvTx(_freedv, _modemTxBuffer, pcmFrame); //Log.i(TAG, "send pcm " + _modemTxBuffer.length); _transport.write(_modemTxBuffer); - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, pcmFrame); + _parentProtocolCallback.onTransmitPcmAudio(src, dst, pcmFrame); } @Override - public void sendCompressedAudio(String src, String dst, int codec, byte[] frame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { Log.w(TAG, "sendCompressedAudio() is not supported"); } @@ -140,7 +140,7 @@ public class Freedv implements Protocol { long cntRead = Codec2.freedvRx(_freedv, _speechRxBuffer, samplesSpeech); if (cntRead > 0) { //Log.i(TAG, "receive " + cntRead); - _parentProtocolCallback.onReceivePcmAudio(null, null, -1, Arrays.copyOf(_speechRxBuffer, (int) cntRead)); + _parentProtocolCallback.onReceivePcmAudio(null, null, Arrays.copyOf(_speechRxBuffer, (int) cntRead)); float snr = Codec2.freedvGetModemStat(_freedv); _parentProtocolCallback.onReceiveSignalLevel((short) 0, (short)(100 * snr)); isRead = true; @@ -161,8 +161,8 @@ public class Freedv implements Protocol { int pktLen = (((int)_dataBuffer[0] & 0xff) << 8) | ((int)_dataBuffer[1] & 0xff); byte [] pkt = new byte[pktLen]; System.arraycopy(_dataBuffer, 2, pkt, 0, pktLen); - // TODO, refactor, use onReceiveData - _parentProtocolCallback.onReceiveCompressedAudio(null, null, -1, pkt); + // NOTE, default data is compressed audio, upper layer should distinguish + _parentProtocolCallback.onReceiveCompressedAudio(null, null, pkt); float snr = Codec2.freedvGetModemStat(_freedvData); _parentProtocolCallback.onReceiveSignalLevel((short) 0, (short)(100 * snr)); isRead = true; diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Hdlc.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Hdlc.java index 4acac90..08185bf 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Hdlc.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Hdlc.java @@ -55,12 +55,12 @@ public class Hdlc implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException { + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { Log.w(TAG, "sendPcmAudio() is not supported"); } @Override - public void sendCompressedAudio(String src, String dst, int codec, byte[] frame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { _transport.write(hdlcEncode(frame)); } @@ -111,7 +111,8 @@ public class Hdlc implements Protocol { if (calculatedCrc == packetCrc) { //Log.v(TAG, DebugTools.byteBitsToString(packetBits)); //Log.i(TAG, "RX: " + DebugTools.bytesToHex(packetBytes)); - _parentProtocolCallback.onReceiveCompressedAudio(null, null, -1, contentBytes); + // NOTE, default data is compressed audio, upper layer should distinguish + _parentProtocolCallback.onReceiveCompressedAudio(null, null, contentBytes); } } } 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 53ca223..e0df564 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Kiss.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Kiss.java @@ -15,7 +15,6 @@ import com.radio.codec2talkie.protocol.message.TextMessage; import com.radio.codec2talkie.protocol.position.Position; import com.radio.codec2talkie.settings.PreferenceKeys; import com.radio.codec2talkie.settings.SettingsWrapper; -import com.radio.codec2talkie.tools.DebugTools; import com.radio.codec2talkie.transport.Transport; import java.io.IOException; @@ -220,7 +219,7 @@ public class Kiss implements Protocol { }; @Override - public void sendCompressedAudio(String src, String dst, int codec, byte[] frame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { // NOTE, KISS does not distinguish between audio and data packet, upper layer should decide send(KISS_CMD_DATA, frame); } @@ -231,7 +230,7 @@ public class Kiss implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) { + public void sendPcmAudio(String src, String dst, short[] pcmFrame) { Log.w(TAG, "sendPcmAudio() is not supported"); } @@ -316,9 +315,8 @@ public class Kiss implements Protocol { break; case KISS_FEND: if (_kissDataType == DataType.RAW) { - // NOTE, KISS does not distinguish between audio and data packets, upper layer should decide - // TODO, refactor, use onReceiveData - protocolCallback.onReceiveCompressedAudio(null, null, -1, Arrays.copyOf(_frameOutputBuffer, _frameOutputBufferPos)); + // NOTE, default data is compressed audio, KISS does not distinguish between audio and data packets, upper layer should decide + protocolCallback.onReceiveCompressedAudio(null, null, Arrays.copyOf(_frameOutputBuffer, _frameOutputBufferPos)); } else if (_kissDataType == DataType.SIGNAL_REPORT && _isExtendedMode) { byte[] signalLevelRaw = Arrays.copyOf(_kissCmdBuffer, _kissCmdBufferPos); ByteBuffer data = ByteBuffer.wrap(signalLevelRaw); diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java index 64ab3a5..ab445a5 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Protocol.java @@ -13,8 +13,8 @@ public interface Protocol { void initialize(Transport transport, Context context, ProtocolCallback protocolCallback) throws IOException; // audio int getPcmAudioRecordBufferSize(); - void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException; - void sendCompressedAudio(String src, String dst, int codec, byte[] frame) throws IOException; + void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException; + void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException; // messaging void sendTextMessage(TextMessage textMessage) throws IOException; // data diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ProtocolCallback.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ProtocolCallback.java index 50bcef4..b6ada4d 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ProtocolCallback.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ProtocolCallback.java @@ -6,8 +6,8 @@ import com.radio.codec2talkie.protocol.position.Position; public abstract class ProtocolCallback { // receive abstract protected void onReceivePosition(Position position); - abstract protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame); - abstract protected void onReceiveCompressedAudio(String src, String dst, int codec, byte[] frame); + abstract protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame); + abstract protected void onReceiveCompressedAudio(String src, String dst, byte[] frame); abstract protected void onReceiveTextMessage(TextMessage textMessage); abstract protected void onReceiveData(String src, String dst, String path, byte[] data); abstract protected void onReceiveSignalLevel(short rssi, short snr); @@ -15,8 +15,8 @@ public abstract class ProtocolCallback { abstract protected void onReceiveLog(String logData); // transmit - abstract protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame); - abstract protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame); + abstract protected void onTransmitPcmAudio(String src, String dst, short[] frame); + abstract protected void onTransmitCompressedAudio(String src, String dst, byte[] frame); abstract protected void onTransmitTextMessage(TextMessage textMessage); abstract protected void onTransmitPosition(Position position); abstract protected void onTransmitData(String src, String dst, String path, byte[] data); diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Raw.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Raw.java index 82472aa..ee3136e 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Raw.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Raw.java @@ -37,7 +37,7 @@ public class Raw implements Protocol { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] frame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { _transport.write(Arrays.copyOf(frame, frame.length)); } @@ -47,7 +47,7 @@ public class Raw implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) { + public void sendPcmAudio(String src, String dst, short[] pcmFrame) { Log.w(TAG, "sendPcmAudio() is not supported"); } @@ -60,7 +60,7 @@ public class Raw implements Protocol { public boolean receive() throws IOException { int bytesRead = _transport.read(_rxDataBuffer); if (bytesRead > 0) { - _parentProtocolCallback.onReceiveCompressedAudio(null, null, -1, Arrays.copyOf(_rxDataBuffer, bytesRead)); + _parentProtocolCallback.onReceiveCompressedAudio(null, null, Arrays.copyOf(_rxDataBuffer, bytesRead)); return true; } return false; diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Recorder.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Recorder.java index 36fffc8..5b77ec7 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Recorder.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Recorder.java @@ -67,10 +67,10 @@ public class Recorder implements Protocol { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] frame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException { rotateIfNewSrcOrDstCallsign(src, dst); - writeToFile(src, dst, codec2Mode, frame); - _childProtocol.sendCompressedAudio(src, dst, codec2Mode, frame); + writeToFile(src, dst, frame); + _childProtocol.sendCompressedAudio(src, dst, frame); } @Override @@ -79,8 +79,8 @@ public class Recorder implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException { - _childProtocol.sendPcmAudio(src, dst, codec, pcmFrame); + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { + _childProtocol.sendPcmAudio(src, dst, pcmFrame); } @Override @@ -100,15 +100,15 @@ public class Recorder implements Protocol { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { - _parentProtocolCallback.onReceivePcmAudio(src, dst, codec, pcmFrame); + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { + _parentProtocolCallback.onReceivePcmAudio(src, dst, pcmFrame); } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrames) { + protected void onReceiveCompressedAudio(String src, String dst, byte[] audioFrames) { rotateIfNewSrcOrDstCallsign(src, dst); - _parentProtocolCallback.onReceiveCompressedAudio(src, dst, codec2Mode, audioFrames); - writeToFile(src, dst, codec2Mode, audioFrames); + _parentProtocolCallback.onReceiveCompressedAudio(src, dst, audioFrames); + writeToFile(src, dst, audioFrames); } @Override @@ -137,13 +137,13 @@ public class Recorder implements Protocol { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, frame); + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { + _parentProtocolCallback.onTransmitPcmAudio(src, dst, frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { - _parentProtocolCallback.onTransmitCompressedAudio(src, dst, codec, frame); + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { + _parentProtocolCallback.onTransmitCompressedAudio(src, dst, frame); } @Override @@ -192,9 +192,9 @@ public class Recorder implements Protocol { _childProtocol.close(); } - private void writeToFile(String src, String dst, int codec2Mode, byte[] rawData) { + private void writeToFile(String src, String dst, byte[] rawData) { stopRotationTimer(); - createStreamIfNotExists(src, dst, codec2Mode); + createStreamIfNotExists(src, dst); writeToStream(rawData); startRotationTimer(); } @@ -209,7 +209,7 @@ public class Recorder implements Protocol { } } - private void createStreamIfNotExists(String src, String dst, int codec2Mode) { + private void createStreamIfNotExists(String src, String dst) { if (_activeStream == null) { try { Date date = new Date(); @@ -217,7 +217,7 @@ public class Recorder implements Protocol { if (!newDirectory.exists() && !newDirectory.mkdirs()) { Log.e(TAG, "Failed to create directory for voicemails"); } - File newAudioFile = new File(newDirectory, getNewFileName(date, src, dst, codec2Mode)); + File newAudioFile = new File(newDirectory, getNewFileName(date, src, dst)); _activeStream = new FileOutputStream(newAudioFile); } catch (FileNotFoundException e) { e.printStackTrace(); @@ -230,13 +230,9 @@ public class Recorder implements Protocol { return df.format(date); } - private String getNewFileName(Date date, String src, String dst, int codec2Mode) { - int mode = codec2Mode; - if (mode == -1) { - mode = _codec2ModeId; - } + private String getNewFileName(Date date, String src, String dst) { SimpleDateFormat tf = new SimpleDateFormat("HHmmss", Locale.ENGLISH); - String codec2mode = String.format(Locale.ENGLISH, "%02d", mode); + String codec2mode = String.format(Locale.ENGLISH, "%02d", _codec2ModeId); String fileName = codec2mode + "_" + tf.format(date); if (src != null && dst != null) { fileName += "_" + src + "_" + dst; diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Scrambler.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Scrambler.java index f8fe2ac..7b8632a 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Scrambler.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Scrambler.java @@ -51,7 +51,7 @@ public class Scrambler implements Protocol { } @Override - public void sendCompressedAudio(String src, String dst, int codec2Mode, byte[] audioFrame) throws IOException { + public void sendCompressedAudio(String src, String dst, byte[] audioFrame) throws IOException { byte[] result = scramble(audioFrame); if (result == null) { _parentProtocolCallback.onProtocolTxError(); @@ -66,8 +66,8 @@ public class Scrambler implements Protocol { } @Override - public void sendPcmAudio(String src, String dst, int codec, short[] pcmFrame) throws IOException { - _childProtocol.sendPcmAudio(src, dst, codec, pcmFrame); + public void sendPcmAudio(String src, String dst, short[] pcmFrame) throws IOException { + _childProtocol.sendPcmAudio(src, dst, pcmFrame); } @Override @@ -92,18 +92,18 @@ public class Scrambler implements Protocol { } @Override - protected void onReceivePcmAudio(String src, String dst, int codec, short[] pcmFrame) { - _parentProtocolCallback.onReceivePcmAudio(src, dst, codec, pcmFrame); + protected void onReceivePcmAudio(String src, String dst, short[] pcmFrame) { + _parentProtocolCallback.onReceivePcmAudio(src, dst, pcmFrame); } @Override - protected void onReceiveCompressedAudio(String src, String dst, int codec2Mode, byte[] scrambledFrame) { + protected void onReceiveCompressedAudio(String src, String dst, byte[] scrambledFrame) { byte[] audioFrames = unscramble(scrambledFrame); if (audioFrames == null) { _parentProtocolCallback.onProtocolRxError(); } else { - _parentProtocolCallback.onReceiveCompressedAudio(src, dst, codec2Mode, audioFrames); + _parentProtocolCallback.onReceiveCompressedAudio(src, dst, audioFrames); } } @@ -138,13 +138,13 @@ public class Scrambler implements Protocol { } @Override - protected void onTransmitPcmAudio(String src, String dst, int codec, short[] frame) { - _parentProtocolCallback.onTransmitPcmAudio(src, dst, codec, frame); + protected void onTransmitPcmAudio(String src, String dst, short[] frame) { + _parentProtocolCallback.onTransmitPcmAudio(src, dst, frame); } @Override - protected void onTransmitCompressedAudio(String src, String dst, int codec, byte[] frame) { - _parentProtocolCallback.onTransmitCompressedAudio(src, dst, codec, frame); + protected void onTransmitCompressedAudio(String src, String dst, byte[] frame) { + _parentProtocolCallback.onTransmitCompressedAudio(src, dst, frame); } @Override diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ax25/AX25Packet.java b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ax25/AX25Packet.java index 1c2c33d..5ec47a9 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ax25/AX25Packet.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/ax25/AX25Packet.java @@ -19,7 +19,6 @@ public class AX25Packet { public String src; public String dst; public String digipath; - public int codec2Mode; public boolean isAudio; public byte[] rawData; public boolean isValid; @@ -84,7 +83,6 @@ public class AX25Packet { byte ax25Pid = buffer.get(); if (ax25Pid == AX25PID_AUDIO) { isAudio = true; - codec2Mode = buffer.get(); } else if (ax25Pid == AX25PID_NO_LAYER3) { isAudio = false; } else { @@ -143,7 +141,6 @@ public class AX25Packet { buffer.put(AX25CTRL_UI); if (isAudio) { buffer.put(AX25PID_AUDIO); - buffer.put((byte)codec2Mode); } else { buffer.put(AX25PID_NO_LAYER3); }