UASInfoWidget.h 3.31 KB
Newer Older
pixhawk's avatar
pixhawk committed
1
/*=====================================================================
2
3
4
5
6
7
8
9

QGroundControl Open Source Ground Control Station

(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>

This file is part of the QGROUNDCONTROL project

    QGROUNDCONTROL is free software: you can redistribute it and/or modify
pixhawk's avatar
pixhawk committed
10
11
12
    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.
13
14

    QGROUNDCONTROL is distributed in the hope that it will be useful,
pixhawk's avatar
pixhawk committed
15
16
17
    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.
18

pixhawk's avatar
pixhawk committed
19
    You should have received a copy of the GNU General Public License
20
21
    along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.

pixhawk's avatar
pixhawk committed
22
======================================================================*/
23

pixhawk's avatar
pixhawk committed
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
 * @file
 *   @brief Detail information of one MAV
 *
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *
 */

#ifndef _UASINFOWIDGET_H_
#define _UASINFOWIDGET_H_

#include <QWidget>
#include <QTimer>
#include <QMap>

#include "UASInterface.h"
#include "ui_UASInfo.h"

/**
 * @brief Info indicator for the currently active UAS
 *
 **/
46
47
class UASInfoWidget : public QWidget
{
pixhawk's avatar
pixhawk committed
48
49
50
51
52
53
54
55
56
57
    Q_OBJECT
public:
    UASInfoWidget(QWidget *parent = 0, QString name = "");
    ~UASInfoWidget();

public slots:
    void addUAS(UASInterface* uas);

    void setActiveUAS(UASInterface* uas);

dongfang's avatar
dongfang committed
58
    void updateBattery(UASInterface* uas, double voltage, double current, double percent, int seconds);
pixhawk's avatar
pixhawk committed
59
    void updateCPULoad(UASInterface* uas, double load);
60
61
62
63
64
    /** 
	 * @brief Set the loss rate of packets received by the MAV.
	 * @param uasId UNUSED
	 * @param receiveLoss A percentage value (0-100) of how many message the UAS has failed to receive.
	 */
pixhawk's avatar
pixhawk committed
65
    void updateReceiveLoss(int uasId, float receiveLoss);
66
67
68
69
70
71

    /**
	 * @brief Set the loss rate of packets sent from the MAV 
	 * @param uasId UNUSED
	 * @param sendLoss A percentage value (0-100) of how many message QGC has failed to receive.
	 */
pixhawk's avatar
pixhawk committed
72
    void updateSendLoss(int uasId, float sendLoss);
73
	
74
75
    /** @brief Update the error count */
    void updateErrorCount(int uasid, QString component, QString device, int count);
pixhawk's avatar
pixhawk committed
76
77
78
79
80
81

    void setVoltage(UASInterface* uas, double voltage);
    void setChargeLevel(UASInterface* uas, double chargeLevel);
    void setTimeRemaining(UASInterface* uas, double seconds);
//    void setBattery(int uasid, BatteryType type, int cells);

lm's avatar
lm committed
82
83
//    void valueChanged(int uasid, QString key, double value,quint64 time);
//    void actuatorChanged(UASInterface* uas, int actId, double value);
pixhawk's avatar
pixhawk committed
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
    void refresh();

protected:

    UASInterface* activeUAS;

    // Configuration variables
    int voltageDecimals;
    int loadDecimals;

    // State variables

    // Voltage
    double voltage;
    double chargeLevel;
    double timeRemaining;
    double load;
lm's avatar
lm committed
101
102
    float receiveLoss;
    float sendLoss;
103
    bool changed;
pixhawk's avatar
pixhawk committed
104
105
106
    QTimer* updateTimer;
    QString name;
    quint64 startTime;
107
    QMap<QString, int> errors;
lm's avatar
lm committed
108
    static const int updateInterval = 800; ///< Refresh interval in milliseconds
109
110
111

    void showEvent(QShowEvent* event);
    void hideEvent(QHideEvent* event);
pixhawk's avatar
pixhawk committed
112
113
114
115
116
117
118

private:
    Ui::uasInfo ui;

};

#endif // _UASINFOWIDGET_H_