aprs backend: refactor backend list

obj_origin
Georg Lukas 2011-11-11 20:51:56 +01:00
rodzic ae64c8388e
commit d3becaac4b
3 zmienionych plików z 47 dodań i 48 usunięć

Wyświetl plik

@ -54,7 +54,7 @@ trait UIHelper extends Activity
}
def passcodeWarning(call : String, pass : String) {
import Backend._
import AprsIsUploader._
if ((defaultBackendInfo(prefs).need_passcode == PASSCODE_OPTIONAL) &&
!AprsPacket.passcodeAllowed(call, pass, false))
Toast.makeText(this, R.string.anon_warning, Toast.LENGTH_LONG).show()
@ -62,7 +62,7 @@ trait UIHelper extends Activity
def passcodeConfigRequired(call : String, pass : String) : Boolean = {
import Backend._
import AprsIsUploader._
// a valid passcode must be entered for "required",
// "" and "-1" are accepted as well for "optional"
defaultBackendInfo(prefs).need_passcode match {

Wyświetl plik

@ -5,12 +5,55 @@ import _root_.net.ab0oo.aprs.parser.APRSPacket
object AprsIsUploader {
val DEFAULT_CONNTYPE = "tcp"
val PASSCODE_NONE = 0
val PASSCODE_OPTIONAL = 1
val PASSCODE_REQUIRED = 2
// "struct" for APRS backend information
class BackendInfo(
val create : (AprsService, PrefsWrapper) => AprsIsUploader,
val prefxml : Int,
val need_passcode : Int
) {}
// add your own BackendInfo here
val backend_collection = Map(
"udp" -> new BackendInfo(
(s, p) => new UdpUploader(p),
R.xml.backend_udp,
PASSCODE_REQUIRED),
"http" -> new BackendInfo(
(s, p) => new HttpPostUploader(p),
R.xml.backend_http,
PASSCODE_REQUIRED),
"afsk" -> new BackendInfo(
(s, p) => new AfskUploader(p),
R.xml.backend_afsk,
PASSCODE_NONE),
"tcp" -> new BackendInfo(
(s, p) => new TcpUploader(s, p),
R.xml.backend_tcp,
PASSCODE_OPTIONAL),
"bluetooth" -> new BackendInfo(
(s, p) => new BluetoothTnc(s, p),
R.xml.backend_bluetooth,
PASSCODE_NONE)
)
def defaultBackendInfo(prefs : PrefsWrapper) : BackendInfo = {
backend_collection.get(prefs.getString("backend", DEFAULT_CONNTYPE)) match {
case Some(bi) => bi
case None => backend_collection(DEFAULT_CONNTYPE)
}
}
def instanciateUploader(service : AprsService, prefs : PrefsWrapper) : AprsIsUploader = {
Backend.defaultBackendInfo(prefs).create(service, prefs)
defaultBackendInfo(prefs).create(service, prefs)
}
def instanciatePrefsAct(prefs : PrefsWrapper) = {
Backend.defaultBackendInfo(prefs).prefxml
defaultBackendInfo(prefs).prefxml
}
}
abstract class AprsIsUploader(prefs : PrefsWrapper) {

Wyświetl plik

@ -1,44 +0,0 @@
package org.aprsdroid.app
object Backend {
val PASSCODE_NONE = 0
val PASSCODE_OPTIONAL = 1
val PASSCODE_REQUIRED = 2
val backend_collection = Map(
"udp" -> new BackendInfo(
(s, p) => new UdpUploader(p),
R.xml.backend_udp,
PASSCODE_REQUIRED),
"http" -> new BackendInfo(
(s, p) => new HttpPostUploader(p),
R.xml.backend_http,
PASSCODE_REQUIRED),
"afsk" -> new BackendInfo(
(s, p) => new AfskUploader(p),
R.xml.backend_afsk,
PASSCODE_NONE),
"tcp" -> new BackendInfo(
(s, p) => new TcpUploader(s, p),
R.xml.backend_tcp,
PASSCODE_OPTIONAL),
"bluetooth" -> new BackendInfo(
(s, p) => new BluetoothTnc(s, p),
R.xml.backend_bluetooth,
PASSCODE_NONE)
)
def defaultBackendInfo(prefs : PrefsWrapper) : BackendInfo = {
backend_collection.get(prefs.getString("backend", "")) match {
case Some(bi) => bi
case None => backend_collection("tcp")
}
}
}
class BackendInfo(
val create : (AprsService, PrefsWrapper) => AprsIsUploader,
val prefxml : Int,
val need_passcode : Int
) {}