21 std::variant<uint16_t, bool> _value;
63 [[nodiscard]]
bool isCoil()
const {
return std::holds_alternative<bool>(_value); };
69 [[nodiscard]]
bool isReg()
const {
return std::holds_alternative<uint16_t>(_value); };
77 _value =
static_cast<bool>(std::get<uint16_t>(_value));
78 return std::get<bool>(_value);
87 _value =
static_cast<uint16_t
>(std::get<bool>(_value));
88 return std::get<uint16_t>(_value);
96 [[nodiscard]]
const bool &
coil()
const {
return std::get<bool>(_value); };
103 [[nodiscard]]
const uint16_t &
reg()
const {
return std::get<uint16_t>(_value); };
109 [[nodiscard]] std::string
toString() const noexcept {
110 return isCoil() ? ((
coil()) ?
"true" :
"false") : std::to_string(
reg());
Class that represents single modbus cell, it is either coil(bool) or reg(uint16_t).
Definition modbusCell.hpp:19
uint16_t & reg()
Returns register value, changes cell type if necessary.
Definition modbusCell.hpp:85
bool isCoil() const
Checks if cell is coil.
Definition modbusCell.hpp:63
constexpr ModbusCell(bool coil)
Constructs cell with coil value.
Definition modbusCell.hpp:39
const bool & coil() const
Returns coil value.
Definition modbusCell.hpp:96
bool isReg() const
Checks if cell is register.
Definition modbusCell.hpp:69
constexpr ModbusCell()=default
Constructs cell with register type equal to 0.
static ModbusCell initReg(uint16_t reg)
Static wrapper for cell construction.
Definition modbusCell.hpp:50
bool & coil()
Returns coil value, changes cell type if necessary.
Definition modbusCell.hpp:75
static ModbusCell initCoil(bool coil)
Static wrapper for cell construction.
Definition modbusCell.hpp:57
std::string toString() const noexcept
Definition modbusCell.hpp:109
const uint16_t & reg() const
Returns register value.
Definition modbusCell.hpp:103
constexpr ModbusCell(uint16_t reg)
Constructs cell with register value.
Definition modbusCell.hpp:33