#ifndef PARAMETERINSPECTOR_H #define PARAMETERINSPECTOR_H #include #include #include #include "QThread" #include "QPushButton" #include "QTreeView" #include "QDebug" #include #include "QMap" #include #include "QStandardItemModel" #include "QTimer" #include "QKeyEvent" #include "QFile" #include "QDir" #include "QFileDialog" #include "QDateTime" #include "mavlink.h" #include "mavlink_get_info.h" #include "QHeaderView" #include "QTreeWidgetItem" #include "multiselector.h" #include "Selector.h" #include "Inputter.h" #include "CharInputter.h" #ifdef QtMavlinkNode #include namespace Ui { class ParameterInspector; } class MAVLINKNODESHARED_EXPORT ParameterInspector : public QWidget{ #else namespace Ui { class ParameterInspector; } class ParameterInspector : public QWidget { #endif Q_OBJECT public: explicit ParameterInspector(QWidget *parent = nullptr); ~ParameterInspector(); void resizeEvent(QResizeEvent * event); const QHash _mavlinkCompIdHash { { MAV_COMP_ID_CAMERA, "Camera1" }, { MAV_COMP_ID_CAMERA2, "Camera2" }, { MAV_COMP_ID_CAMERA3, "Camera3" }, { MAV_COMP_ID_CAMERA4, "Camera4" }, { MAV_COMP_ID_CAMERA5, "Camera5" }, { MAV_COMP_ID_CAMERA6, "Camera6" }, { MAV_COMP_ID_SERVO1, "Servo1" }, { MAV_COMP_ID_SERVO2, "Servo2" }, { MAV_COMP_ID_SERVO3, "Servo3" }, { MAV_COMP_ID_SERVO4, "Servo4" }, { MAV_COMP_ID_SERVO5, "Servo5" }, { MAV_COMP_ID_SERVO6, "Servo6" }, { MAV_COMP_ID_SERVO7, "Servo7" }, { MAV_COMP_ID_SERVO8, "Servo8" }, { MAV_COMP_ID_SERVO9, "Servo9" }, { MAV_COMP_ID_SERVO10, "Servo10" }, { MAV_COMP_ID_SERVO11, "Servo11" }, { MAV_COMP_ID_SERVO12, "Servo12" }, { MAV_COMP_ID_SERVO13, "Servo13" }, { MAV_COMP_ID_SERVO14, "Servo14" }, { MAV_COMP_ID_GIMBAL, "Gimbal1" }, { MAV_COMP_ID_ADSB, "ADSB" }, { MAV_COMP_ID_OSD, "OSD" }, { MAV_COMP_ID_FLARM, "FLARM" }, { MAV_COMP_ID_IMU, "IMU1" }, { MAV_COMP_ID_IMU_2, "IMU2" }, { MAV_COMP_ID_IMU_3, "IMU3" }, { MAV_COMP_ID_GPS, "GPS1" }, { MAV_COMP_ID_GPS2, "GPS2" } }; typedef struct{ char name[16]; union{ double *d; float *s; uint32_t *I; int32_t *i; uint16_t *H; int16_t *h; uint8_t *B; int8_t *b; } val_ptr; MAV_PARAM_TYPE typ; } _param_props; _param_props param_props; void refreshView(); signals: void ReadCmd(uint8_t m_sysid, uint8_t m_compid, uint8_t type); void WriteCmd(uint8_t m_sysid, uint8_t m_compid , const char *id, uint8_t type, float value); public slots: void addVehicles(int sysid, int compid); void appendParameter(mavlink_message_t msg); protected: void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); private slots: void ParamsEncode(QString fileName); void ParamsDecode(QString fileName); void mReflush(); void clearview(void); void on_ReadButton_clicked(); void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column); void on_clearButton_clicked(); QVariant param_value(mavlink_param_value_t param); float param_getvalue(QVariant param,uint8_t type); QVariant param_type(mavlink_param_value_t param); uint8_t param_gettype(QVariant type); char* param_id(char *id); //================================== void setsystem(QVariant vehicle); void setvalue(QVariant value); //================================== void on_WriteButton_clicked(); void on_CancelpushButton_clicked(); void on_pushButton_system_clicked(); void on_pushButton_value_clicked(); void on_pushButton_Save_clicked(); void on_pushButton_Load_clicked(); private: QString parentItem; uint8_t currentSelectType; //char * S bool TimerRunningFlag = false; bool isReflush = false; uint16_t currentpersent; int selectedSystemID; ///< Currently selected system int selectedComponentID; ///< Currently selected component QMap systems; ///< Already observed systems QMap components; ///< Already observed components QMap uasTopLevelItems; //QMap uasTreeWidgetItems; ///< Tree of available uas with their widget QMap> uasParamTreeItems; ///< Stores the widget of the received parameter for each UAS QMap> vehicles; Ui::ParameterInspector *ui; QTimer *flushTimer = nullptr; bool isNew = true; QString fineItem; }; #endif // PARAMETERINSPECTOR_H