QGCUASParamManagerInterface.h 2.33 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 47 48 49 50 51 52 53 54 55 56 57 58
#ifndef QGCUASPARAMMANAGERINTERFACE_H
#define QGCUASPARAMMANAGERINTERFACE_H

#include <QWidget>
#include <QMap>
#include <QTimer>
#include <QVariant>
#include <QTextStream>

#include "UASParameterDataModel.h"

/**
 * @brief This is the abstract base class for QGCUASParamManager. Although there is 
 * normally only a single QGCUASParamManager we still use an abstract base interface 
 * since this allows us to create mock versions.
 *
 * See QGCUASParamManager.h for method documentation
 **/

//forward declarations
class QTextStream;
class UASInterface;
class UASParameterCommsMgr;

class QGCUASParamManagerInterface : public QObject
{
public:
    QGCUASParamManagerInterface(QObject* parent = NULL) : QObject(parent) { }
    virtual bool getParameterValue(int component, const QString& parameter, QVariant& value) const = 0;
    virtual int getDefaultComponentId() = 0;
    virtual QList<int> getComponentForParam(const QString& parameter) const = 0;
    virtual void setParamDescriptions(const QMap<QString,QString>& paramDescs) = 0;
    virtual int countPendingParams() = 0;
    virtual int countOnboardParams() = 0;
    virtual UASParameterDataModel* dataModel() = 0;
    
public slots:
    virtual void setParameter(int component, QString parameterName, QVariant value) = 0;
    virtual void sendPendingParameters(bool persistAfterSend = false, bool forceSend = false) = 0;
    virtual void requestParameterList() = 0;
    virtual void requestParameterListIfEmpty() = 0;
    virtual void setPendingParam(int componentId,  const QString& key,  const QVariant& value, bool forceSend = false) = 0;
    virtual void clearAllPendingParams() = 0;
    virtual void requestParameterUpdate(int component, const QString& parameter) = 0;
    virtual void writeOnboardParamsToStream(QTextStream &stream, const QString& uasName) = 0;
    virtual void readPendingParamsFromStream(QTextStream &stream) = 0;
    virtual void requestRcCalibrationParamsUpdate() = 0;
    virtual void copyVolatileParamsToPersistent() = 0;
    virtual void copyPersistentParamsToVolatile() = 0;
    
signals:
    void parameterStatusMsgUpdated(QString msg, int level);
    void parameterListUpToDate();
    void parameterUpdated(int compId, QString paramName, QVariant value);
    void pendingParamUpdate(int compId, const QString& paramName, QVariant value, bool isPending);
};

#endif // QGCUASPARAMMANAGER_H