diff --git a/src/AprsPacket.scala b/src/AprsPacket.scala index c541280..96f1894 100644 --- a/src/AprsPacket.scala +++ b/src/AprsPacket.scala @@ -4,6 +4,7 @@ import _root_.android.location.Location import _root_.net.ab0oo.aprs._ object AprsPacket { + val QRG_RE = ".*?(\\d{2,3}[.,]\\d{3,4}).*?".r def passcode(callssid : String) : Int = { // remove ssid, uppercase, add \0 for odd-length calls @@ -72,6 +73,13 @@ object AprsPacket { "" } + def parseQrg(comment : String) : String = { + comment match { + case QRG_RE(qrg) => qrg + case _ => null + } + } + def parseHostPort(hostport : String, defaultport : Int) : (String, Int) = { val splits = hostport.split(":") if (splits.length == 2) diff --git a/src/StorageDatabase.scala b/src/StorageDatabase.scala index b34bbd7..32d8a8a 100644 --- a/src/StorageDatabase.scala +++ b/src/StorageDatabase.scala @@ -148,6 +148,7 @@ class StorageDatabase(context : Context) extends val lon = (pos.getLongitude()*1000000).asInstanceOf[Int] val sym = "%s%s".format(pos.getSymbolTable(), pos.getSymbolCode()) val comment = fap.getAprsInformation().getComment() + val qrg = AprsPacket.parseQrg(comment) cv.put(Position.TS, ts.asInstanceOf[java.lang.Long]) if (objectname != null) { cv.put(Position.CALL, objectname) @@ -158,6 +159,7 @@ class StorageDatabase(context : Context) extends cv.put(Position.LON, lon.asInstanceOf[java.lang.Integer]) cv.put(Position.SYMBOL, sym) cv.put(Position.COMMENT, comment) + cv.put(Position.QRG, qrg) Log.d(TAG, "got %s(%d, %d)%s -> %s".format(call, lat, lon, sym, comment)) getWritableDatabase().insertOrThrow(Position.TABLE, Position.CALL, cv) } catch {