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
import _root_.net.ab0oo.aprs.parser.APRSPacket
import _root_.java.io.{InputStream, OutputStream}
object AprsBackend {
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 = {
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) = {
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 =
new KissProto(is, os)
AprsBackend.instanciateProto("kiss", service, is, os)
def createConnection() {
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 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 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 = {
new AprsIsProto(service, is, os)
AprsBackend.instanciateProto("aprsis", service, is, os)
}
def update(packet : APRSPacket) : String = {

Wyświetl plik

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