backend: centralize TncProto logic

markdownfixes
Georg Lukas 2016-09-20 16:40:54 +02:00
rodzic 04f771c4ef
commit b41b9fae75
6 zmienionych plików z 32 dodań i 5 usunięć

Wyświetl plik

@ -1,6 +1,7 @@
package org.aprsdroid.app package org.aprsdroid.app
import _root_.net.ab0oo.aprs.parser.APRSPacket import _root_.net.ab0oo.aprs.parser.APRSPacket
import _root_.java.io.{InputStream, OutputStream}
object AprsBackend { object AprsBackend {
val DEFAULT_CONNTYPE = "tcp" val DEFAULT_CONNTYPE = "tcp"
@ -72,9 +73,35 @@ object AprsBackend {
} }
} }
class ProtoInfo(
val create : (AprsService, InputStream, OutputStream) => TncProto,
val prefxml : Int
) {}
val proto_collection = Map(
"aprsis" -> new ProtoInfo(
(s, is, os) => new AprsIsProto(s, is, os),
0),
"kiss" -> new ProtoInfo(
(s, is, os) => new KissProto(is, os),
0),
"kenwood" -> new ProtoInfo(
(s, is, os) => new KenwoodProto(s, is, os),
0)
);
def defaultProtoInfo(p : String) : ProtoInfo = {
proto_collection.get(p) match {
case Some(pi) => pi
case None => proto_collection("kiss")
}
}
def instanciateUploader(service : AprsService, prefs : PrefsWrapper) : AprsBackend = { def instanciateUploader(service : AprsService, prefs : PrefsWrapper) : AprsBackend = {
defaultBackendInfo(prefs).create(service, prefs) defaultBackendInfo(prefs).create(service, prefs)
} }
def instanciateProto(p : String, service : AprsService, is : InputStream, os : OutputStream) : TncProto = {
defaultProtoInfo(p).create(service, is, os)
}
def instanciatePrefsAct(prefs : PrefsWrapper) = { def instanciatePrefsAct(prefs : PrefsWrapper) = {
defaultBackendInfo(prefs).prefxml defaultBackendInfo(prefs).prefxml
} }

Wyświetl plik

@ -27,7 +27,7 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBack
} }
def createTncProto(is : InputStream, os : OutputStream) : TncProto = def createTncProto(is : InputStream, os : OutputStream) : TncProto =
new KissProto(is, os) AprsBackend.instanciateProto("kiss", service, is, os)
def createConnection() { def createConnection() {
Log.d(TAG, "BluetoothTnc.createConnection: " + tncmac) Log.d(TAG, "BluetoothTnc.createConnection: " + tncmac)

Wyświetl plik

@ -8,7 +8,7 @@ class KenwoodTnc(service : AprsService, prefs : PrefsWrapper) extends BluetoothT
override val TAG = "APRSdroid.KenwoodTnc" override val TAG = "APRSdroid.KenwoodTnc"
override def createTncProto(is : InputStream, os : OutputStream) = { override def createTncProto(is : InputStream, os : OutputStream) = {
new KenwoodProto(service, is, os) AprsBackend.instanciateProto("kiss", service, is, os)
} }
} }

Wyświetl plik

@ -6,6 +6,6 @@ class TcpTnc(service : AprsService, prefs : PrefsWrapper) extends TcpUploader(se
override val TAG = "APRSdroid.TcpTnc" override val TAG = "APRSdroid.TcpTnc"
override def createTncProto(is : InputStream, os : OutputStream) : TncProto = override def createTncProto(is : InputStream, os : OutputStream) : TncProto =
new KissProto(is, os) AprsBackend.instanciateProto("kiss", service, is, os)
} }

Wyświetl plik

@ -33,7 +33,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsBacke
} }
def createTncProto(is : InputStream, os : OutputStream) : TncProto = { def createTncProto(is : InputStream, os : OutputStream) : TncProto = {
new AprsIsProto(service, is, os) AprsBackend.instanciateProto("aprsis", service, is, os)
} }
def update(packet : APRSPacket) : String = { def update(packet : APRSPacket) : String = {

Wyświetl plik

@ -150,7 +150,7 @@ class UsbTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBackend(pr
Thread.sleep(initdelay) Thread.sleep(initdelay)
} }
} }
proto = new KissProto(new SerialInputStream(ser), os) proto = AprsBackend.instanciateProto("kiss", service, new SerialInputStream(ser), os)
service.postPosterStarted() service.postPosterStarted()
while (running) { while (running) {
val line = proto.readPacket() val line = proto.readPacket()