diff --git a/src/AprsPacket.scala b/src/AprsPacket.scala index a1b3a4b..9c2469d 100644 --- a/src/AprsPacket.scala +++ b/src/AprsPacket.scala @@ -54,12 +54,12 @@ object AprsPacket { } def formatLoc(callssid : String, toCall : String, symbol : String, - status : String, location : Location) : String = { - callssid + ">" + toCall + ",TCPIP*:" + new PositionPacket( + status : String, location : Location) = { + new APRSPacket(callssid, toCall, null, new PositionPacket( new Position(location.getLatitude, location.getLongitude, 0, symbol(0), symbol(1)), formatCourseSpeed(location) + formatAltitude(location) + - " " + status) + " " + status)) } def formatLogin(callsign : String, ssid : String, passcode : String, version : String) : String = { diff --git a/src/AprsService.scala b/src/AprsService.scala index 1d37742..c5eb4c1 100644 --- a/src/AprsService.scala +++ b/src/AprsService.scala @@ -222,9 +222,9 @@ class AprsService extends Service with LocationListener { val result = try { val status = poster.update(packet) i.putExtra(STATUS, status) - i.putExtra(PACKET, packet) + i.putExtra(PACKET, packet.toString) val prec_status = "%s (±%dm)".format(status, location.getAccuracy.asInstanceOf[Int]) - addPost(StorageDatabase.Post.TYPE_POST, prec_status, packet) + addPost(StorageDatabase.Post.TYPE_POST, prec_status, packet.toString) prec_status } catch { case e : Exception => diff --git a/src/backend/AfskUploader.scala b/src/backend/AfskUploader.scala index 42ffb49..66a87ea 100644 --- a/src/backend/AfskUploader.scala +++ b/src/backend/AfskUploader.scala @@ -2,6 +2,7 @@ package org.aprsdroid.app import _root_.android.util.Log import _root_.java.net.{InetAddress, DatagramSocket, DatagramPacket} +import _root_.net.ab0oo.aprs.APRSPacket import com.nogy.afu.soundmodem.{Message, APRSFrame, Afsk} class AfskUploader(prefs : PrefsWrapper) extends AprsIsUploader(prefs) { @@ -13,11 +14,11 @@ class AfskUploader(prefs : PrefsWrapper) extends AprsIsUploader(prefs) { def start() { } - def update(packet : String) : String = { + def update(packet : APRSPacket) : String = { // Need to "parse" the packet in order to replace the Digipeaters - val Array(from, to_data) = packet.split(">", 2) - val Array(to_digis, data) = to_data.split(":", 2) - val Array(to, digis) = to_digis.split(",", 2) + val from = packet.getSourceCall() + val to = packet.getDestinationCall() + val data = packet.getAprsInformation().toString() val msg = new APRSFrame(from,to,Digis,data,FrameLength).getMessage() val mod = new Afsk() mod.sendMessage(msg) diff --git a/src/backend/AprsIsUploader.scala b/src/backend/AprsIsUploader.scala index b867e88..f3bd700 100644 --- a/src/backend/AprsIsUploader.scala +++ b/src/backend/AprsIsUploader.scala @@ -1,5 +1,6 @@ package org.aprsdroid.app +import _root_.net.ab0oo.aprs.APRSPacket object AprsIsUploader { val DEFAULT_CONNTYPE = "tcp" @@ -17,7 +18,7 @@ abstract class AprsIsUploader(prefs : PrefsWrapper) { def start() - def update(packet : String) : String + def update(packet : APRSPacket) : String def stop() } diff --git a/src/backend/HttpPostUploader.scala b/src/backend/HttpPostUploader.scala index 5658808..ccef8b8 100644 --- a/src/backend/HttpPostUploader.scala +++ b/src/backend/HttpPostUploader.scala @@ -2,6 +2,7 @@ package org.aprsdroid.app import _root_.android.location.Location import _root_.android.util.Log +import _root_.net.ab0oo.aprs.APRSPacket import _root_.org.apache.http._ import _root_.org.apache.http.entity.StringEntity import _root_.org.apache.http.impl.client.DefaultHttpClient @@ -25,7 +26,7 @@ class HttpPostUploader(prefs : PrefsWrapper) extends AprsIsUploader(prefs) { "HTTP " + response.getStatusLine().getReasonPhrase() } - def update(packet : String) : String = { + def update(packet : APRSPacket) : String = { var hostname = host if (hostname.indexOf(":") == -1) { hostname = "http://" + hostname + ":8080/" diff --git a/src/backend/TcpUploader.scala b/src/backend/TcpUploader.scala index 68699e1..5724714 100644 --- a/src/backend/TcpUploader.scala +++ b/src/backend/TcpUploader.scala @@ -5,6 +5,7 @@ import _root_.android.location.{Location, LocationManager} import _root_.android.util.Log import _root_.java.io.{BufferedReader, InputStreamReader, OutputStreamWriter, PrintWriter} import _root_.java.net.{InetAddress, Socket} +import _root_.net.ab0oo.aprs.APRSPacket class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUploader(prefs) { val TAG = "TcpUploader" @@ -33,7 +34,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl conn.start() } - def update(packet : String) : String = { + def update(packet : APRSPacket) : String = { Log.d(TAG, "TcpUploader.update: " + packet) conn.update(packet) } @@ -110,7 +111,7 @@ class TcpUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUpl Log.d(TAG, "TcpSocketThread.terminate()") } - def update(packet : String) : String = { + def update(packet : APRSPacket) : String = { if (socket != null && socket.isConnected()) { writer.println(packet) "TCP OK" diff --git a/src/backend/UdpUploader.scala b/src/backend/UdpUploader.scala index 43928ff..8a04680 100644 --- a/src/backend/UdpUploader.scala +++ b/src/backend/UdpUploader.scala @@ -3,6 +3,7 @@ package org.aprsdroid.app import _root_.android.location.Location import _root_.android.util.Log import _root_.java.net.{InetAddress, DatagramSocket, DatagramPacket} +import _root_.net.ab0oo.aprs.APRSPacket class UdpUploader(prefs : PrefsWrapper) extends AprsIsUploader(prefs) { val TAG = "AprsUdp" @@ -12,7 +13,7 @@ class UdpUploader(prefs : PrefsWrapper) extends AprsIsUploader(prefs) { def start() { } - def update(packet : String) : String = { + def update(packet : APRSPacket) : String = { val (h, port) = AprsPacket.parseHostPort(host, 8080) val addr = InetAddress.getByName(h) val pbytes = (login + "\r\n" + packet + "\r\n").getBytes()