WaypointList.h 3.05 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);

pixhawk's avatar
pixhawk committed
75 76
    void currentWaypointChanged(quint16 seq);

pixhawk's avatar
pixhawk committed
77
    //To be moved to UASWaypointManager (?)
pixhawk's avatar
pixhawk committed
78
    void setWaypoint(int uasId, quint16 id, double x, double y, double z, double yaw, bool autocontinue, bool current, double orbit, int holdTime);
pixhawk's avatar
pixhawk committed
79
    void addWaypoint(Waypoint* wp);
80 81
    void removeWaypoint(Waypoint* wp);
    void waypointReached(UASInterface* uas, quint16 waypointId);
82 83
    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
84

pixhawk's avatar
pixhawk committed
85 86 87 88 89
signals:
    void sendWaypoints(const QVector<Waypoint*> &);
    void requestWaypoints();
    void clearWaypointList();

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 96
    QVector<Waypoint*> waypoints;
    QMap<Waypoint*, WaypointView*> wpViews;
    QVBoxLayout* listLayout;
    UASInterface* uas;
97 98 99 100
    double mavX;
    double mavY;
    double mavZ;
    double mavYaw;
pixhawk's avatar
pixhawk committed
101 102 103 104 105 106

private:
    Ui::WaypointList *m_ui;
};

#endif // WAYPOINTLIST_H