4 #include <QGraphicsWidget>
5 #include <QGraphicsItem>
12 #undef _GNU_SOURCE // just get rid of error message double definition
17 class DroneControl : public QObject
20 Q_PROPERTY(float pitch READ pitch WRITE setPitch)
21 Q_PROPERTY(float roll READ roll WRITE setRoll)
22 Q_PROPERTY(float yaw READ yaw WRITE setYaw)
23 Q_PROPERTY(float altitude READ altitude WRITE setAltitude)
24 Q_PROPERTY(float vVelocity READ vVelocity WRITE setVVelocity)
25 Q_PROPERTY(int enabled READ enabled WRITE setEnabled)
26 Q_PROPERTY(bool fly READ fly WRITE setFly)
27 Q_PROPERTY(float dronePitch READ dronePitch NOTIFY navDataChanged)
28 Q_PROPERTY(float droneRoll READ droneRoll NOTIFY navDataChanged)
29 Q_PROPERTY(float droneYaw READ droneYaw NOTIFY navDataChanged)
30 Q_PROPERTY(float droneVBat READ droneVBat NOTIFY navDataChanged)
31 Q_PROPERTY(float droneAltitude READ droneAltitude NOTIFY navDataChanged)
32 Q_PROPERTY(bool emergency READ emergency WRITE setEmergency)
33 Q_PROPERTY(QString decodedStatus READ decodedStatus NOTIFY statusChanged)
34 Q_PROPERTY(int pwm_motor1 READ pwm_motor1 NOTIFY navDataChanged)
35 Q_PROPERTY(int pwm_motor2 READ pwm_motor1 NOTIFY navDataChanged)
36 Q_PROPERTY(int pwm_motor3 READ pwm_motor1 NOTIFY navDataChanged)
37 Q_PROPERTY(int pwm_motor4 READ pwm_motor1 NOTIFY navDataChanged)
40 // Config variables from QSettings
41 Q_PROPERTY(QString confDroneIp READ confDroneIp WRITE setConfDroneIp NOTIFY configChanged)
42 Q_PROPERTY(bool confShowDebug READ confShowDebug WRITE setConfShowDebug NOTIFY configChanged)
43 Q_PROPERTY(bool confShowHorizon READ confShowHorizon WRITE setConfShowHorizon NOTIFY configChanged)
44 Q_PROPERTY(bool confShowGauges READ confShowGauges WRITE setConfShowGauges NOTIFY configChanged)
45 Q_PROPERTY(bool confUseAccel READ confUseAccel WRITE setConfUseAccel NOTIFY configChanged)
46 Q_PROPERTY(bool confUseJoyStick READ confUseJoyStick WRITE setConfUseJoyStick NOTIFY configChanged)
47 Q_PROPERTY(bool confFullScreen READ confFullScreen WRITE setConfFullScreen NOTIFY configChanged)
48 Q_PROPERTY(float confForwardGain READ confForwardGain WRITE setConfForwardGain NOTIFY configChanged)
49 Q_PROPERTY(float confBackwardGain READ confBackwardGain WRITE setConfBackwardGain NOTIFY configChanged)
50 Q_PROPERTY(float confLeftGain READ confLeftGain WRITE setConfLeftGain NOTIFY configChanged)
51 Q_PROPERTY(float confRightGain READ confRightGain WRITE setConfRightGain NOTIFY configChanged)
54 explicit DroneControl();
57 float pitch(); void setPitch(float val_);
58 float roll() ; void setRoll(float val_);
59 float yaw() ; void setYaw(float val_);
60 float altitude(); void setAltitude(float val_) ;
61 float vVelocity();void setVVelocity(float val_) ;
62 int enabled() ; void setEnabled(int val_) ;
63 bool emergency();void setEmergency(bool val_) ;
64 bool fly() ; void setFly(bool val_) ;
66 // Read only telemetry and drone status
67 QString decodedStatus();
72 float droneAltitude();
79 QString confDroneIp(); void setConfDroneIp(QString ip);
80 bool confShowDebug(); void setConfShowDebug(bool val);
81 bool confShowHorizon(); void setConfShowHorizon(bool val);
82 bool confShowGauges(); void setConfShowGauges(bool val);
83 bool confUseAccel(); void setConfUseAccel(bool val);
84 bool confFullScreen();void setConfFullScreen(bool val);
85 bool confUseJoyStick(); void setConfUseJoyStick(bool val);
86 float confForwardGain(); void setConfForwardGain(float val);
87 float confBackwardGain(); void setConfBackwardGain(float val);
88 float confLeftGain(); void setConfLeftGain(float val);
89 float confRightGain(); void setConfRightGain(float val);
92 void navDataChanged();
96 void navDataUpdated();
100 float m_pitch; // pitch in horizon
101 float m_roll; // Roll in horizon
102 float m_yaw; // low value to display
103 float m_vv; // Verticl velocity
104 float m_altitude; // altitude
105 int m_enabled; // Enable flag
106 bool m_emergency; // Emergency flag
107 QString _emgReason; // Reason of emergency
108 bool m_fly; // Fly flag
110 QTcpSocket *ctlSock; // TCP port for control/config data
111 QUdpSocket *navSock; // Navigation data receive socket port 5554
112 QHostAddress droneHost; // Ip address of the drone
114 DroneThread *droneThread;
115 QSettings *droneSettings;
120 class DroneThread:public QThread {
123 DroneThread(DroneControl *parentp,QHostAddress host);
127 void sendNav(QString cmd);
128 void sendCmd(QString cmd);
129 NavData *navData() { return &nd; };
141 void setFly(bool fly);
142 void setEmergency(bool emg);
143 void setDroneControl(float pitch,float roll,float yaw,float vv);
144 void setDroneGain(float fgain,float bgain,float lgain,float rgain);
148 QHostAddress droneHost; // Ip address of the drone
150 volatile bool stopped;
151 DroneControl *parent;
152 QUdpSocket *navSock; // Navigation data receive socket port 5554
153 QUdpSocket *cmdSock; // Ay command socket port 5556
155 int seq; // Drone command seq number
169 #endif // DRONECONTROL_H