Sync refactoring for multiple platforms
[mardrone] / mardrone / dronelib / dronecontrol.h
index 1efc695..f5c77f7 100644 (file)
@@ -42,6 +42,7 @@ class DroneControl : public QObject
     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(int pwm_motor1 READ pwm_motor1 NOTIFY navDataChanged)
@@ -49,35 +50,7 @@ class DroneControl : public QObject
     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)
@@ -110,36 +83,9 @@ public:
 
 // 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();
@@ -173,6 +119,7 @@ signals:
     void configChanged();
     void pitchRollChanged();
     void joyStickChanged();
+    void connectedChanged();
 public slots:
     void navDataUpdated();
     void statusUpdated();
@@ -198,38 +145,8 @@ private:
     bool  m_ctrlActive;
     bool  m_useAccel;
     bool  m_useJoyStick;
+    bool  m_connected;
 
-#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
 
 
 
@@ -241,10 +158,7 @@ private:
 
     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
@@ -266,6 +180,7 @@ public:
     enum droneState {
         notInitialized,
         initialized,
+        bootstrap,
         ready,
         flying
 
@@ -287,6 +202,8 @@ private:
      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;