/* * EncoderMultiturnWraper.hh * * Created on: 22 сент. 2021 г. * Author: sozonov */ #ifndef UMLIBRARY_APPLICATION_DRIVERS_ENCODERMULTITURNWRAPER_HH_ #define UMLIBRARY_APPLICATION_DRIVERS_ENCODERMULTITURNWRAPER_HH_ #include "../ISetupStep.hh" #include "../../systemic/IFunctor.hh" #include "../../driver/IEncoder.hh" #include namespace application { namespace board { //!Декоратор однооборотного энкодрера. struct EncoderMultiturnWraper : public ISetupStep { typedef systemic::IFunctor Action; driver::IEncoder * singleturn = nullptr; bool input( Environment & env ); void build( Environment & env ); struct Links { Environment::Id singleturn; //!< Входные данные для декорирования в многооборотный энкодер. Environment::Id multiturn; //!< Многооборотный энкодер на базе однооборотного. Environment::StatusId failure; Environment::StatusId valid_data; Environment::Id reset; }; struct Setting { unsigned short max_error; //!<Счетчик максимального количества ошибок. float max_angle_delta; //!<Изменение между двумя значениями угла больше данного порога считаются ошибкой. uint16_t num_turn; //!<Количество оборотов. }; const Links & links; const configuration::ProcessConfig & params; const Setting & config; EncoderMultiturnWraper( const Links & links, const Setting & config, const configuration::ProcessConfig & proc ); }; } /* namespace board */ } /* namespace application */ #endif /* UMLIBRARY_APPLICATION_DRIVERS_ENCODERMULTITURNWRAPER_HH_ */