diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-02-27 17:11:10 -0800 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-04-14 04:03:17 -0700 |
commit | dae336ee5514970fee93b0db25ce272ab83bd3c7 (patch) | |
tree | a628a7c02c6956d99510d98f2a0321be00b241bf /mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala.disabled | |
parent | 773bc081728bf770281a22c1700d05b1def75542 (diff) | |
download | mavigator-dae336ee5514970fee93b0db25ce272ab83bd3c7.tar.gz mavigator-dae336ee5514970fee93b0db25ce272ab83bd3c7.tar.bz2 mavigator-dae336ee5514970fee93b0db25ce272ab83bd3c7.zip |
Refactor UI to a HUD-style interface
Diffstat (limited to 'mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala.disabled')
-rw-r--r-- | mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala.disabled | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala.disabled b/mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala.disabled new file mode 100644 index 0000000..0fb56b0 --- /dev/null +++ b/mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala.disabled @@ -0,0 +1,46 @@ +package mavigator.uav + +import org.mavlink.Assembler +import org.mavlink.Packet +import org.mavlink.Parser +import org.mavlink.messages.Message + +import akka.actor.Actor +import akka.actor.ActorLogging +import akka.util.ByteString + +/** Provides utilities for actors representing a mavlink connection. */ +trait MavlinkUtil { myself: Actor with ActorLogging => + + /** Mavlink system ID of this connection. */ + val systemId: Byte + + /** Mavlink component ID of this connection. */ + val componentId: Byte + + /** Assembler for creating packets originating from this connection. */ + private lazy val assembler = new Assembler(systemId, componentId) + + /** Assembles a message into a bytestring representing a packet sent from this connection. */ + protected def assemble(message: Message): ByteString = { + val (messageId, payload) = Message.pack(message) + val packet: Packet = assembler.assemble(messageId, payload) + ByteString(packet.toArray) + } + + /** Parser for messages being sent to the uav. */ + protected val outgoing: Parser = new Parser(packet => Message.unpack(packet.messageId, packet.payload) match { + //TODO handle ping + /* + case Ping(`systemId`, `componentId`) => + val message = Ack(packet.systemId, packet.componentId) + val data = assemble(message) + self ! Connection.Received(data)*/ + case _ => () + }) + + /** Parser for messages coming from the uav. */ + protected val incoming: Parser = new Parser(pckt => + log.debug("incoming message: " + Message.unpack(pckt.messageId, pckt.payload))) + +} |