Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
iv::comms::modbus::AbstractModbusCommunicationProtocol Class Referenceabstract

#include <AbstractModbusCommunicationProtocol.hpp>

Inheritance diagram for iv::comms::modbus::AbstractModbusCommunicationProtocol:
[legend]
Collaboration diagram for iv::comms::modbus::AbstractModbusCommunicationProtocol:
[legend]

Public Member Functions

 AbstractModbusCommunicationProtocol ()=delete
 
 AbstractModbusCommunicationProtocol (const std::shared_ptr< iv::comms::ICommunicationDriver > &driver, iv::model::comms::modbus::Settings settings, const std::weak_ptr< iv::diamar::AppFailuresLoggerManager > &appFailuresLoggerManager, iv::types::networkId networkId, std::weak_ptr< iv::channels::AbstractChannel > &heartbeatChannel)
 
 AbstractModbusCommunicationProtocol (const AbstractModbusCommunicationProtocol &other)=delete
 
 AbstractModbusCommunicationProtocol (AbstractModbusCommunicationProtocol &&other)=delete
 
 ~AbstractModbusCommunicationProtocol () override=default
 
AbstractModbusCommunicationProtocoloperator= (const AbstractModbusCommunicationProtocol &other)=delete
 
AbstractModbusCommunicationProtocoloperator= (AbstractModbusCommunicationProtocol &&other)=delete
 
bool isOnline () override
 
virtual bool writeQueries ()=0
 
virtual bool readQueries ()=0
 
std::optional< iv::types::comms::modbus::registerValuegetAddressValue (const iv::types::comms::modbus::modbusAddressAndFunction &addressAndFunct)
 
void emptyGrid ()
 

Protected Member Functions

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)
 

Protected Attributes

iv::model::comms::modbus::Settings m_modbusSettings
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesCoils
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesDiscreteInputs
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesInputRegisters
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesHoldingRegisters
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesWriteCoils
 
std::vector< iv::comms::modbus::ModbusQueryMessagem_queriesWriteRegisters
 
std::map< iv::types::comms::modbus::modbusAddressAndFunction, std::optional< iv::types::comms::modbus::registerValue > > m_valueAtAddress
 
std::weak_ptr< iv::channels::AbstractChannelm_heartbeatChannel
 
std::weak_ptr< iv::diamar::AppFailuresLoggerManagerm_appFailuresLoggerManager
 
iv::types::networkId m_networkId
 
std::shared_ptr< iv::comms::ICommunicationDriverm_driver
 

Private Member Functions

std::vector< iv::comms::modbus::ModbusQueryMessagebuildSpecificQuery (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
 

Static Private Member Functions

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)
 

Constructor & Destructor Documentation

◆ AbstractModbusCommunicationProtocol() [1/4]

iv::comms::modbus::AbstractModbusCommunicationProtocol::AbstractModbusCommunicationProtocol ( )
delete

◆ AbstractModbusCommunicationProtocol() [2/4]

iv::comms::modbus::AbstractModbusCommunicationProtocol::AbstractModbusCommunicationProtocol ( const std::shared_ptr< iv::comms::ICommunicationDriver > & driver,
iv::model::comms::modbus::Settings settings,
const std::weak_ptr< iv::diamar::AppFailuresLoggerManager > & appFailuresLoggerManager,
iv::types::networkId networkId,
std::weak_ptr< iv::channels::AbstractChannel > & heartbeatChannel )

◆ AbstractModbusCommunicationProtocol() [3/4]

iv::comms::modbus::AbstractModbusCommunicationProtocol::AbstractModbusCommunicationProtocol ( const AbstractModbusCommunicationProtocol & other)
delete

◆ AbstractModbusCommunicationProtocol() [4/4]

iv::comms::modbus::AbstractModbusCommunicationProtocol::AbstractModbusCommunicationProtocol ( AbstractModbusCommunicationProtocol && other)
delete

◆ ~AbstractModbusCommunicationProtocol()

