MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/application/drivers/ModbusAdapterInitializer.cpp

49 lines
1.9 KiB
C++

/*
* ModbusAdapterInitializer.cpp
*
* Created on: 17 Aug 2022
* Author: malyarenko
*/
#include "../../driver/ModbusAdapter.hpp"
#include "ModbusAdapter.hh"
application::board::ModbusAdapter::ModbusAdapter( const Links & links, const Setting & setting )
: links(links),
setting(setting),
uart_in(nullptr),
uart_callback(nullptr),
de_pin(nullptr),
re_pin(nullptr) {}
bool application::board::ModbusAdapter::input( Environment & env ) {
typedef systemic::IValueTypeSet< systemic::IFunctor<void, bool> * > ModbusAdapterCallback;
return grab(uart_in, env.rholder.getShared<peripheral::IUartPort>(links.uart_in))
&& grab(uart_callback, env.rholder.getShared<ModbusAdapterCallback>(links.uart_callback))
&& grab(de_pin, env.rholder.getShared<peripheral::IGpio>(links.de_pin))
&& grab(re_pin, env.rholder.getShared<peripheral::IGpio>(links.re_pin));
}
void application::board::ModbusAdapter::build( Environment & env ) {
typedef driver::ModbusAdapter ModbusAdapterDriver;
const bool active_level_de = setting.active_level_de != 0;
const bool active_level_re = setting.active_level_re != 0;
ModbusAdapterDriver* modbus_adapter_driver
= memories::instance_object<ModbusAdapterDriver>(env.static_object_ma,
/* ModbusAdapter ctor */
uart_in,
uart_callback,
de_pin,
active_level_de,
re_pin,
active_level_re );
env.rholder.share<peripheral::IUartPort>(*modbus_adapter_driver, links.uart_out);
}