#ifndef QGCUASPARAMMANAGER_H #define QGCUASPARAMMANAGER_H #include #include #include #include //forward declarations class UASInterface; class UASParameterCommsMgr; class UASParameterDataModel; class QGCUASParamManager : public QWidget { Q_OBJECT public: QGCUASParamManager(UASInterface* uas, QWidget *parent = 0); /** @brief Get the known, confirmed value of a parameter */ virtual bool getParameterValue(int component, const QString& parameter, QVariant& value) const; /** @brief Provide tooltips / user-visible descriptions for parameters */ virtual void setParamDescriptions(const QMap& paramDescs); /** @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(); protected: //TODO decouple this UI message display further? virtual void setParameterStatusMsg(const QString& msg); /** @brief Load parameter meta information from appropriate CSV file */ virtual void loadParamMetaInfoCSV(); signals: void parameterChanged(int component, QString parameter, QVariant value); void parameterChanged(int component, int parameterIndex, QVariant value); public slots: /** @brief Send one parameter to the MAV: changes value in transient memory of MAV */ virtual void setParameter(int component, QString parameterName, QVariant value); /** @brief Send all pending parameters to the MAV, for storage in transient (RAM) memory */ virtual void sendPendingParameters(); /** @brief Request list of parameters from MAV */ virtual void requestParameterList(); virtual void setPendingParam(int componentId, QString& key, const QVariant& value); /** @brief Request a single parameter by name from the MAV */ virtual void requestParameterUpdate(int component, const QString& parameter); virtual void handleParameterUpdate(int component, const QString& parameterName, QVariant value) = 0; virtual void handleParameterListUpToDate() = 0; protected: // Parameter data model UASInterface* mav; ///< The MAV this manager is controlling UASParameterDataModel* paramDataModel;///< Shared data model of parameters UASParameterCommsMgr* paramCommsMgr; ///< Shared comms mgr for parameters // Status QString parameterStatusMsg; }; #endif // QGCUASPARAMMANAGER_H