WaypointList.h 3.09 KB
Newer Older
pixhawk's avatar
pixhawk committed
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
/*=====================================================================

PIXHAWK Micro Air Vehicle Flying Robotics Toolkit

(c) 2009, 2010 PIXHAWK PROJECT  <http://pixhawk.ethz.ch>

This file is part of the PIXHAWK project

    PIXHAWK 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.

    PIXHAWK 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 PIXHAWK. If not, see <http://www.gnu.org/licenses/>.

======================================================================*/

/**
 * @file
 *   @brief Definition of list of waypoints widget
 *
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *   @author Benjamin Knecht <mavteam@student.ethz.ch>
30
 *   @author Petri Tanskanen <mavteam@student.ethz.ch>
pixhawk's avatar
pixhawk committed
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
 *
 */

#ifndef WAYPOINTLIST_H
#define WAYPOINTLIST_H

#include <QtGui/QWidget>
#include <QMap>
#include <QVBoxLayout>
#include <QTimer>
#include "Waypoint.h"
#include "UASInterface.h"
#include "WaypointView.h"

namespace Ui {
    class WaypointList;
}

class WaypointList : public QWidget {
    Q_OBJECT
    Q_DISABLE_COPY(WaypointList)
        public:
            WaypointList(QWidget* parent = NULL, UASInterface* uas = NULL);
    virtual ~WaypointList();

public slots:
    void setUAS(UASInterface* uas);
    void redrawList();
pixhawk's avatar
pixhawk committed
59 60 61 62 63

    //UI Buttons
    void saveWaypoints();
    void loadWaypoints();    
    void transmit();
64
    void read();
65
    /** @brief Add a waypoint */
pixhawk's avatar
pixhawk committed
66
    void add();
67 68
    /** @brief Add a waypoint at the current MAV position */
    void addCurrentPositonWaypoint();
pixhawk's avatar
pixhawk committed
69 70
    void moveUp(Waypoint* wp);
    void moveDown(Waypoint* wp);
pixhawk's avatar
pixhawk committed
71

72 73 74
    /** @brief sets statusLabel string */
    void updateStatusLabel(const QString &string);

75 76
    void changeCurrentWaypoint(quint16 seq);    ///< The user wants to change the current waypoint
    void currentWaypointChanged(quint16 seq);   ///< The waypointplanner changed the current waypoint
77
    void setWaypoint(quint16 id, double x, double y, double z, double yaw, bool autocontinue, bool current, double orbit, int holdTime);
pixhawk's avatar
pixhawk committed
78
    void addWaypoint(Waypoint* wp);
79
    void removeWaypoint(Waypoint* wp);
80
    void waypointReached(quint16 waypointId);
81 82
    void updateLocalPosition(UASInterface*, double x, double y, double z, quint64 usec);
    void updateAttitude(UASInterface*, double roll, double pitch, double yaw, quint64 usec);
pixhawk's avatar
pixhawk committed
83

pixhawk's avatar
pixhawk committed
84
signals:
85
    void sendWaypoints();
pixhawk's avatar
pixhawk committed
86 87
    void requestWaypoints();
    void clearWaypointList();
88
    void setCurrent(quint16);
pixhawk's avatar
pixhawk committed
89

pixhawk's avatar
pixhawk committed
90 91
protected:
    virtual void changeEvent(QEvent *e);
pixhawk's avatar
pixhawk committed
92

pixhawk's avatar
pixhawk committed
93 94 95
    QMap<Waypoint*, WaypointView*> wpViews;
    QVBoxLayout* listLayout;
    UASInterface* uas;
96 97 98 99
    double mavX;
    double mavY;
    double mavZ;
    double mavYaw;
pixhawk's avatar
pixhawk committed
100 101 102 103 104 105

private:
    Ui::WaypointList *m_ui;
};

#endif // WAYPOINTLIST_H