New version of quadcopter software written to OO principles
Dependencies: mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS
Diff: NavigationController/NavigationController.h
- Revision:
- 2:969dfa4f2436
- Parent:
- 0:c6a85bb2a827
diff -r ec3521d90369 -r 969dfa4f2436 NavigationController/NavigationController.h --- 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