/* * ModbusAdapter.hpp * * Created on: 17 Aug 2022 * Author: malyarenko */ #ifndef UMLIBRARY_APPLICATION_DRIVERS_MODBUSADAPTER_HPP_ #define UMLIBRARY_APPLICATION_DRIVERS_MODBUSADAPTER_HPP_ #include "../ISetupStep.hh" #include "../../systemic/IValueAsync.hpp" #include "../../systemic/IFunctor.hh" #include "../../peripheral/IUartPort.hh" #include "../../peripheral/IGpio.hh" #include "../../driver/ModbusAdapter.hpp" namespace application { namespace board { class ModbusAdapter : public ISetupStep { public: struct Links { /* Input links */ Environment::Id uart_in; Environment::Id uart_callback; Environment::Id de_pin; Environment::Id re_pin; /* Output links */ Environment::Id uart_out; }; struct Setting { uint16_t active_level_de; uint16_t active_level_re; }; const Links & links; const Setting & setting; bool input( Environment & env ); void build( Environment & env ); ModbusAdapter( const Links & links, const Setting & setting ); private: typedef driver::ModbusAdapter::TranceiverHandler TranceiverHandler; typedef driver::ModbusAdapter::Callback Callback; peripheral::IUartPort * uart_in; Callback * uart_callback; peripheral::IGpio * de_pin; peripheral::IGpio * re_pin; }; } /* namespace board */ } /* namespace application */ #endif /* UMLIBRARY_APPLICATION_DRIVERS_MODBUSADAPTER_HH_ */