MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/driver/ModbusDiscreteOutput.cpp
2024-06-07 11:12:56 +03:00

45 lines
892 B
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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;
}
}