Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
ModbusMessage.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_COMMS_MODBUS_MODBUSMESSAGE_HPP
2#define IV_SRC_COMMS_MODBUS_MODBUSMESSAGE_HPP
3
7#include "core/defines.hpp"
8
9namespace iv::comms::modbus
10{
11
13{
14 ~AbstractModbusMessage() override = default;
15 [[nodiscard]] std::vector<std::byte> serialize() const override = 0;
16 [[nodiscard]] bool deserialize(const std::vector<std::byte> &data) override = 0;
17
20 uint16_t transactionId = 0;
21};
22
24{
26 uint16_t numberOfRegisters = 0;
27 std::vector<ModbusChannelBinding> channelBindings;
28
30 ModbusQueryMessage() = default;
32 const uint16_t transactionId_, const iv::types::comms::modbus::modbusAddress firstAddress_,
33 const uint16_t numberOfRegisters_, const std::vector<ModbusChannelBinding> &channelBindings_)
34 {
35 this->slaveId = slaveId_;
36 this->functionCode = functionCode_;
37 this->transactionId = transactionId_;
38 this->firstAddress = firstAddress_;
39 this->numberOfRegisters = numberOfRegisters_;
40 this->channelBindings = channelBindings_;
41 }
42
43 [[nodiscard]] std::vector<std::byte> serializeTCP() const;
44 [[nodiscard]] std::vector<std::byte> serializeRTU() const;
45
46private:
47 [[nodiscard]] std::vector<std::byte> serialize() const override;
48 [[nodiscard]] bool deserialize(const std::vector<std::byte> &data) override
49 {
50 return false;
51 }
52};
53
55{
56 std::optional<iv::comms::modbus::eExceptionCode> exceptionCode;
57 uint8_t byteCount;
58 uint16_t crc {0};
59
60 std::vector<bool> coilValues;
61 std::vector<uint16_t> registerValues;
62
63 bool deserializeTCP(const std::vector<std::byte> &data);
64 bool deserializeRTU(const std::vector<std::byte> &data);
65
66private:
67 [[nodiscard]] std::vector<std::byte> serialize() const override
68 {
69 return {};
70 }
71 [[nodiscard]] bool deserialize(const std::vector<std::byte> &data) override;
72};
73
74}// namespace iv::comms::modbus
75
76#endif//IV_SRC_COMMS_MODBUS_MODBUSMESSAGE_HPP
Definition IMessageComm.hpp:11
Definition AbstractModbusCommunicationProtocol.cpp:8
eFunctionCode
Definition enums.hpp:23
uint16_t modbusAddress
Definition defines.hpp:37
uint8_t slaveId
Definition types.hpp:49
Definition ModbusMessage.hpp:13
iv::types::modbus::slaveId slaveId
Definition ModbusMessage.hpp:18
bool deserialize(const std::vector< std::byte > &data) override=0
iv::comms::modbus::eFunctionCode functionCode
Definition ModbusMessage.hpp:19
std::vector< std::byte > serialize() const override=0
uint16_t transactionId
Definition ModbusMessage.hpp:20
Definition ModbusMessage.hpp:24
std::vector< std::byte > serializeTCP() const
Definition ModbusMessage.cpp:12
bool deserialize(const std::vector< std::byte > &data) override
Definition ModbusMessage.hpp:48
ModbusQueryMessage(const iv::types::modbus::slaveId slaveId_, const iv::comms::modbus::eFunctionCode functionCode_, const uint16_t transactionId_, const iv::types::comms::modbus::modbusAddress firstAddress_, const uint16_t numberOfRegisters_, const std::vector< ModbusChannelBinding > &channelBindings_)
Definition ModbusMessage.hpp:31
std::vector< std::byte > serializeRTU() const
Definition ModbusMessage.cpp:29
uint16_t numberOfRegisters
Definition ModbusMessage.hpp:26
std::vector< std::byte > serialize() const override
Definition ModbusMessage.cpp:41
iv::types::comms::modbus::modbusAddress firstAddress
Definition ModbusMessage.hpp:25
std::vector< ModbusChannelBinding > channelBindings
Definition ModbusMessage.hpp:27
Definition ModbusMessage.hpp:55
std::vector< uint16_t > registerValues
Definition ModbusMessage.hpp:61
uint16_t crc
Definition ModbusMessage.hpp:58
bool deserializeRTU(const std::vector< std::byte > &data)
Definition ModbusMessage.cpp:179
bool deserializeTCP(const std::vector< std::byte > &data)
Definition ModbusMessage.cpp:159
std::vector< std::byte > serialize() const override
Definition ModbusMessage.hpp:67
uint8_t byteCount
Definition ModbusMessage.hpp:57
std::vector< bool > coilValues
Definition ModbusMessage.hpp:60
bool deserialize(const std::vector< std::byte > &data) override
Definition ModbusMessage.cpp:204
std::optional< iv::comms::modbus::eExceptionCode > exceptionCode
Definition ModbusMessage.hpp:56