UASParameterDataModel.h 2.6 KB
Newer Older
1 2 3 4 5 6 7
#ifndef UASPARAMETERDATAMODEL_H
#define UASPARAMETERDATAMODEL_H

#include <QMap>
#include <QObject>
#include <QVariant>

8 9
class QTextStream;

10 11 12 13 14 15 16
class UASParameterDataModel : public QObject
{
    Q_OBJECT
public:
    explicit UASParameterDataModel(QObject *parent = 0);
    

17 18
    virtual void addComponent(int componentId);

19
    /** @brief Write a new pending parameter value that may be eventually sent to the UAS */
20 21 22 23 24 25 26 27 28 29 30 31 32
    virtual void setPendingParameter(int componentId,  QString& key,  const QVariant& value);
    virtual void setOnboardParameter(int componentId, QString& key, const QVariant& value);

    /** @brief Save the onboard parameter with a the type specified in the QVariant as fixed */
    virtual void setOnboardParameterWithType(int componentId, QString& key, QVariant& value);

    /** @brief clears every parameter for every loaded component */
    virtual void forgetAllOnboardParameters();

    /**
     * @return true if the parameter has changed
    */
    virtual bool checkParameterChanged(int componentId, const QString& key,  const QVariant &value);
33 34


35 36 37 38
    /** @brief add this parameter to pending list iff it has changed from onboard value
     * @return true if the parameter has changed
    */
    virtual bool addPendingIfParameterChanged(int componentId, QString& key,  QVariant& value);
39

40 41 42 43

    virtual void handleParameterUpdate(int componentId, QString& key, QVariant& value);

    virtual bool getOnboardParameterValue(int componentId, const QString& key, QVariant& value) const;
44

45 46 47 48 49 50 51
    QMap<QString , QVariant>* getPendingParametersForComponent(int componentId) {
        return pendingParameters.value(componentId);
    }

    QMap<QString , QVariant>* getOnbardParametersForComponent(int componentId) {
        return onboardParameters.value(componentId);
    }
52 53 54 55 56 57 58 59 60 61

    QMap<int, QMap<QString, QVariant>* >  getPendingParameters() {
       return pendingParameters;
   }

    QMap<int, QMap<QString, QVariant>* > getOnboardParameters() {
       return onboardParameters;
   }


62 63 64
    virtual void writeOnboardParametersToStream(QTextStream& stream, const QString& uasName);
    virtual void readUpdateParametersFromStream(QTextStream& stream);

65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
    void setUASID(int anId) {  this->uasId = anId; }

signals:
    
public slots:


protected:
    int     uasId; ///< The UAS / MAV to which this data model pertains
    QMap<int, QMap<QString, QVariant>* > pendingParameters; ///< Changed values that have not yet been transmitted to the UAS, by component ID
    QMap<int, QMap<QString, QVariant>* > onboardParameters; ///< All parameters confirmed to be stored onboard the UAS, by component ID

    
};

#endif // UASPARAMETERDATAMODEL_H