MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/ModbusAction.cpp

40 lines
1013 B
C++
Raw Normal View History

/*
* ModbusAction.cpp
*
* Created on: 18 <EFBFBD><EFBFBD><EFBFBD>. 2021 <EFBFBD>.
* Author: titov
*/
#include "ModbusAction.hh"
driver::modbus::ModbusAction::ModbusAction( systemic::IFunctor<void> & action_on,
systemic::IFunctor<void> & action_off,
bool inversion ) : action_on(action_on), action_off(action_off), inversion(inversion), coil_state(false) {}
const bool & driver::modbus::ModbusAction::state() const {
return coil_state;
}
driver::modbus::IModBusDispatch::Status driver::modbus::ModbusAction::read( uint16_t & reg ) {
reg = ( coil_state ? 0xFF00u : 0x0000u );
return driver::modbus::IModBusDispatch::Done;
}
driver::modbus::IModBusDispatch::Status driver::modbus::ModbusAction::write(uint16_t reg) {
bool new_state = reg;
if( coil_state != new_state )
new_state != inversion ? action_on() : action_off();
coil_state = new_state;
return driver::modbus::IModBusDispatch::Done;
}