// %flair:license{ // This file is part of the Flair framework distributed under the // CECILL-C License, Version 1.0. // %flair:license} // created: 2013/04/29 // filename: BlCtrlV2_x4_speed.cpp // // author: Guillaume Sanahuja // Copyright Heudiasyc UMR UTC/CNRS 7253 // // version: $Id: $ // // purpose: objet integrant les moteurs i2c, controle en vitesse // // /*********************************************************************/ #ifndef BLCTRLV2_X4_SPEED_H #define BLCTRLV2_X4_SPEED_H #include #include namespace flair { namespace core { class cvmatrix; class FrameworkManager; class I2cPort; } namespace gui { class TabWidget; class Tab; class SpinBox; class DoubleSpinBox; class ComboBox; class PushButton; class GroupBox; } } namespace flair { namespace actuator { class BlCtrlV2_x4_speed : public core::Thread, public core::IODevice { public: BlCtrlV2_x4_speed(core::FrameworkManager *parent, std::string name, core::I2cPort *i2cport, uint8_t base_address, uint8_t priority); ~BlCtrlV2_x4_speed(); void UseDefaultPlot(void); void LockUserInterface(void); void UnlockUserInterface(void); void SetEnabled(bool status); void SetUroll(float value); void SetUpitch(float value); void SetUyaw(float value); void SetUgaz(float value); void SetRollTrim(float value); void SetPitchTrim(float value); void SetYawTrim(float value); void SetGazTrim(float value); float TrimValue(void); int StartValue(void); private: /*! * \brief Update using provided datas * * Reimplemented from IODevice. * * \param data data from the parent to process */ void UpdateFrom(core::io_data *data){}; void WriteValue(uint16_t value); float GetSpeed(void); void StartTest(void); void StopTest(void); /*! * \brief Run function * * Reimplemented from Thread. * */ void Run(void); void Update(void); gui::Tab *main_tab; gui::TabWidget *tab; gui::GroupBox *reglages_groupbox; gui::SpinBox *min, *max, *test; gui::PushButton *button_avg, *button_avd, *button_arg, *button_ard; gui::ComboBox *av_g, *av_d, *ar_g, *ar_d, *pas; gui::DoubleSpinBox *trim, *kp, *ki; gui::SpinBox *start_value, *poles; core::Time start_time, flight_start_time; int time_sec; float speed_av_g, speed_av_d, speed_ar_g, speed_ar_d; float int_av_g, int_av_d, int_ar_g, int_ar_d; // matrix core::cvmatrix *input; core::cvmatrix *output; int tested_motor; core::I2cPort *i2cport; uint8_t slave_address; bool enabled; uint16_t SatPWM(float vel_cons, uint16_t min, uint16_t max); }; } // end namespace actuator } // end namespace flair #endif // BLCTRLV2_X4_SPEED_H