aboutsummaryrefslogtreecommitdiff
path: root/mavlink-library/src/main
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2015-03-20 12:07:41 +0100
committerJakob Odersky <jodersky@gmail.com>2015-03-20 12:07:41 +0100
commit3147aba7dc79e64d2da50d7d1c705bfd0e99eeca (patch)
tree6c0babfa3e227e3407a0fe250059724f303ad08a /mavlink-library/src/main
parent1cf6e37dc356144f3da2a2dcde75d1ced8bc5ad6 (diff)
downloadsbt-mavlink-3147aba7dc79e64d2da50d7d1c705bfd0e99eeca.tar.gz
sbt-mavlink-3147aba7dc79e64d2da50d7d1c705bfd0e99eeca.tar.bz2
sbt-mavlink-3147aba7dc79e64d2da50d7d1c705bfd0e99eeca.zip
implement testing
Diffstat (limited to 'mavlink-library/src/main')
-rw-r--r--mavlink-library/src/main/twirl/org/mavlink/Assembler.scala.txt2
-rw-r--r--mavlink-library/src/main/twirl/org/mavlink/MavlinkBuffer.scala.txt2
-rw-r--r--mavlink-library/src/main/twirl/org/mavlink/Packet.scala.txt29
-rw-r--r--mavlink-library/src/main/twirl/org/mavlink/Parser.scala.txt2
4 files changed, 25 insertions, 10 deletions
diff --git a/mavlink-library/src/main/twirl/org/mavlink/Assembler.scala.txt b/mavlink-library/src/main/twirl/org/mavlink/Assembler.scala.txt
index e3571e6..fc5becf 100644
--- a/mavlink-library/src/main/twirl/org/mavlink/Assembler.scala.txt
+++ b/mavlink-library/src/main/twirl/org/mavlink/Assembler.scala.txt
@@ -15,5 +15,5 @@ class Assembler(systemId: Byte, componentId: Byte) {
val p = Packet(seq.toByte, systemId, componentId, messageId, payload)
seq += 1
p
- }
+ }
} \ No newline at end of file
diff --git a/mavlink-library/src/main/twirl/org/mavlink/MavlinkBuffer.scala.txt b/mavlink-library/src/main/twirl/org/mavlink/MavlinkBuffer.scala.txt
index 9a01dbe..ebcd643 100644
--- a/mavlink-library/src/main/twirl/org/mavlink/MavlinkBuffer.scala.txt
+++ b/mavlink-library/src/main/twirl/org/mavlink/MavlinkBuffer.scala.txt
@@ -5,7 +5,7 @@ import java.nio.ByteBuffer
import java.nio.ByteOrder
/** Utility functions for using ByteBuffers. */
-class MavlinkBuffer {
+object MavlinkBuffer {
/**
* Allocates a ByteBuffer for using in MAVLink message processing.
diff --git a/mavlink-library/src/main/twirl/org/mavlink/Packet.scala.txt b/mavlink-library/src/main/twirl/org/mavlink/Packet.scala.txt
index a0d11a5..6802a0a 100644
--- a/mavlink-library/src/main/twirl/org/mavlink/Packet.scala.txt
+++ b/mavlink-library/src/main/twirl/org/mavlink/Packet.scala.txt
@@ -20,21 +20,33 @@ case class Packet(
payload: ByteBuffer
) {
- /*
- def crc = {
+ lazy val crc = {
var c = new Crc()
- c = c.accumulate(payload.length.toByte)
+ c = c.accumulate(payload.remaining.toByte)
c = c.accumulate(seq)
c = c.accumulate(systemId)
c = c.accumulate(componentId)
c = c.accumulate(messageId)
- while (payload.)
- for (p <- payload) {
- c = c.accumulate(p)
+ while (payload.hasRemaining) {
+ c = c.accumulate(payload.get())
}
c = c.accumulate(Packet.extraCrc(messageId))
c
- }*/
+ }
+
+ def writeTo(out: Array[Byte], offset: Int = 0): Unit = {
+ out(offset) = Packet.Stx
+ out(offset+1) = payload.remaining.toByte
+ out(offset+2) = seq
+ out(offset+3) = systemId
+ out(offset+4) = componentId
+ out(offset+5) = messageId
+ val r = payload.remaining()
+ payload.get(out, 0, out.length)
+ out(offset + r) = crc.lsb
+ out(offset + r + 1) = crc.msb
+ }
+
}
object Packet {
@@ -45,6 +57,9 @@ object Packet {
/** Maximum length of a payload contained in a packet. */
final val MaxPayloadLength: Int = @__maxPayloadLength
+ /** Maximum over-the-wire size of a packet, i.e. the maximum payload length plus header and footer data. */
+ final val MaxPacketLength: Int = MaxPayloadLength + 8
+
/** Additional CRCs indexed by message ID (see MAVLink specification). */
final val ExtraCrcs: Seq[Byte] = Array[Byte](
@__extraCrcs.map(_ formatted "%3d").grouped(10).map(_.mkString(",")).mkString(",\n ")
diff --git a/mavlink-library/src/main/twirl/org/mavlink/Parser.scala.txt b/mavlink-library/src/main/twirl/org/mavlink/Parser.scala.txt
index ca04ae1..81affc5 100644
--- a/mavlink-library/src/main/twirl/org/mavlink/Parser.scala.txt
+++ b/mavlink-library/src/main/twirl/org/mavlink/Parser.scala.txt
@@ -40,7 +40,7 @@ object Parser {
* @@param receiver called when a valid packet has been received
* @@param error called when invalid data was received
*/
-class Parser(payload: ByteBuffer, receiver: Packet => Unit, error: Parser.Errors.Error => Unit = _ => ()) {
+class Parser(payload: ByteBuffer)(receiver: Packet => Unit, error: Parser.Errors.Error => Unit = _ => ()) {
import Parser._
private var state: States.State = States.Idle