aprsdroid/src/backend/AfskUploader.scala

44 wiersze
1.4 KiB
Scala
Czysty Zwykły widok Historia

package org.aprsdroid.app
import _root_.android.util.Log
import _root_.java.net.{InetAddress, DatagramSocket, DatagramPacket}
2012-01-15 19:11:47 +00:00
import _root_.net.ab0oo.aprs.parser.{APRSPacket, Digipeater, Parser}
import com.nogy.afu.soundmodem.{Message, APRSFrame, Afsk}
2012-01-15 19:11:47 +00:00
import com.jazzido.PacketDroid.{AudioBufferProcessor, PacketCallback}
class AfskUploader(service : AprsService, prefs : PrefsWrapper) extends AprsIsUploader(prefs)
with PacketCallback {
2011-07-01 20:21:16 +00:00
val TAG = "APRSdroid.Afsk"
2011-04-26 16:39:31 +00:00
// frame prefix: bytes = milliseconds * baudrate / 8 / 1000
var FrameLength = prefs.getStringInt("afsk.prefix", 1000)*1200/8/1000
2011-02-19 00:52:35 +00:00
var Digis = prefs.getString("digi_path", "WIDE1-1")
val output = new Afsk()
2012-01-15 19:11:47 +00:00
val abp = new AudioBufferProcessor(this)
2012-01-15 19:11:47 +00:00
def start() = {
abp.start()
true
}
2011-06-18 20:06:19 +00:00
def update(packet : APRSPacket) : String = {
// Need to "parse" the packet in order to replace the Digipeaters
2012-01-15 13:05:20 +00:00
packet.setDigipeaters(Digipeater.parseList(Digis, true))
2011-06-18 20:06:19 +00:00
val from = packet.getSourceCall()
val to = packet.getDestinationCall()
val data = packet.getAprsInformation().toString()
2010-09-13 13:13:50 +00:00
val msg = new APRSFrame(from,to,Digis,data,FrameLength).getMessage()
output.sendMessage(msg)
2010-09-13 13:13:50 +00:00
Log.d(TAG, "update(): From: " + from +" To: "+ to +" Via: " + Digis + " telling " + data)
"AFSK OK"
}
def stop() {
2012-01-15 19:11:47 +00:00
abp.stopRecording()
}
2012-01-15 19:11:47 +00:00
def received(data : Array[Byte]) {
service.postSubmit(Parser.parseAX25(data).toString().trim())
}
}