Merge branch 'master' into mapsforge

mediatek_nojit
Georg Lukas 2016-09-17 19:05:38 +02:00
commit 74e58b87d1
14 zmienionych plików z 807 dodań i 752 usunięć

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik diff jest za duży Load Diff

Wyświetl plik

@ -202,8 +202,9 @@ class AprsService extends Service {
}
def newPacket(payload : InformationField) = {
// TODO: obtain digi path from prefs
new APRSPacket(prefs.getCallSsid(), APP_VERSION, null, payload)
val digipath = prefs.getString("digi_path", "WIDE1-1")
new APRSPacket(prefs.getCallSsid(), APP_VERSION,
Digipeater.parseList(digipath, true), payload)
}
def formatLoc(symbol : String, status : String, location : Location) = {

Wyświetl plik

@ -1,6 +1,7 @@
package org.aprsdroid.app
import _root_.android.content.Context
import _root_.android.location.{Location, LocationManager}
import _root_.android.media.AudioManager
import _root_.android.preference.PreferenceManager
@ -63,6 +64,20 @@ class PrefsWrapper(val context : Context) {
def getLoginString() = AprsPacket.formatLogin(getCallsign(), getSsid(),
getPasscode(), getVersion())
def getFilterString(service : AprsService) : String = {
val filterdist = getStringInt("tcp.filterdist", 50)
val userfilter = getString("tcp.filter", "")
val lastloc = try {
val locMan = service.getSystemService(Context.LOCATION_SERVICE).asInstanceOf[LocationManager]
AprsPacket.formatRangeFilter(
locMan.getLastKnownLocation(PeriodicGPS.bestProvider(locMan)), filterdist)
} catch {
case e : IllegalArgumentException => ""
}
if (filterdist == 0) return " filter %s %s".format(userfilter, lastloc)
else return " filter m/%d %s %s".format(filterdist, userfilter, lastloc)
}
def getAfskHQ() = getBoolean("afsk.hqdemod", true)
def getAfskBluetooth() = getBoolean("afsk.btsco", false) && getAfskHQ()

Wyświetl plik

@ -18,7 +18,6 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBack
val bt_client = prefs.getBoolean("bt.client", true)
val tncmac = prefs.getString("bt.mac", null)
val tncchannel = prefs.getStringInt("bt.channel", -1)
var digipath = prefs.getString("digi_path", "WIDE1-1")
var conn : BtSocketThread = null
def start() = {
@ -28,7 +27,7 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBack
}
def createTncProto(is : InputStream, os : OutputStream) : TncProto =
new KissProto(is, os, digipath)
new KissProto(is, os)
def createConnection() {
Log.d(TAG, "BluetoothTnc.createConnection: " + tncmac)
@ -52,8 +51,6 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBack
}
def update(packet : APRSPacket) : String = {
// the digipeater setting here is a duplicate just for log purpose
packet.setDigipeaters(Digipeater.parseList(digipath, true))
Log.d(TAG, "BluetoothTnc.update: " + packet)
conn.update(packet)
}
@ -180,6 +177,8 @@ class BluetoothTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBack
def shutdown() {
Log.d(TAG, "shutdown()")
if (proto != null)
proto.stop()
this.synchronized {
catchLog("socket.close", socket.close)
}

Wyświetl plik

@ -1,47 +1,15 @@
package org.aprsdroid.app
import _root_.android.content.Context
import _root_.android.location.{GpsStatus, LocationManager}
import _root_.android.util.Log
import _root_.java.io.{InputStream, OutputStream, OutputStreamWriter, PrintWriter}
import _root_.java.io.{InputStream, OutputStream}
class KenwoodTnc(service : AprsService, prefs : PrefsWrapper) extends BluetoothTnc(service, prefs) {
override val TAG = "APRSdroid.KenwoodTnc"
val locMan = service.getSystemService(Context.LOCATION_SERVICE).asInstanceOf[LocationManager]
var output : OutputStreamWriter = null
var listener : NmeaListener = null
if (android.os.Build.VERSION.SDK_INT >= 5) {
listener = new NmeaListener()
locMan.addNmeaListener(listener)
}
override def createTncProto(is : InputStream, os : OutputStream) = {
output = new OutputStreamWriter(os)
new KenwoodProto(is)
new KenwoodProto(service, is, os)
}
class NmeaListener extends GpsStatus.NmeaListener() {
def onNmeaReceived(timestamp : Long, nmea : String) {
if (output != null && (nmea.startsWith("$GPGGA") || nmea.startsWith("$GPRMC"))) {
Log.d(TAG, "NMEA >>> " + nmea)
try {
output.write(nmea)
} catch {
case e : Exception =>
Log.e(TAG, "error sending NMEA to Kenwood: " + e)
e.printStackTrace()
}
} else
Log.d(TAG, "NMEA --- " + nmea)
}}
override def stop() {
if (android.os.Build.VERSION.SDK_INT >= 5)
locMan.removeNmeaListener(listener)
super.stop()
}
}

Wyświetl plik

@ -4,9 +4,8 @@ import _root_.java.io.{InputStream, OutputStream}
class TcpTnc(service : AprsService, prefs : PrefsWrapper) extends TcpUploader(service, prefs) {
override val TAG = "APRSdroid.TcpTnc"
val digipath = prefs.getString("digi_path", "WIDE1-1")
override def createTncProto(is : InputStream, os : OutputStream) : TncProto =
new KissProto(is, os, digipath)
new KissProto(is, os)
}

Wyświetl plik

@ -2,7 +2,6 @@ package org.aprsdroid.app
import _root_.android.app.Service
import _root_.android.content.Context
import _root_.android.location.{Location, LocationManager}
import _root_.android.util.Log
import _root_.android.widget.Toast
import _root_.java.io.{BufferedReader, File, InputStream, InputStreamReader, OutputStream, OutputStreamWriter, PrintWriter}
@ -27,20 +26,6 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsBacke
false
}
def setupFilter() : String = {
val filterdist = prefs.getStringInt("tcp.filterdist", 50)
val userfilter = prefs.getString("tcp.filter", "")
val lastloc = try {
val locMan = service.getSystemService(Context.LOCATION_SERVICE).asInstanceOf[LocationManager]
AprsPacket.formatRangeFilter(
locMan.getLastKnownLocation(PeriodicGPS.bestProvider(locMan)), filterdist)
} catch {
case e : IllegalArgumentException => ""
}
if (filterdist == 0) return " filter %s %s".format(userfilter, lastloc)
else return " filter m/%d %s %s".format(filterdist, userfilter, lastloc)
}
def createConnection() {
Log.d(TAG, "TcpUploader.createConnection: " + hostport)
conn = new TcpSocketThread(hostport)
@ -48,8 +33,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsBacke
}
def createTncProto(is : InputStream, os : OutputStream) : TncProto = {
Log.d(TAG, login + setupFilter())
new AprsIsProto(is, os, login + setupFilter())
new AprsIsProto(service, is, os)
}
def update(packet : APRSPacket) : String = {
@ -210,6 +194,8 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsBacke
def shutdown() {
Log.d(TAG, "shutdown()")
if (tnc != null)
tnc.stop()
this.synchronized {
catchLog("shutdownInput", socket.shutdownInput)
catchLog("shutdownOutput", socket.shutdownOutput)

Wyświetl plik

@ -23,8 +23,6 @@ class UsbTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBackend(pr
val ACTION_USB_ATTACHED = "android.hardware.usb.action.USB_DEVICE_ATTACHED"
val ACTION_USB_DETACHED = "android.hardware.usb.action.USB_DEVICE_DETACHED"
var digipath = prefs.getString("digi_path", "WIDE1-1")
val usbManager = service.getSystemService(Context.USB_SERVICE).asInstanceOf[UsbManager];
var thread : UsbThread = null
var dev : UsbDevice = null
@ -79,7 +77,7 @@ class UsbTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBackend(pr
for ((name, dev) <- dl) {
val deviceVID = dev.getVendorId()
val devicePID = dev.getProductId()
if (UsbSerialDevice.isDeviceSupported(dev)) {
if (UsbSerialDevice.isSupported(dev)) {
// this is not a USB Hub
log("Found USB device %04x:%04x, requesting permissions.".format(deviceVID, devicePID))
this.dev = dev
@ -92,10 +90,6 @@ class UsbTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBackend(pr
}
def update(packet : APRSPacket) : String = {
// the digipeater setting here is a duplicate just for log purpose
packet.setDigipeaters(Digipeater.parseList(digipath, true))
Log.d(TAG, "UsbTnc.update: " + packet)
//TODO
proto.writePacket(packet)
"USB OK"
}
@ -156,7 +150,7 @@ class UsbTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBackend(pr
Thread.sleep(initdelay)
}
}
proto = new KissProto(new SerialInputStream(ser), os, digipath)
proto = new KissProto(new SerialInputStream(ser), os)
service.postPosterStarted()
while (running) {
val line = proto.readPacket()
@ -164,6 +158,7 @@ class UsbTnc(service : AprsService, prefs : PrefsWrapper) extends AprsBackend(pr
service.postSubmit(line)
}
Log.d(TAG, "terminate()")
proto.stop()
}

Wyświetl plik

@ -3,12 +3,13 @@ import _root_.java.io.{BufferedReader, InputStream, InputStreamReader, OutputStr
import _root_.net.ab0oo.aprs.parser._
class AprsIsProto(is : InputStream, os : OutputStream, login : String) extends TncProto(is, os) {
class AprsIsProto(service : AprsService, is : InputStream, os : OutputStream) extends TncProto(is, os) {
val loginfilter = service.prefs.getLoginString() + service.prefs.getFilterString(service)
val reader = new BufferedReader(new InputStreamReader(is), 256)
val writer = new PrintWriter(new OutputStreamWriter(os), true)
writer.println(login)
writer.println(loginfilter)
def readPacket() : String = reader.readLine()
def writePacket(p : APRSPacket) = writer.println(p)

Wyświetl plik

@ -1,13 +1,26 @@
package org.aprsdroid.app
import _root_.android.content.Context
import _root_.android.location.{GpsStatus, LocationManager}
import _root_.android.util.Log
import _root_.java.io.{BufferedReader, InputStream, InputStreamReader, OutputStream}
import _root_.android.os.{Handler, Looper}
import _root_.java.io.{BufferedReader, InputStream, InputStreamReader, OutputStream, OutputStreamWriter}
import _root_.net.ab0oo.aprs.parser._
class KenwoodProto(is : InputStream) extends TncProto(is, null) {
class KenwoodProto(service : AprsService, is : InputStream, os : OutputStream) extends TncProto(is, null) {
val TAG = "APRSdroid.KenwoodProto"
val br = new BufferedReader(new InputStreamReader(is))
val locMan = service.getSystemService(Context.LOCATION_SERVICE).asInstanceOf[LocationManager]
val output = new OutputStreamWriter(os)
var listener : NmeaListener = null
if (android.os.Build.VERSION.SDK_INT >= 5) {
new Handler(Looper.getMainLooper()).post(new Runnable() { override def run() {
listener = new NmeaListener()
locMan.addNmeaListener(listener)
}})
}
def wpl2aprs(line : String) = {
val s = line.split("[,*]") // get and split nmea
@ -36,5 +49,26 @@ class KenwoodProto(is : InputStream) extends TncProto(is, null) {
def writePacket(p : APRSPacket) {
// don't do anything. yet.
}
class NmeaListener extends GpsStatus.NmeaListener() {
def onNmeaReceived(timestamp : Long, nmea : String) {
if (output != null && (nmea.startsWith("$GPGGA") || nmea.startsWith("$GPRMC"))) {
Log.d(TAG, "NMEA >>> " + nmea)
try {
output.write(nmea)
} catch {
case e : Exception =>
Log.e(TAG, "error sending NMEA to Kenwood: " + e)
e.printStackTrace()
}
} else
Log.d(TAG, "NMEA --- " + nmea)
}}
override def stop() {
if (android.os.Build.VERSION.SDK_INT >= 5)
locMan.removeNmeaListener(listener)
super.stop()
}
}

Wyświetl plik

@ -5,7 +5,7 @@ import _root_.java.io.{InputStream, OutputStream}
import _root_.net.ab0oo.aprs.parser._
class KissProto(is : InputStream, os : OutputStream, digipath : String) extends TncProto(is, os) {
class KissProto(is : InputStream, os : OutputStream) extends TncProto(is, os) {
val TAG = "APRSdroid.KissProto"
object Kiss {
@ -63,7 +63,6 @@ class KissProto(is : InputStream, os : OutputStream, digipath : String) extends
}
def writePacket(p : APRSPacket) {
p.setDigipeaters(Digipeater.parseList(digipath, true))
Log.d(TAG, "writePacket: " + p)
os.write(Kiss.FEND)
os.write(Kiss.CMD_DATA)

Wyświetl plik

@ -6,4 +6,5 @@ import _root_.net.ab0oo.aprs.parser._
abstract class TncProto(is : InputStream, os : OutputStream) {
def readPacket() : String
def writePacket(p : APRSPacket)
def stop() {}
}