iv::comms::modbus::AbstractModbusCommunicationProtocol::~AbstractModbusCommunicationProtocol ( )
overridedefault

Member Function Documentation

◆ buildAllQueries()

void iv::comms::modbus::comms::modbus::AbstractModbusCommunicationProtocol::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 )
protected

TODO RAG: Esta opción genera problemas si tienes un canal de un tipo que ya de por si es mayor a 1 registro. ej: Float, Dint, Qint, etc. ¿Descartamos ese canal de la lista?

◆ buildSpecificQuery()

std::vector< iv::comms::modbus::ModbusQueryMessage > iv::comms::modbus::AbstractModbusCommunicationProtocol::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
nodiscardprivate

◆ classifyChannelsMap()

void iv::comms::modbus::AbstractModbusCommunicationProtocol::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 )
staticprivate

◆ emptyGrid()

void iv::comms::modbus::AbstractModbusCommunicationProtocol::emptyGrid ( )

◆ getAddressValue()

std::optional< iv::types::comms::modbus::registerValue > iv::comms::modbus::AbstractModbusCommunicationProtocol::getAddressValue ( const iv::types::comms::modbus::modbusAddressAndFunction & addressAndFunct)

◆ isOnline()

bool iv::comms::modbus::AbstractModbusCommunicationProtocol::isOnline ( )
inlinenodiscardoverridevirtual

◆ operator=() [1/2]

AbstractModbusCommunicationProtocol & iv::comms::modbus::AbstractModbusCommunicationProtocol::operator= ( AbstractModbusCommunicationProtocol && other)
delete

◆ operator=() [2/2]

AbstractModbusCommunicationProtocol & iv::comms::modbus::AbstractModbusCommunicationProtocol::operator= ( const AbstractModbusCommunicationProtocol & other)
delete

◆ readQueries()

virtual bool iv::comms::modbus::AbstractModbusCommunicationProtocol::readQueries ( )
pure virtual

◆ writeQueries()

virtual bool iv::comms::modbus::AbstractModbusCommunicationProtocol::writeQueries ( )
pure virtual

Member Data Documentation

◆ m_appFailuresLoggerManager

std::weak_ptr<iv::diamar::AppFailuresLoggerManager> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_appFailuresLoggerManager
protected

◆ m_driver

std::shared_ptr<iv::comms::ICommunicationDriver> iv::comms::ICommunicationProtocol::m_driver
protectedinherited

◆ m_heartbeatChannel

std::weak_ptr<iv::channels::AbstractChannel> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_heartbeatChannel
protected

◆ m_modbusSettings

iv::model::comms::modbus::Settings iv::comms::modbus::AbstractModbusCommunicationProtocol::m_modbusSettings
protected

◆ m_networkId

iv::types::networkId iv::comms::modbus::AbstractModbusCommunicationProtocol::m_networkId
protected

◆ m_queriesCoils

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesCoils
protected

Queries para leer coils.

◆ m_queriesDiscreteInputs

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesDiscreteInputs
protected

Queries para leer discrete inputs.

◆ m_queriesHoldingRegisters

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesHoldingRegisters
protected

Queries para leer holding registers.

◆ m_queriesInputRegisters

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesInputRegisters
protected

Queries para leer input registers.

◆ m_queriesWriteCoils

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesWriteCoils
protected

Queries para escribir uno o multiples coils.

◆ m_queriesWriteRegisters

std::vector<iv::comms::modbus::ModbusQueryMessage> iv::comms::modbus::AbstractModbusCommunicationProtocol::m_queriesWriteRegisters
protected

Queries para escribir uno o multiples registros.

◆ m_valueAtAddress

std::map<iv::types::comms::modbus::modbusAddressAndFunction, std::optional<iv::types::comms::modbus::registerValue> > iv::comms::modbus::AbstractModbusCommunicationProtocol::m_valueAtAddress
protected

Valor contenido en cada registro.


The documentation for this class was generated from the following files: