New version of quadcopter software written to OO principles

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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FlightController.h Source File

FlightController.h

00001 #include "mbed.h"
00002 #include "Global.h"
00003 #include "rtos.h"
00004 #include "Status.h"
00005 #include "MotorMixer.h"
00006 #include "PidWrapper.h"
00007 #include "RateController.h"
00008 #include "StabController.h"
00009 #include "ConfigFileWrapper.h"
00010 
00011 #ifndef FlightController_H
00012 #define FlightController_H
00013 
00014 class FlightController               
00015 {
00016   public:                  
00017     FlightController(Status& status, Sensors& sensors, NavigationController& navigationController, ConfigFileWrapper& configFileWrapper, PinName motor1, PinName motor2, PinName motor3, PinName motor4); 
00018     ~FlightController();
00019     
00020     MotorMixer::MotorPower getMotorPower();
00021     PidWrapper::PidOutput getPidOutputs();    
00022     PidWrapper::FlightControllerPidParameters getPidParameters();
00023     void setYawStabPidParameters(PidWrapper::PidParameter pidParameters);
00024     void setPitchStabPidParameters(PidWrapper::PidParameter pidParameters);
00025     void setRollStabPidParameters(PidWrapper::PidParameter pidParameters);
00026     void setYawRatePidParameters(PidWrapper::PidParameter pidParameters);
00027     void setPitchRatePidParameters(PidWrapper::PidParameter pidParameters);
00028     void setRollRatePidParameters(PidWrapper::PidParameter pidParameters);
00029     PidWrapper::RatePidState getRatePidState();
00030     PidWrapper::StabPidState getStabPidState();
00031     
00032   private:
00033     static void threadStarter(void const *p);
00034     void threadWorker();
00035     RtosTimer* _rtosTimer;
00036     RateController* _rateController;
00037     StabController* _stabController;
00038     void saveSettings();
00039     Status& _status;
00040     Sensors& _sensors;
00041     NavigationController& _navigationController;
00042     ConfigFileWrapper& _configFileWrapper;
00043     MotorMixer* _motorMixer;
00044     
00045     PidWrapper::PidOutput _pidOutputs;
00046 };
00047 
00048 #endif