New version of quadcopter software written to OO principles

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

FlightController/StabController/StabController.h

Committer:
joe4465
Date:
2015-05-08
Revision:
4:9ffbf9101992
Parent:
2:969dfa4f2436

File content as of revision 4:9ffbf9101992:

#include "mbed.h"
#include "Global.h"
#include "PidWrapper.h"
#include "ConfigFileWrapper.h"
#include "NavigationController.h"

#ifndef StabController_H
#define StabController_H

class StabController               
{
  public:                  
    StabController(Sensors& sensors, NavigationController& navigationController, ConfigFileWrapper& configFileWrapper); 
    ~StabController();
    
    PidWrapper::PidOutput compute();
    PidWrapper::FlightControllerPidParameters getPidParameters();
    void reset();
    void setYawStabPidParameters(PidWrapper::PidParameter pidParameters);
    void setPitchStabPidParameters(PidWrapper::PidParameter pidParameters);
    void setRollStabPidParameters(PidWrapper::PidParameter pidParameters);
    void setYawRatePidParameters(PidWrapper::PidParameter pidParameters);
    void setPitchRatePidParameters(PidWrapper::PidParameter pidParameters);
    void setRollRatePidParameters(PidWrapper::PidParameter pidParameters);
    PidWrapper::StabPidState getStabPidState();
    
  private:
    Sensors& _sensors;
    NavigationController& _navigationController;
    ConfigFileWrapper& _configFileWrapper;
    PidWrapper _yawRatePidController;
    PidWrapper _pitchRatePidController;
    PidWrapper _rollRatePidController;
    PidWrapper _yawStabPidController;
    PidWrapper _pitchStabPidController;
    PidWrapper _rollStabPidController;
    NavigationController::SetPoint _setPoints;
    Imu::Rate _rate;
    Imu::Angle _angle;
    PidWrapper::PidOutput _stabPidOutputs;
    PidWrapper::PidOutput _ratePidOutputs;
};

#endif