/*===================================================================== QGroundControl Open Source Ground Control Station (c) 2009 - 2011 QGROUNDCONTROL PROJECT This file is part of the QGROUNDCONTROL project QGROUNDCONTROL is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. QGROUNDCONTROL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with QGROUNDCONTROL. If not, see . ======================================================================*/ /** * @file * @brief Example implementation of a different protocol than the default MAVLink. * @author Lorenz Meier */ #ifndef MAVLINKLIGHTPROTOCOL_H #define MAVLINKLIGHTPROTOCOL_H #include #include #include #define MAVLINK_LIGHT_MAX_PAYLOAD_LEN 50 // Not part of message struct, but sent on link // uint8_t stx1; // uint8_t stx2; typedef struct { uint8_t msgid; ///< ID of message in payload uint8_t payload[MAVLINK_LIGHT_MAX_PAYLOAD_LEN]; ///< Payload data, ALIGNMENT IMPORTANT ON MCU uint8_t ck_a; ///< Checksum high byte uint8_t ck_b; ///< Checksum low byte } mavlink_light_message_t; class MAVLinkLightProtocol : public MAVLinkProtocol { Q_OBJECT public: explicit MAVLinkLightProtocol(); QString getName(); signals: /** @brief Message received and directly copied via signal */ void messageReceived(LinkInterface* link, mavlink_light_message_t message); public slots: void sendMessage(mavlink_light_message_t message); void sendMessage(LinkInterface* link, mavlink_light_message_t message); void receiveBytes(LinkInterface* link, QByteArray b); }; #endif // MAVLINKLIGHTPROTOCOL_H