#include <QThread>
#include <QTimer>
#include <QSettings>
+#include <QFile>
#ifdef HAVE_SDL
#include <SDL/SDL.h>
#endif
Q_PROPERTY(float droneSpeed READ droneSpeed NOTIFY navDataChanged)
Q_PROPERTY(float droneAltitude READ droneAltitude NOTIFY navDataChanged)
Q_PROPERTY(bool emergency READ emergency WRITE setEmergency)
+ Q_PROPERTY(bool connected READ connected WRITE setConnected NOTIFY connectedChanged)
Q_PROPERTY(QString decodedStatus READ decodedStatus NOTIFY statusChanged)
+ Q_PROPERTY(QString logFileName READ logFileName WRITE setLogFileName)
+ Q_PROPERTY(QString errorString READ errorString WRITE setErrorString NOTIFY errorStringChanged)
+ Q_PROPERTY(bool recordLog READ recordLog WRITE setRecordLog)
+ Q_PROPERTY(unsigned int logSeq READ logSeq WRITE setLogSeq)
Q_PROPERTY(int pwm_motor1 READ pwm_motor1 NOTIFY navDataChanged)
Q_PROPERTY(int pwm_motor2 READ pwm_motor1 NOTIFY navDataChanged)
Q_PROPERTY(int pwm_motor3 READ pwm_motor1 NOTIFY navDataChanged)
Q_PROPERTY(int pwm_motor4 READ pwm_motor1 NOTIFY navDataChanged)
-#if 0
- Q_PROPERTY(bool confHaveJoyStick READ confHaveJoyStick NOTIFY configChanged)
- Q_PROPERTY(QString joyStickName READ joyStickName NOTIFY statusChanged)
- Q_PROPERTY(int joyStickRawAxis1 READ joyStickRawAxis1 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickRawAxis2 READ joyStickRawAxis2 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickRawAxis3 READ joyStickRawAxis3 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickRawAxis4 READ joyStickRawAxis4 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickRawAxis5 READ joyStickRawAxis5 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickRawAxis6 READ joyStickRawAxis6 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMaxAxis1 READ joyStickMaxAxis1 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMaxAxis2 READ joyStickMaxAxis2 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMaxAxis3 READ joyStickMaxAxis3 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMaxAxis4 READ joyStickMaxAxis4 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMaxAxis5 READ joyStickMaxAxis5 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMaxAxis6 READ joyStickMaxAxis6 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMinAxis1 READ joyStickMinAxis1 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMinAxis2 READ joyStickMinAxis2 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMinAxis3 READ joyStickMinAxis3 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMinAxis4 READ joyStickMinAxis4 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMinAxis5 READ joyStickMinAxis5 NOTIFY joyStickChanged)
- Q_PROPERTY(int joyStickMinAxis6 READ joyStickMinAxis6 NOTIFY joyStickChanged)
- Q_PROPERTY(float joyStickAxis1 READ joyStickAxis1 NOTIFY joyStickChanged)
- Q_PROPERTY(float joyStickAxis2 READ joyStickAxis2 NOTIFY joyStickChanged)
- Q_PROPERTY(float joyStickAxis3 READ joyStickAxis3 NOTIFY joyStickChanged)
- Q_PROPERTY(float joyStickAxis4 READ joyStickAxis4 NOTIFY joyStickChanged)
- Q_PROPERTY(float joyStickAxis5 READ joyStickAxis5 NOTIFY joyStickChanged)
- Q_PROPERTY(float joyStickAxis6 READ joyStickAxis6 NOTIFY joyStickChanged)
- Q_PROPERTY(bool joyStickCalibrate READ joyStickCalibrate WRITE setJoyStickCalibrate)
-#endif
+
// Config variables from QSettings
Q_PROPERTY(QString confDroneIp READ confDroneIp WRITE setConfDroneIp NOTIFY configChanged)
Q_PROPERTY(QString confActiveUI READ confActiveUI WRITE setConfActiveUI NOTIFY configChanged)
Q_PROPERTY(bool confUseJoyStick READ confUseJoyStick WRITE setConfUseJoyStick NOTIFY configChanged)
Q_PROPERTY(bool confShowJSIndicators READ confShowJSIndicators WRITE setConfShowJSIndicators NOTIFY configChanged)
Q_PROPERTY(bool confFullScreen READ confFullScreen WRITE setConfFullScreen NOTIFY configChanged)
+ Q_PROPERTY(int confSimuMode READ confSimuMode WRITE setConfSimuMode NOTIFY configChanged)
Q_PROPERTY(float confForwardGain READ confForwardGain WRITE setConfForwardGain NOTIFY configChanged)
Q_PROPERTY(float confBackwardGain READ confBackwardGain WRITE setConfBackwardGain NOTIFY configChanged)
Q_PROPERTY(float confLeftGain READ confLeftGain WRITE setConfLeftGain NOTIFY configChanged)
explicit DroneControl();
- float pitch(); void setPitch(float val_);
- float roll() ; void setRoll(float val_);
- float yaw() ; void setYaw(float val_);
- float altitude(); void setAltitude(float val_) ;
- float vVelocity();void setVVelocity(float val_) ;
- int enabled() ; void setEnabled(int val_) ;
- bool emergency();void setEmergency(bool val_) ;
- bool fly() ; void setFly(bool val_) ;
+ float pitch(); void setPitch(float val_);
+ float roll() ; void setRoll(float val_);
+ float yaw() ; void setYaw(float val_);
+ float altitude(); void setAltitude(float val_) ;
+ float vVelocity(); void setVVelocity(float val_) ;
+ int enabled() ; void setEnabled(int val_) ;
+ bool emergency(); void setEmergency(bool val_) ;
+ bool fly() ; void setFly(bool val_) ;
bool ctrlActive();void setCtrlActive(bool val_) ;
-
+ bool recordLog(); void setRecordLog(bool val_) ;
+ unsigned int logSeq() ; void setLogSeq(int val_) ;
+ QString logFileName(); void setLogFileName(QString val_);
+ QString errorString(); void setErrorString(QString val_);
// Read only telemetry and drone status
QString decodedStatus();
-#ifdef JOYSTICK
-// JoyStick configuration
- QString joyStickName() { return m_joyStickName; };
- int joyStickRawAxis1() { return m_joyStickRawAxis1; };
- int joyStickRawAxis2() { return m_joyStickRawAxis2; };
- int joyStickRawAxis3() { return m_joyStickRawAxis3; };
- int joyStickRawAxis4() { return m_joyStickRawAxis4; };
- int joyStickRawAxis5() { return m_joyStickRawAxis5; };
- int joyStickRawAxis6() { return m_joyStickRawAxis6; };
- int joyStickMaxAxis1() { return m_joyStickMaxAxis1; };
- int joyStickMaxAxis2() { return m_joyStickMaxAxis2; };
- int joyStickMaxAxis3() { return m_joyStickMaxAxis3; };
- int joyStickMaxAxis4() { return m_joyStickMaxAxis4; };
- int joyStickMaxAxis5() { return m_joyStickMaxAxis5; };
- int joyStickMaxAxis6() { return m_joyStickMaxAxis6; };
- int joyStickMinAxis1() { return m_joyStickMinAxis1; };
- int joyStickMinAxis2() { return m_joyStickMinAxis2; };
- int joyStickMinAxis3() { return m_joyStickMinAxis3; };
- int joyStickMinAxis4() { return m_joyStickMinAxis4; };
- int joyStickMinAxis5() { return m_joyStickMinAxis5; };
- int joyStickMinAxis6() { return m_joyStickMinAxis6; };
- float joyStickAxis1() { return m_joyStickAxis1; };
- float joyStickAxis2() { return m_joyStickAxis2; };
- float joyStickAxis3() { return m_joyStickAxis3; };
- float joyStickAxis4() { return m_joyStickAxis4; };
- float joyStickAxis5() { return m_joyStickAxis5; };
- float joyStickAxis6() { return m_joyStickAxis6; };
- bool joyStickCalibrate() { return m_joyCal; };
- void setJoyStickCalibrate(bool val) { m_joyCal=val;};
-#endif
+
+ bool connected() { return m_connected; };
+ void setConnected(bool val_);
int pwm_motor1();
int pwm_motor2();
//Config variables
QString confDroneIp(); void setConfDroneIp(QString ip);
QString confActiveUI(); void setConfActiveUI(QString ui);
+
bool confShowDebug(); void setConfShowDebug(bool val);
bool confShowHorizon(); void setConfShowHorizon(bool val);
bool confShowJSIndicators(); void setConfShowJSIndicators(bool val);
bool confUseAccel(); void setConfUseAccel(bool val);
bool confFullScreen(); void setConfFullScreen(bool val);
bool confUseJoyStick(); void setConfUseJoyStick(bool val);
+ int confSimuMode(); void setConfSimuMode(int val);
float confForwardGain(); void setConfForwardGain(float val);
float confBackwardGain(); void setConfBackwardGain(float val);
float confLeftGain(); void setConfLeftGain(float val);
void configChanged();
void pitchRollChanged();
void joyStickChanged();
+ void connectedChanged();
+ void errorStringChanged();
public slots:
void navDataUpdated();
void statusUpdated();
bool m_ctrlActive;
bool m_useAccel;
bool m_useJoyStick;
-
-#ifdef JOYSTICK
-// Joystick
- bool m_haveJoyStick;
- QString m_joyStickName;
- bool m_joyCal;
- int m_joyStickRawAxis1;
- int m_joyStickRawAxis2;
- int m_joyStickRawAxis3;
- int m_joyStickRawAxis4;
- int m_joyStickRawAxis5;
- int m_joyStickRawAxis6;
- float m_joyStickAxis1;
- float m_joyStickAxis2;
- float m_joyStickAxis3;
- float m_joyStickAxis4;
- float m_joyStickAxis5;
- float m_joyStickAxis6;
- int m_joyStickMinAxis1;
- int m_joyStickMinAxis2;
- int m_joyStickMinAxis3;
- int m_joyStickMinAxis4;
- int m_joyStickMinAxis5;
- int m_joyStickMinAxis6;
- int m_joyStickMaxAxis1;
- int m_joyStickMaxAxis2;
- int m_joyStickMaxAxis3;
- int m_joyStickMaxAxis4;
- int m_joyStickMaxAxis5;
- int m_joyStickMaxAxis6;
- int m_joyStickMapAxis[6];
-#endif
-
-
+ bool m_connected;
+ QString m_errorString;
float m_ctrlTrsh; // accel controll treshold
DroneThread *droneThread;
QSettings *droneSettings;
-#ifdef HAVE_SDL
- QTimer joyStickTimer;
- SDL_Joystick *joyStick;
-#endif
+
+
#ifdef QT_SENSORS
QRotationSensor *rSensor; // used for controllind drone with device rotation
#endif
void sendNav(QString cmd);
void sendCmd(QString cmd);
NavData *navData() { return &nd; };
+ QString getLogFileName();
+ unsigned int getLogSeq();
+ bool getRecordLog();
enum droneState {
notInitialized,
initialized,
+ bootstrap,
ready,
flying
void navDataReady();
void timer();
void setFly(bool fly);
+ void setRecordLog(bool);
+ void setLogFileName(QString);
+ void setLogSeq(unsigned int);
void setEmergency(bool emg);
void setDroneControl(float pitch,float roll,float yaw,float vv);
void setDroneGain(float fgain,float bgain,float lgain,float rgain);
private:
+ bool recordLog;
+ unsigned int logSeq;
+ QString logFileName;
+ QFile *logFile;
+
QHostAddress droneHost; // Ip address of the drone
QTimer *stateTimer;
volatile bool stopped;
QUdpSocket *navSock; // Navigation data receive socket port 5554
QUdpSocket *cmdSock; // Ay command socket port 5556
int state;
+ int retry; // retry counter
+ int noreply; // No reply counter incremented every sedcmd, cleared when got reply
int seq; // Drone command seq number
bool m_fly;
bool m_emergency;