diff options
Diffstat (limited to 'mavigator-uav/src/main/scala/mavigator/uav/Uav.scala')
-rw-r--r-- | mavigator-uav/src/main/scala/mavigator/uav/Uav.scala | 49 |
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) + +} |