diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-04-18 03:15:43 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-04-18 03:15:43 -0700 |
commit | 05f2776ccb9989dbc359276c5c36c46d8282fc8f (patch) | |
tree | 931bd6728602694ebefbc52351287d0b08657aba /mavigator-uav/src/main/scala/mavigator/uav/Uav.scala | |
parent | ea468fe2af5dbc674c08e2f2c1d6766e6596f9a1 (diff) | |
download | mavigator-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.scala | 36 |
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 { |