kopia lustrzana https://github.com/ge0rg/aprsdroid
backend: centralize TncProto logic
rodzic
04f771c4ef
commit
b41b9fae75
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
||||
}
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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()
|
||||
|
|
Ładowanie…
Reference in New Issue