aboutsummaryrefslogtreecommitdiff
path: root/vfd-backend/app
diff options
context:
space:
mode:
Diffstat (limited to 'vfd-backend/app')
-rw-r--r--vfd-backend/app/controllers/Application.scala28
-rw-r--r--vfd-backend/app/plugins/UavClientConnection.scala33
-rw-r--r--vfd-backend/app/plugins/UavPlugin.scala47
-rw-r--r--vfd-backend/app/views/main.scala.html52
-rw-r--r--vfd-backend/app/views/uav.scala.html37
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>
-}
-