kopia lustrzana https://github.com/sh123/codec2_talkie
Detect disconnection on read
rodzic
61804fe164
commit
d683cba431
|
@ -16,6 +16,7 @@ import java.nio.ByteBuffer;
|
|||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import com.radio.codec2talkie.connect.TcpIpSocketHandler;
|
||||
import com.radio.codec2talkie.protocol.Callback;
|
||||
import com.radio.codec2talkie.protocol.Protocol;
|
||||
import com.radio.codec2talkie.protocol.ProtocolFactory;
|
||||
|
|
|
@ -166,7 +166,7 @@ public class Kiss implements Protocol {
|
|||
if (_outputKissBufferPos == 0) {
|
||||
startKissPacket(KISS_CMD_DATA);
|
||||
}
|
||||
// new frame does not fit, complete and create new frame
|
||||
// new frame does not fit, complete, send and create new frame
|
||||
if ( _outputKissBufferPos + escapedFrameSize >= KISS_TX_FRAME_MAX_SIZE) {
|
||||
completeKissPacket();
|
||||
startKissPacket(KISS_CMD_DATA);
|
||||
|
@ -275,11 +275,11 @@ public class Kiss implements Protocol {
|
|||
}
|
||||
|
||||
private void sendKissByte(byte b) {
|
||||
_outputKissBuffer[_outputKissBufferPos++] = b;
|
||||
if (_outputKissBufferPos > _outputKissBuffer.length) {
|
||||
if (_outputKissBufferPos >= _outputKissBuffer.length) {
|
||||
Log.e(TAG, "Output KISS buffer overflow, discarding frame");
|
||||
_outputKissBufferPos = 0;
|
||||
}
|
||||
_outputKissBuffer[_outputKissBufferPos++] = b;
|
||||
}
|
||||
|
||||
private void receiveFrameByte(byte b) {
|
||||
|
|
|
@ -25,7 +25,12 @@ public class TcpIp implements Transport {
|
|||
@Override
|
||||
public int read(byte[] data) throws IOException {
|
||||
try {
|
||||
return _inputStream.read(data);
|
||||
int bytesRead = _inputStream.read(data);
|
||||
// connection closed
|
||||
if (bytesRead == -1) {
|
||||
throw new IOException();
|
||||
}
|
||||
return bytesRead;
|
||||
} catch (SocketTimeoutException e) {
|
||||
return 0;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue