Simplify protocol interface

master
sh123 2023-12-09 14:27:49 +02:00
rodzic 2f949aa501
commit cc83f5add8
15 zmienionych plików z 124 dodań i 144 usunięć

Wyświetl plik

@ -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();
}

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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();

Wyświetl plik

@ -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

Wyświetl plik

@ -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;

Wyświetl plik

@ -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);
}
}
}

Wyświetl plik

@ -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);

Wyświetl plik

@ -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

Wyświetl plik

@ -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);

Wyświetl plik

@ -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;

Wyświetl plik

@ -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;

Wyświetl plik

@ -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

Wyświetl plik

@ -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);
}