#ifndef QGCUASPARAMMANAGER_H #define QGCUASPARAMMANAGER_H #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(); } float getParameterValue(int component, const QString& parameter) const { return parameters.value(component)->value(parameter); } /** @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, float value); void parameterChanged(int component, int parameterIndex, float value); void parameterListUpToDate(int component); public slots: /** @brief Write one parameter to the MAV */ virtual void setParameter(int component, QString parameterName, float 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