diff options
Diffstat (limited to 'vfd-mavlink/src/main/scala/org/mavlink/messages/Message.scala')
-rw-r--r-- | vfd-mavlink/src/main/scala/org/mavlink/messages/Message.scala | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/vfd-mavlink/src/main/scala/org/mavlink/messages/Message.scala b/vfd-mavlink/src/main/scala/org/mavlink/messages/Message.scala index f22d0b3..7e215c6 100644 --- a/vfd-mavlink/src/main/scala/org/mavlink/messages/Message.scala +++ b/vfd-mavlink/src/main/scala/org/mavlink/messages/Message.scala @@ -1,8 +1,30 @@ package org.mavlink.messages import org.mavlink.PayloadReader +import org.mavlink.PayloadWriter import org.mavlink.Packet -import org.mavlink.PayloadBuilder -trait Message +trait Message { + def pack(implicit mkWriter: Array[Byte] => PayloadWriter): Array[Byte] +} + +trait MessageCompanion[M <: Message] { + def unpack(bytes: Seq[Byte])(implicit mkReader: Seq[Byte] => PayloadReader): M +} + +object Message { + + def unpack(packet: Packet)(implicit mkReader: Seq[Byte] => PayloadReader) = packet.messageId match { + case 0 => Heartbeat.unpack(packet.payload) + case 109 => RadioStatus.unpack(packet.payload) + } + + /* + private val msg = Heartbeat(23,1,2,4,5,6) + def foo = { + val spec = msg.pickle.value + (spec.id, spec.payload.mkString("(", ",", ")")) + }*/ + +}
\ No newline at end of file |