diff --git a/src/backend/TcpUploader.scala b/src/backend/TcpUploader.scala index 57ef770..95e11e3 100644 --- a/src/backend/TcpUploader.scala +++ b/src/backend/TcpUploader.scala @@ -57,8 +57,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl val TAG = "APRSdroid.TcpSocketThread" var running = true var socket : Socket = null - var reader : BufferedReader = null - var writer : PrintWriter = null + var tnc : TncProto = null def init_socket() { Log.d(TAG, "init_socket()") @@ -72,12 +71,9 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl socket = new Socket(host, port) socket.setKeepAlive(true) socket.setSoTimeout(so_timeout*1000) - reader = new BufferedReader(new InputStreamReader( - socket.getInputStream()), 256) - writer = new PrintWriter(new OutputStreamWriter( - socket.getOutputStream()), true) Log.d(TAG, login + setupFilter()) - writer.println(login + setupFilter()) + tnc = new AprsIsProto(socket.getInputStream(), socket.getOutputStream(), + login + setupFilter()) } Log.d(TAG, "init_socket() done") } @@ -101,7 +97,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl } Log.d(TAG, "waiting for data...") var line : String = null - while (running && { line = reader.readLine(); line != null }) { + while (running && { line = tnc.readPacket(); line != null }) { Log.d(TAG, "recv: " + line) if (line(0) != '#') service.postSubmit(line) @@ -128,7 +124,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl def update(packet : APRSPacket) : String = { if (socket != null && socket.isConnected()) { - writer.println(packet) + tnc.writePacket(packet) "TCP OK" } else "TCP disconnected" } diff --git a/src/tncproto/AprsIsProto.scala b/src/tncproto/AprsIsProto.scala new file mode 100644 index 0000000..a7419b1 --- /dev/null +++ b/src/tncproto/AprsIsProto.scala @@ -0,0 +1,15 @@ +package org.aprsdroid.app +import _root_.java.io.{BufferedReader, InputStream, InputStreamReader, OutputStream, OutputStreamWriter, PrintWriter} + +import _root_.net.ab0oo.aprs.parser._ + +class AprsIsProto(is : InputStream, os : OutputStream, login : String) extends TncProto(is, os) { + + val reader = new BufferedReader(new InputStreamReader(is), 256) + val writer = new PrintWriter(new OutputStreamWriter(os), true) + + writer.println(login) + + def readPacket() : String = reader.readLine() + def writePacket(p : APRSPacket) = writer.println(p) +}