#include <QThread>
#include <QTimer>
#include <QSettings>
+#include <QRotationSensor>
#undef _GNU_SOURCE // just get rid of error message double definition
#include <navdata.h>
class DroneThread;
+QTM_USE_NAMESPACE
+
class DroneControl : public QObject
{
Q_OBJECT
- Q_PROPERTY(float pitch READ pitch WRITE setPitch)
- Q_PROPERTY(float roll READ roll WRITE setRoll)
- Q_PROPERTY(float yaw READ yaw WRITE setYaw)
+ Q_PROPERTY(float pitch READ pitch WRITE setPitch NOTIFY pitchRollChanged)
+ Q_PROPERTY(float roll READ roll WRITE setRoll NOTIFY pitchRollChanged)
+ Q_PROPERTY(float yaw READ yaw WRITE setYaw NOTIFY pitchRollChanged)
Q_PROPERTY(float altitude READ altitude WRITE setAltitude)
- Q_PROPERTY(float vVelocity READ vVelocity WRITE setVVelocity)
+ Q_PROPERTY(float vVelocity READ vVelocity WRITE setVVelocity NOTIFY pitchRollChanged)
Q_PROPERTY(int enabled READ enabled WRITE setEnabled)
Q_PROPERTY(bool fly READ fly WRITE setFly)
+ Q_PROPERTY(bool ctrlActive READ ctrlActive WRITE setCtrlActive)
Q_PROPERTY(float dronePitch READ dronePitch NOTIFY navDataChanged)
Q_PROPERTY(float droneRoll READ droneRoll NOTIFY navDataChanged)
Q_PROPERTY(float droneYaw READ droneYaw NOTIFY navDataChanged)
Q_PROPERTY(float confBackwardGain READ confBackwardGain WRITE setConfBackwardGain NOTIFY configChanged)
Q_PROPERTY(float confLeftGain READ confLeftGain WRITE setConfLeftGain NOTIFY configChanged)
Q_PROPERTY(float confRightGain READ confRightGain WRITE setConfRightGain NOTIFY configChanged)
+ Q_PROPERTY(float confCtrlTrsh READ confCtrlTrsh WRITE setConfCtrlTrsh NOTIFY configChanged)
public:
explicit DroneControl();
int enabled() ; void setEnabled(int val_) ;
bool emergency();void setEmergency(bool val_) ;
bool fly() ; void setFly(bool val_) ;
+ bool ctrlActive();void setCtrlActive(bool val_) ;
// Read only telemetry and drone status
QString decodedStatus();
float droneVBat();
//Config variables
- QString confDroneIp(); void setConfDroneIp(QString ip);
+ QString confDroneIp(); void setConfDroneIp(QString ip);
bool confShowDebug(); void setConfShowDebug(bool val);
bool confShowHorizon(); void setConfShowHorizon(bool val);
bool confShowGauges(); void setConfShowGauges(bool val);
bool confUseAccel(); void setConfUseAccel(bool val);
- bool confFullScreen();void setConfFullScreen(bool val);
+ bool confFullScreen(); void setConfFullScreen(bool val);
bool confUseJoyStick(); void setConfUseJoyStick(bool val);
float confForwardGain(); void setConfForwardGain(float val);
float confBackwardGain(); void setConfBackwardGain(float val);
float confLeftGain(); void setConfLeftGain(float val);
float confRightGain(); void setConfRightGain(float val);
-
+ float confCtrlTrsh(); void setConfCtrlTrsh(float val);
signals:
void navDataChanged();
void statusChanged();
void configChanged();
+ void pitchRollChanged();
public slots:
void navDataUpdated();
void statusUpdated();
+ void rotationReadingsChanged();
private:
float m_pitch; // pitch in horizon
float m_yaw; // low value to display
float m_vv; // Verticl velocity
float m_altitude; // altitude
+ float m_rotRefX; // Rotation zero reference
+ float m_rotRefY;
+ float m_rotRefZ;
int m_enabled; // Enable flag
bool m_emergency; // Emergency flag
QString _emgReason; // Reason of emergency
bool m_fly; // Fly flag
+ bool m_ctrlActive;
+ bool m_useAccel;
+ float m_ctrlTrsh; // accel controll treshold
QTcpSocket *ctlSock; // TCP port for control/config data
QUdpSocket *navSock; // Navigation data receive socket port 5554
DroneThread *droneThread;
QSettings *droneSettings;
+ QRotationSensor *rSensor; // used for controllind drone with device rotation
};