aboutsummaryrefslogtreecommitdiff
path: root/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2016-04-18 03:15:43 -0700
committerJakob Odersky <jakob@odersky.com>2016-04-18 03:15:43 -0700
commit05f2776ccb9989dbc359276c5c36c46d8282fc8f (patch)
tree931bd6728602694ebefbc52351287d0b08657aba /mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
parentea468fe2af5dbc674c08e2f2c1d6766e6596f9a1 (diff)
downloadmavigator-05f2776ccb9989dbc359276c5c36c46d8282fc8f.tar.gz
mavigator-05f2776ccb9989dbc359276c5c36c46d8282fc8f.tar.bz2
mavigator-05f2776ccb9989dbc359276c5c36c46d8282fc8f.zip
Implement serial backend
Diffstat (limited to 'mavigator-uav/src/main/scala/mavigator/uav/Uav.scala')
-rw-r--r--mavigator-uav/src/main/scala/mavigator/uav/Uav.scala36
1 files changed, 17 insertions, 19 deletions
diff --git a/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala b/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
index 8f8c083..1387983 100644
--- a/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
+++ b/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
@@ -2,40 +2,38 @@ package mavigator
package uav
import java.lang.IllegalArgumentException
-import mock._
+
import akka._
import akka.actor._
-import akka.util._
+import akka.stream.ActorMaterializer
import akka.stream.scaladsl._
+import akka.util._
+import mock._
+import serial._
+
+//TODO: the whole backend system feels hacky, it probably needs a major redesign
class Uav(system: ExtendedActorSystem) extends Extension {
+ private val materializer = ActorMaterializer()(system)
+
private lazy val config = system.settings.config.getConfig("mavigator.uav")
private lazy val tpe = config.getString("type")
- private lazy val componentId = config.getInt("componentId").toByte
- private lazy val heartbeat = config.getInt("heartbeat")
- private lazy val connection = config.getConfig(tpe)
- lazy val source = tpe match {
- case "mock" =>
- new MockConnection(
- connection.getInt("remote_system_id").toByte,
- componentId,
- connection.getDouble("prescaler")
- )
-
- case "serial" => ???
+ private lazy val core = new Core()(system, materializer)
+ lazy val backend: Backend = tpe match {
+ case "mock" => MockBackend
+ case "serial" => SerialBackend
case _ => throw new IllegalArgumentException(s"Unsupported connection type: $tpe")
}
- def connect(): Flow[ByteString, ByteString, NotUsed] = {
- Flow.fromSinkAndSource(
- Sink.ignore,
- (new MockConnection(0,0,1)).data //TODO: use source instead of hardcoded value
- )
+ def init(): Unit = {
+ backend.init(core)
}
+ def connect(): Flow[ByteString, ByteString, NotUsed] = core.connect()
+
}
object Uav extends ExtensionId[Uav] with ExtensionIdProvider {