diff options
author | Jakob Odersky <jodersky@gmail.com> | 2015-03-20 12:07:41 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2015-03-20 12:07:41 +0100 |
commit | 3147aba7dc79e64d2da50d7d1c705bfd0e99eeca (patch) | |
tree | 6c0babfa3e227e3407a0fe250059724f303ad08a /mavlink-library/src/main | |
parent | 1cf6e37dc356144f3da2a2dcde75d1ced8bc5ad6 (diff) | |
download | sbt-mavlink-3147aba7dc79e64d2da50d7d1c705bfd0e99eeca.tar.gz sbt-mavlink-3147aba7dc79e64d2da50d7d1c705bfd0e99eeca.tar.bz2 sbt-mavlink-3147aba7dc79e64d2da50d7d1c705bfd0e99eeca.zip |
implement testing
Diffstat (limited to 'mavlink-library/src/main')
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 |