HSIDisplay.h 2.66 KB
Newer Older
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
/*=====================================================================

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 of Horizontal Situation Indicator class
 *
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *
 */

#ifndef HSIDISPLAY_H
#define HSIDISPLAY_H

#include <QtGui/QWidget>
#include <QColor>
#include <QTimer>
#include <QMap>
#include <QPair>
#include <cmath>

#include "HDDisplay.h"

class HSIDisplay : public HDDisplay {
    Q_OBJECT
public:
47
    HSIDisplay(QWidget *parent = 0);
lm's avatar
lm committed
48
    // ~HSIDisplay();
49 50 51

public slots:
    void setActiveUAS(UASInterface* uas);
lm's avatar
lm committed
52
    void updateSatellite(int uasid, int satid, float azimuth, float direction, float snr, bool used);
lm's avatar
lm committed
53
    void paintEvent(QPaintEvent * event);
54 55 56

protected slots:
    void paintDisplay();
lm's avatar
lm committed
57 58 59 60
    void drawGPS();
    void drawObjects();
    void drawBaseLines(float xRef, float yRef, float radius, float yaw, const QColor& color, QPainter* painter, bool solid);

61 62

protected:
lm's avatar
lm committed
63 64 65 66 67 68 69 70 71
    static QColor getColorForSNR(float snr);

    /**
     * @brief Private data container class to be used within the HSI widget
     */
    class GPSSatellite
    {
    public:
        GPSSatellite(int id, float azimuth, float direction, float snr, bool used) :
lm's avatar
lm committed
72 73 74 75 76
                id(id),
                azimuth(azimuth),
                direction(direction),
                snr(snr),
                used(used)
lm's avatar
lm committed
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
        {

        }

        void update(int id, float azimuth, float direction, float snr, bool used)
        {
            this->id = id;
            this->azimuth = azimuth;
            this->direction = direction;
            this->snr = snr;
            this->used = used;
        }

        int id;
        float azimuth;
        float direction;
        float snr;
        bool used;

        friend class HSIDisplay;
    };

    QVector<GPSSatellite*> gpsSatellites;
100 101 102 103 104

private:
};

#endif // HSIDISPLAY_H