diff options
Diffstat (limited to 'vfd-backend/app')
-rw-r--r-- | vfd-backend/app/controllers/Application.scala | 28 | ||||
-rw-r--r-- | vfd-backend/app/plugins/UavClientConnection.scala | 33 | ||||
-rw-r--r-- | vfd-backend/app/plugins/UavPlugin.scala | 47 | ||||
-rw-r--r-- | vfd-backend/app/views/main.scala.html | 52 | ||||
-rw-r--r-- | vfd-backend/app/views/uav.scala.html | 37 |
5 files changed, 0 insertions, 197 deletions
diff --git a/vfd-backend/app/controllers/Application.scala b/vfd-backend/app/controllers/Application.scala deleted file mode 100644 index 827950e..0000000 --- a/vfd-backend/app/controllers/Application.scala +++ /dev/null @@ -1,28 +0,0 @@ -package controllers - -import util._ -import play.api._ -import play.api.mvc._ -import play.api.Play.current -import play.api.mvc.WebSocket.FrameFormatter - -import play.api.libs.json._ -import plugins.UavPlugin - -object Application extends Controller { - - private def plugin = current.plugin[UavPlugin].getOrElse(throw new RuntimeException("UAV plugin is not available")) - - def index = Action { implicit request => - Redirect(routes.Application.uav(0)) - } - - def uav(remoteSystemId: Int) = Action { implicit request => - Ok(views.html.uav(routes.Application.mavlink.webSocketURL(), remoteSystemId.toByte, plugin.systemId, 0.toByte)) - } - - def mavlink = WebSocket.acceptWithActor[Array[Byte], Array[Byte]] { implicit request => - out => plugin.register(out) - } - -}
\ No newline at end of file diff --git a/vfd-backend/app/plugins/UavClientConnection.scala b/vfd-backend/app/plugins/UavClientConnection.scala deleted file mode 100644 index 76975e1..0000000 --- a/vfd-backend/app/plugins/UavClientConnection.scala +++ /dev/null @@ -1,33 +0,0 @@ -package plugins - -import akka.actor.Actor -import akka.actor.ActorLogging -import akka.actor.ActorRef -import akka.actor.actorRef2Scala -import vfd.uav.Connection -import akka.util.ByteString - -/** - * Interfaces traffic from a websocket with a connection to a UAV. - */ -class UavClientConnection(websocket: ActorRef, uav: ActorRef) extends Actor with ActorLogging { - - override def preStart = { - uav ! Connection.Register - } - - def receive = { - - case Connection.Received(bstr) => - websocket ! bstr.toArray - - case Connection.Closed(msg) => - log.warning(msg) - context stop self - - case fromClient: Array[Byte] => - uav ! Connection.Send(ByteString(fromClient)) - - } - -}
\ No newline at end of file diff --git a/vfd-backend/app/plugins/UavPlugin.scala b/vfd-backend/app/plugins/UavPlugin.scala deleted file mode 100644 index 9b45627..0000000 --- a/vfd-backend/app/plugins/UavPlugin.scala +++ /dev/null @@ -1,47 +0,0 @@ -package plugins - -import akka.actor.ActorRef -import akka.actor.Props -import play.api.Application -import play.api.Plugin -import play.api.libs.concurrent.Akka -import vfd.uav.MockConnection -import vfd.uav.SerialConnection - -class UavPlugin(app: Application) extends Plugin { - - private lazy val config = app.configuration.getConfig("uav") - - lazy val systemId = config.flatMap(_.getInt("system_id")).getOrElse(1).toByte - - private lazy val connection = { - val conn = config.flatMap(_.getConfig("connection")) - val tpe = conn.flatMap(_.getString("type")).getOrElse("mock") - val heartbeat = conn.flatMap(_.getInt("heartbeat")).getOrElse(2000) - val compId = conn.flatMap(_.getInt("component_id")).getOrElse(1).toByte - - val props = tpe match { - case "mock" => - val remote = config.flatMap(_.getInt("mock.remote_system_id")).getOrElse(42).toByte - MockConnection(systemId, compId, remote) - - case "serial" => - val serial = config.flatMap(_.getConfig("serial")) - SerialConnection( - systemId, - compId, - heartbeat, - serial.flatMap(_.getString("port")).getOrElse("/dev/ttyUSB0"), - serial.flatMap(_.getInt("baud")).getOrElse(115200), - serial.flatMap(_.getBoolean("two_stop_bits")).getOrElse(false), - serial.flatMap(_.getInt("parity")).getOrElse(0)) - - case unknown => throw new IllegalArgumentException("Unsupported connection type '" + unknown + "'") - } - - Akka.system(app).actorOf(props, name = "uav-connection") - } - - def register(websocket: ActorRef): Props = Props(classOf[UavClientConnection], websocket, connection) - -}
\ No newline at end of file diff --git a/vfd-backend/app/views/main.scala.html b/vfd-backend/app/views/main.scala.html deleted file mode 100644 index 1be335b..0000000 --- a/vfd-backend/app/views/main.scala.html +++ /dev/null @@ -1,52 +0,0 @@ -@(title: String, info: String)(content: Html) - -<!DOCTYPE html> - -<html lang="en"> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>VFD - @title</title> - - <link rel="shortcut icon" href="@routes.Assets.at("images/logo.svg")"> - <link rel="stylesheet" media="screen" href="@routes.Assets.at("lib/bootstrap/css/bootstrap.min.css")"> - <link rel="stylesheet" media="screen" href="@routes.Assets.at("lib/font-awesome/css/font-awesome.min.css")"> - <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> -</head> -<body> - <header> - <nav class="navbar navbar-inverse navbar-static-top" role="navigation"> - <div class="container-fluid"> - <!-- Brand and toggle get grouped for better mobile display --> - <div class="navbar-header"> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-main-collapse"> - <span class="sr-only">Toggle navigation</span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="navbar-brand" href="@routes.Application.index"> - <!-- <img style="max-height: 100%;" src="@routes.Assets.at("images/logo-invert.svg")" alt="logo"> --> - Flight Control Panel - </a> - </div> - - <!-- Collect the nav links, forms, and other content for toggling --> - <div class="collapse navbar-collapse" id="navbar-main-collapse"> - <div class="nav navbar-nav navbar-right"> - <p class="navbar-text">@info</p> - </div> - </div><!-- /.navbar-collapse --> - </div><!-- /.container-fluid --> - </nav> - </header> - - @content - - <script type="text/javascript" src="@routes.Assets.at("lib/jquery/jquery.js")"></script> - <script type="text/javascript" src="@routes.Assets.at("lib/bootstrap/js/bootstrap.min.js")"></script> - <script type="text/javascript" src="@routes.Assets.at("lib/vfd-frontend-fastopt.js")"></script> - -</body> -</html>
\ No newline at end of file diff --git a/vfd-backend/app/views/uav.scala.html b/vfd-backend/app/views/uav.scala.html deleted file mode 100644 index 0ce7927..0000000 --- a/vfd-backend/app/views/uav.scala.html +++ /dev/null @@ -1,37 +0,0 @@ -@(socket: String, remoteSystemId: Byte, systemId: Byte, componentId: Byte) - -@main("Main", "Remote System " + remoteSystemId){ - - <div id="scalajsError" class="alert alert-danger" style="display: none;"> - <p><strong><i class="fa fa-bug"></i> Error! </strong> An uncaught exception occurred in the browser application, - any information displayed on this website may be corrupt. This is NOT an error that should occur under normal - operation, it is an indication of a bug in the software.</p> - <p>The error was: "<span id="scalajsErrorMessage"></span>" - </p> - </div> - - <div - id="app" - data-socketUrl="@socket" - data-remoteSystemId="@remoteSystemId.toString" - data-systemId="@systemId.toString" - data-componentId="@componentId.toString"> - <div class="loader"> - <i class="fa fa-spinner fa-spin"></i> - </div> - </div> - - <script type="text/javascript"> - window.onload = function () { - try { - var launcher = new Launcher('app', '@routes.Assets.at("")'); - launcher.main(); - } catch(err) { - document.getElementById("scalajsError").style.display = "block"; - document.getElementById("scalajsErrorMessage").innerHTML = err; - console.error(err) - } - } - </script> -} - |