New version of quadcopter software written to OO principles

Dependencies:   mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS

Revision:
2:969dfa4f2436
Parent:
0:c6a85bb2a827
--- a/NavigationController/NavigationController.h	Wed Mar 04 18:53:43 2015 +0000
+++ b/NavigationController/NavigationController.h	Wed Apr 01 11:19:21 2015 +0000
@@ -0,0 +1,59 @@
+#ifndef NavigationController_H
+#define NavigationController_H
+
+#include "mbed.h"
+#include "Global.h"
+#include "Status.h"
+#include "rtos.h"
+#include "Rc.h"
+#include "Sensors.h"
+#include "AltitudeController.h"
+#include "ConfigFileWrapper.h"
+
+class NavigationController                
+{
+  public:             
+    NavigationController(Status& status, Sensors& sensors, Rc& rc, ConfigFileWrapper& configFileWrapper);    
+    ~NavigationController();
+    
+    struct SetPoint
+    {
+       double yaw;
+       double pitch;
+       double roll;
+       double throttle;
+       double yawTarget;
+       double yawDifference;
+       double climbRate;
+       double targetAltitude;
+    };
+    
+    SetPoint getSetPoint();
+    void updateYawTarget();
+    void updateAltitudeTarget();
+    PidWrapper::NavigationControllerPidParameters getPidParameters();
+    void setAltitudeRatePidParameters(PidWrapper::PidParameter pidParameters);
+    void setAltitudeStabPidParameters(PidWrapper::PidParameter pidParameters);
+    
+  private:
+    static void threadStarter(void const *p);
+    void threadWorker();
+    double map(double input, double inputMin, double inputMax, double outputMin, double outputMax);   
+    
+    Thread* _thread;
+    Status& _status;
+    Sensors& _sensors;
+    Rc& _rc;
+    ConfigFileWrapper& _configFileWrapper;
+    void saveSettings();
+    SetPoint _setPoints;
+    AltitudeController* _altitudeController;
+    Status::State _state;
+    Status::NavigationMode _navigationMode;
+    Rc::MappedRc _mappedRc;
+    Imu::Angle _angle;
+    Sensors::Altitude _altitude;
+    double _altitudeHoldPidOutput;
+};
+
+#endif
\ No newline at end of file