aboutsummaryrefslogtreecommitdiff
path: root/vfd-mavlink/src/main/scala/org/mavlink/messages/Message.scala
diff options
context:
space:
mode:
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.scala26
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