1#ifndef IV_SRC_COMMS_MODBUS_ABSTRACTMODBUSCOMMUNICATIONPROTOCOL_HPP_
2#define IV_SRC_COMMS_MODBUS_ABSTRACTMODBUSCOMMUNICATIONPROTOCOL_HPP_
16 const std::weak_ptr<iv::diamar::AppFailuresLoggerManager> &appFailuresLoggerManager,
33 std::optional<iv::types::comms::modbus::registerValue>
40 std::vector<std::shared_ptr<iv::channels::AbstractChannel>>> &channels,
46 std::vector<iv::comms::modbus::ModbusQueryMessage>
48 std::vector<iv::comms::modbus::ModbusQueryMessage>
50 std::vector<iv::comms::modbus::ModbusQueryMessage>
52 std::vector<iv::comms::modbus::ModbusQueryMessage>
54 std::vector<iv::comms::modbus::ModbusQueryMessage>
56 std::map<iv::types::comms::modbus::modbusAddressAndFunction, std::optional<iv::types::comms::modbus::registerValue>>
66 std::vector<std::shared_ptr<iv::channels::AbstractChannel>>> &channelsByAddress,
67 std::vector<std::shared_ptr<iv::channels::AbstractChannel>> &readCoils,
68 std::vector<std::shared_ptr<iv::channels::AbstractChannel>> &readDiscreteInputs,
69 std::vector<std::shared_ptr<iv::channels::AbstractChannel>> &readInputRegisters,
70 std::vector<std::shared_ptr<iv::channels::AbstractChannel>> &readHoldingRegisters,
71 std::vector<std::shared_ptr<iv::channels::AbstractChannel>> &writeCoils,
72 std::vector<std::shared_ptr<iv::channels::AbstractChannel>> &writeHoldingRegisters,
75 [[nodiscard]] std::vector<iv::comms::modbus::ModbusQueryMessage>
76 buildSpecificQuery(
const std::vector<std::shared_ptr<iv::channels::AbstractChannel>> &chVectOrderedByAddress,
Definition ICommunicationProtocol.hpp:12
std::shared_ptr< iv::comms::ICommunicationDriver > m_driver
Definition ICommunicationProtocol.hpp:29
Definition AbstractModbusCommunicationProtocol.hpp:11
static void classifyChannelsMap(const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > &channelsByAddress, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readCoils, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readDiscreteInputs, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readInputRegisters, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &readHoldingRegisters, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &writeCoils, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &writeHoldingRegisters, const iv::types::networkId &netId)
Definition AbstractModbusCommunicationProtocol.cpp:21
~AbstractModbusCommunicationProtocol() override=default
virtual bool readQueries()=0
std::vector< iv::comms::modbus::ModbusQueryMessage > m_queriesWriteRegisters
Definition AbstractModbusCommunicationProtocol.hpp:55
std::optional< iv::types::comms::modbus::registerValue > getAddressValue(const iv::types::comms::modbus::modbusAddressAndFunction &addressAndFunct)
Definition AbstractModbusCommunicationProtocol.cpp:252
std::vector< iv::comms::modbus::ModbusQueryMessage > m_queriesHoldingRegisters
Definition AbstractModbusCommunicationProtocol.hpp:51
void buildAllQueries(const std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::vector< std::shared_ptr< iv::channels::AbstractChannel > > > &channels, const iv::types::networkId &netId, bool forceContinuousRegisters)
Definition AbstractModbusCommunicationProtocol.cpp:122
std::vector< iv::comms::modbus::ModbusQueryMessage > buildSpecificQuery(const std::vector< std::shared_ptr< iv::channels::AbstractChannel > > &chVectOrderedByAddress, uint16_t maxRegPerQuery, iv::comms::modbus::eFunctionCode mbFunction, const iv::types::networkId &netId, bool forceContinuousRegisters=false) const
std::weak_ptr< iv::channels::AbstractChannel > m_heartbeatChannel
Definition AbstractModbusCommunicationProtocol.hpp:59
AbstractModbusCommunicationProtocol & operator=(const AbstractModbusCommunicationProtocol &other)=delete
iv::types::networkId m_networkId
Definition AbstractModbusCommunicationProtocol.hpp:61
bool isOnline() override
Definition AbstractModbusCommunicationProtocol.hpp:25
AbstractModbusCommunicationProtocol & operator=(AbstractModbusCommunicationProtocol &&other)=delete
void emptyGrid()
Definition AbstractModbusCommunicationProtocol.cpp:262
AbstractModbusCommunicationProtocol(const AbstractModbusCommunicationProtocol &other)=delete
iv::model::comms::modbus::Settings m_modbusSettings
Definition AbstractModbusCommunicationProtocol.hpp:43
std::vector< iv::comms::modbus::ModbusQueryMessage > m_queriesCoils
Definition AbstractModbusCommunicationProtocol.hpp:45
virtual bool writeQueries()=0
AbstractModbusCommunicationProtocol()=delete
std::weak_ptr< iv::diamar::AppFailuresLoggerManager > m_appFailuresLoggerManager
Definition AbstractModbusCommunicationProtocol.hpp:60
AbstractModbusCommunicationProtocol(AbstractModbusCommunicationProtocol &&other)=delete
std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::optional< iv::types::comms::modbus::registerValue > > m_valueAtAddress
Definition AbstractModbusCommunicationProtocol.hpp:57
std::vector< iv::comms::modbus::ModbusQueryMessage > m_queriesWriteCoils
Definition AbstractModbusCommunicationProtocol.hpp:53
std::vector< iv::comms::modbus::ModbusQueryMessage > m_queriesInputRegisters
Definition AbstractModbusCommunicationProtocol.hpp:49
std::vector< iv::comms::modbus::ModbusQueryMessage > m_queriesDiscreteInputs
Definition AbstractModbusCommunicationProtocol.hpp:47
Definition AbstractModbusCommunicationProtocol.cpp:8
eFunctionCode
Definition enums.hpp:23
std::pair< iv::types::comms::modbus::modbusAddress, iv::comms::modbus::eRegisterType > modbusAddressAndFunction
Definition defines.hpp:39
std::string networkId
Definition types.hpp:43
Definition ModbusSettings.hpp:11