/* * ModbusDiscreteOutput.cpp * * Created on: 18 мар. 2021 г. * Author: titov */ #include "ModbusDiscreteOutput.hh" driver::modbus::ModbusDiscreteOutput::ModbusDiscreteOutput( bool initial_state, bool inversion ) : coil_state(initial_state), inversion(inversion) {} const bool & driver::modbus::ModbusDiscreteOutput::status() const { return coil_state; } driver::modbus::ModbusDiscreteOutput::Status driver::modbus::ModbusDiscreteOutput::read( uint16_t & reg ) { reg = ( coil_state == inversion ? 0x0000u : 0xFF00u ); return Done; } driver::modbus::ModbusDiscreteOutput::Status driver::modbus::ModbusDiscreteOutput::write( uint16_t reg ) { switch(reg) { case 0x0000u: coil_state = off_state(); return Done; case 0xFF00u: coil_state = on_state(); return Done; default: return Failure; } }