QGCUASParamManager.h 3.1 KB
Newer Older
1 2 3 4 5 6
#ifndef QGCUASPARAMMANAGER_H
#define QGCUASPARAMMANAGER_H

#include <QWidget>
#include <QMap>
#include <QTimer>
7
#include <QVariant>
8

9 10
#include "UASParameterDataModel.h"

tstellanova's avatar
tstellanova committed
11
//forward declarations
12
class QTextStream;
13
class UASInterface;
tstellanova's avatar
tstellanova committed
14
class UASParameterCommsMgr;
15

16
class QGCUASParamManager : public QObject
17 18 19
{
    Q_OBJECT
public:
20 21
    QGCUASParamManager(QObject* parent = 0);
    QGCUASParamManager* initWithUAS(UASInterface* uas);
22

tstellanova's avatar
tstellanova committed
23
    /** @brief Get the known, confirmed value of a parameter */
tstellanova's avatar
tstellanova committed
24
    virtual bool getParameterValue(int component, const QString& parameter, QVariant& value) const;
25

26 27 28
    /** @brief Provide tooltips / user-visible descriptions for parameters */
    virtual void setParamDescriptions(const QMap<QString,QString>& paramDescs);

tstellanova's avatar
tstellanova committed
29 30 31 32
    /** @brief Get the UAS of this widget
     * @return The MAV of this mgr. Unless the MAV object has been destroyed, this is never null.
     */
    UASInterface* getUAS();
tstellanova's avatar
tstellanova committed
33

34 35 36
    /** @return The data model managed by this class */
    virtual UASParameterDataModel* dataModel();

tstellanova's avatar
tstellanova committed
37
protected:
38

tstellanova's avatar
tstellanova committed
39 40
    /** @brief Load parameter meta information from appropriate CSV file */
    virtual void loadParamMetaInfoCSV();
tstellanova's avatar
tstellanova committed
41

42
    void connectToModelAndComms();
43

tstellanova's avatar
tstellanova committed
44

45
signals:
46 47 48 49 50

    /** @brief We updated the parameter status message */
    void parameterStatusMsgUpdated(QString msg, int level);
    /** @brief We have received a complete list of all parameters onboard the MAV */
    void parameterListUpToDate();
51

52 53


54
public slots:
tstellanova's avatar
tstellanova committed
55 56 57
    /** @brief Send one parameter to the MAV: changes value in transient memory of MAV */
    virtual void setParameter(int component, QString parameterName, QVariant value);

tstellanova's avatar
tstellanova committed
58 59 60
    /** @brief Send all pending parameters to the MAV, for storage in transient (RAM) memory */
    virtual void sendPendingParameters();

61
    /** @brief Request list of parameters from MAV */
tstellanova's avatar
tstellanova committed
62
    virtual void requestParameterList();
63

64 65 66
    /** @brief Request a list of params onboard the MAV if the onboard param list we have is empty */
    virtual void requestParameterListIfEmpty();

67 68
    virtual void setPendingParam(int componentId,  QString& key,  const QVariant& value);

69 70 71
    /** @brief remove all params from the pending list */
    virtual void clearAllPendingParams();

tstellanova's avatar
tstellanova committed
72
    /** @brief Request a single parameter by name from the MAV */
73 74
    virtual void requestParameterUpdate(int component, const QString& parameter);

tstellanova's avatar
tstellanova committed
75

76 77 78 79 80 81 82 83 84
    virtual void writeOnboardParamsToStream(QTextStream &stream, const QString& uasName);
    virtual void readPendingParamsFromStream(QTextStream &stream);

    virtual void requestRcCalibrationParamsUpdate();

    /** @brief Copy the current parameters in volatile RAM to persistent storage (EEPROM/HDD) */
    virtual void copyVolatileParamsToPersistent();
    /** @brief Copy the parameters from persistent storage to volatile RAM  */
    virtual void copyPersistentParamsToVolatile();
tstellanova's avatar
tstellanova committed
85

86
protected:
87

tstellanova's avatar
tstellanova committed
88
    // Parameter data model
tstellanova's avatar
tstellanova committed
89
    UASInterface*           mav;   ///< The MAV this manager is controlling
90
    UASParameterDataModel  paramDataModel;///< Shared data model of parameters
tstellanova's avatar
tstellanova committed
91
    UASParameterCommsMgr*   paramCommsMgr; ///< Shared comms mgr for parameters
92

93 94 95
};

#endif // QGCUASPARAMMANAGER_H