blob: 8f8c083cf0cf7e533ed98d984bf2123f2f24ccbe (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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 //TODO: use source instead of hardcoded value
)
}
}
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)
}
|