aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2015-04-25 12:45:53 +0200
committerJakob Odersky <jodersky@gmail.com>2015-04-25 12:45:53 +0200
commit5f4f22596a390d9b83a8b6970765a08fce08ed33 (patch)
tree9c5d3c993ca0262ba850afb80e336e83281736f7
parent48757c50bc829dc29e8c252e1b3085445bb717df (diff)
downloadmavigator-5f4f22596a390d9b83a8b6970765a08fce08ed33.tar.gz
mavigator-5f4f22596a390d9b83a8b6970765a08fce08ed33.tar.bz2
mavigator-5f4f22596a390d9b83a8b6970765a08fce08ed33.zip
add debounce time to packet statistics
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala35
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala22
2 files changed, 35 insertions, 22 deletions
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala
index fb1856c..2fe8262 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala
+++ b/vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala
@@ -2,29 +2,36 @@ package vfd.dashboard
import scala.scalajs.js
import scala.scalajs.js.Any.fromFunction1
-
import org.mavlink.Packet
import org.mavlink.Parser
import org.mavlink.Parser.Errors._
import org.mavlink.messages.Message
import org.scalajs.dom
-
-import rx.core.Rx
-import rx.core.Var
-import rx.ops.RxOps
+import scala.concurrent.duration._
+import rx._
+import rx.ops._
+import scala.concurrent.ExecutionContext.Implicits.global
class MavlinkSocket(url: String, val remoteSystemId: Int) {
+ implicit val scheduler = new DomScheduler
lazy val packet: Var[Packet] = Var(Packet.empty)
lazy val message: Rx[Message] = packet.map{p =>
Message.unpack(p.messageId, p.payload)
}
-
+
object stats {
- val crcErrors = Var(0)
- val overflows = Var(0)
- val wrongIds = Var(0)
- val packets = Var(0)
+ private val DebounceTime = 1.seconds
+
+ private[MavlinkSocket] val _crcErrors = Var(0)
+ private[MavlinkSocket] val _overflows = Var(0)
+ private[MavlinkSocket] val _wrongIds = Var(0)
+ private[MavlinkSocket] val _packets = Var(0)
+
+ val crcErrors = _crcErrors.debounce(DebounceTime)
+ val overflows = _overflows.debounce(DebounceTime)
+ val wrongIds = _wrongIds.debounce(DebounceTime)
+ val packets = _packets.debounce(DebounceTime)
val open = Var(false)
}
@@ -32,13 +39,13 @@ class MavlinkSocket(url: String, val remoteSystemId: Int) {
{
case pckt@Packet(seq, `remoteSystemId`, compId, msgId, payload) =>
packet() = pckt
- stats.packets() += 1
+ stats._packets() += 1
case _ =>
- stats.wrongIds() += 1
+ stats._wrongIds() += 1
},
{
- case CrcError => stats.crcErrors() += 1
- case OverflowError => stats.overflows() += 1
+ case CrcError => stats._crcErrors() += 1
+ case OverflowError => stats._overflows() += 1
})
private val connection = new dom.WebSocket(url)
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
index b3c9387..8bc35cd 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
+++ b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
@@ -63,7 +63,13 @@ class Layout(socket: MavlinkSocket)(implicit env: Environment) {
})
val powerDistribution = new Distribution(
socket.message.collect((0.0, 0.0, 0.0, 0.0)) {
- case s: ServoOutputRaw => (s.servo1Raw, s.servo2Raw, s.servo3Raw, s.servo4Raw)
+ case s: ServoOutputRaw =>
+ (
+ 1.0 * (s.servo1Raw - 1000) / 1000,
+ 1.0 * (s.servo2Raw - 1000) / 1000,
+ 1.0 * (s.servo3Raw - 1000) / 1000,
+ 1.0 * (s.servo4Raw - 1000) / 1000
+ )
}
)
val batteryLevel = new Bar(
@@ -100,21 +106,21 @@ class Layout(socket: MavlinkSocket)(implicit env: Environment) {
tbody(
tr(
td("OK"),
- Rx{td(socket.stats.packets())},
+ Rx { td(socket.stats.packets()) },
td("CRC"),
- Rx{td(socket.stats.crcErrors())},
+ Rx { td(socket.stats.crcErrors()) },
td("OFLW"),
- Rx{td(socket.stats.overflows())},
+ Rx { td(socket.stats.overflows()) },
td("BID"),
- Rx{td(socket.stats.wrongIds())}
+ Rx { td(socket.stats.wrongIds()) }
),
tr(
td("Ratio"),
- Rx{
+ Rx {
import socket.stats._
- val sum = packets() + crcErrors() + overflows() + wrongIds()
+ val sum = packets() + crcErrors() + overflows() + wrongIds()
td(1.0 * packets() / sum formatted "%.2f")
- },
+ },
td(),
td(),
td(),