aboutsummaryrefslogtreecommitdiff
path: root/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
diff options
context:
space:
mode:
Diffstat (limited to 'mavigator-uav/src/main/scala/mavigator/uav/Uav.scala')
-rw-r--r--mavigator-uav/src/main/scala/mavigator/uav/Uav.scala49
1 files changed, 49 insertions, 0 deletions
diff --git a/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala b/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
new file mode 100644
index 0000000..06a8f00
--- /dev/null
+++ b/mavigator-uav/src/main/scala/mavigator/uav/Uav.scala
@@ -0,0 +1,49 @@
+package mavigator
+package uav
+
+import java.lang.IllegalArgumentException
+import mock._
+import akka._
+import akka.actor._
+import akka.util._
+import akka.stream.scaladsl._
+
+class Uav(system: ExtendedActorSystem) extends Extension {
+
+ 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" => ???
+
+ 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
+ )
+ }
+
+}
+
+object Uav extends ExtensionId[Uav] with ExtensionIdProvider {
+
+ override def lookup = Uav
+
+ override def createExtension(system: ExtendedActorSystem) = new Uav(system)
+
+ def apply()(implicit system: ActorSystem) = super.apply(system)
+
+}