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