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

45 lines
888 B
C++
Raw Permalink Normal View History

/*
* ModbusDiscreteOutput.cpp
*
* Created on: 18 <EFBFBD><EFBFBD><EFBFBD>. 2021 <EFBFBD>.
* 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;
}
}