aboutsummaryrefslogtreecommitdiff
path: root/vfd-uav/src/main/scala/org/mavlink/BufferPayloadReader.scala
blob: c552a964d273600d09a3e28115705a22a342d061 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package org.mavlink

import java.nio.ByteBuffer
import java.nio.ByteOrder

class BufferedPayloadReader(payload: Array[Byte]) extends PayloadReader {
  private val buffer = ByteBuffer.wrap(payload)

  //mavlink uses little endian
  buffer.order(ByteOrder.LITTLE_ENDIAN)

  def nextInt8 = buffer.get()
  def nextInt16 = buffer.getShort()
  def nextInt32 = buffer.getInt()
  def nextInt64 = buffer.getLong()
  def nextFloat = buffer.getFloat()
  def nextDouble = buffer.getDouble()
  def nextChar = buffer.getChar()

}

class BufferedPayloadBuilder(payload: Array[Byte]) extends PayloadBuilder {
  private val buffer = ByteBuffer.wrap(payload)

  //mavlink uses little endian
  buffer.order(ByteOrder.LITTLE_ENDIAN)

  def writeInt8(x: Byte) = buffer.put(x)
  def writeInt16(x: Short) = buffer.putShort(x)
  def writeInt32(x: Int) = buffer.putInt(x)
  def writeInt64(x: Long) = buffer.putLong(x)
  def writeFloat(x: Float) = buffer.putFloat(x)
  def writeDouble(x: Double) = buffer.putDouble(x)
  def writeChar(x: Char) = buffer.putChar(x)

}