#ifndef QGCUASPARAMMANAGER_H #define QGCUASPARAMMANAGER_H #include #include #include #include class UASInterface; class QGCUASParamManager : public QWidget { Q_OBJECT public: QGCUASParamManager(UASInterface* uas, QWidget *parent = 0); QList getParameterNames(int component) const { return parameters.value(component)->keys(); } QList getParameterValues(int component) const { return parameters.value(component)->values(); } bool getParameterValue(int component, const QString& parameter, QVariant& value) const { if (!parameters.contains(component)) { return false; } if (!parameters.value(component)->contains(parameter)) { return false; } value = parameters.value(component)->value(parameter); return true; } virtual bool isParamMinKnown(const QString& param) = 0; virtual bool isParamMaxKnown(const QString& param) = 0; virtual bool isParamDefaultKnown(const QString& param) = 0; virtual double getParamMin(const QString& param) = 0; virtual double getParamMax(const QString& param) = 0; virtual double getParamDefault(const QString& param) = 0; virtual QString getParamInfo(const QString& param) = 0; virtual void setParamInfo(const QMap& param) = 0; /** @brief Request an update for the parameter list */ void requestParameterListUpdate(int component = 0); /** @brief Request an update for this specific parameter */ virtual void requestParameterUpdate(int component, const QString& parameter) = 0; signals: void parameterChanged(int component, QString parameter, QVariant value); void parameterChanged(int component, int parameterIndex, QVariant value); void parameterListUpToDate(int component); public slots: /** @brief Write one parameter to the MAV */ virtual void setParameter(int component, QString parameterName, QVariant value) = 0; /** @brief Request list of parameters from MAV */ virtual void requestParameterList() = 0; protected: UASInterface* mav; ///< The MAV this widget is controlling QMap* > changedValues; ///< Changed values QMap* > parameters; ///< All parameters QVector received; ///< Successfully received parameters QMap* > transmissionMissingPackets; ///< Missing packets QMap* > transmissionMissingWriteAckPackets; ///< Missing write ACK packets bool transmissionListMode; ///< Currently requesting list QMap transmissionListSizeKnown; ///< List size initialized? bool transmissionActive; ///< Missing packets, working on list? quint64 transmissionTimeout; ///< Timeout QTimer retransmissionTimer; ///< Timer handling parameter retransmission int retransmissionTimeout; ///< Retransmission request timeout, in milliseconds int rewriteTimeout; ///< Write request timeout, in milliseconds int retransmissionBurstRequestSize; ///< Number of packets requested for retransmission per burst }; #endif // QGCUASPARAMMANAGER_H