CuteHMI - Modbus (CuteHMI.Modbus.4)
cutehmi::modbus::AbstractClient Class Referenceabstract

Abstract client. More...

#include <cutehmi/modbus/AbstractClient.hpp>

Inheritance diagram for cutehmi::modbus::AbstractClient:
cutehmi::modbus::AbstractDevice QObject cutehmi::services::Serviceable CuteHMI::Modbus::AbstractClient cutehmi::modbus::DummyClient cutehmi::modbus::RTUClient cutehmi::modbus::TCPClient CuteHMI::Modbus::DummyClient CuteHMI::Modbus::RTUClient CuteHMI::Modbus::TCPClient

Signals

void pollingIntervalChanged ()
 
void pollingTaskIntervalChanged ()
 
void requestIntervalChanged ()
 
void timeoutChanged ()
 
- Signals inherited from cutehmi::modbus::AbstractDevice
void errored (cutehmi::InplaceError error)
 
void stateChanged ()
 
void readyChanged ()
 
void maxReadCoilsChanged ()
 
void maxWriteCoilsChanged ()
 
void maxReadDiscreteInputsChanged ()
 
void maxWriteDiscreteInputsChanged ()
 
void maxReadHoldingRegistersChanged ()
 
void maxWriteHoldingRegistersChanged ()
 
void maxReadInputRegistersChanged ()
 
void maxWriteInputRegistersChanged ()
 
void maxRequestsChanged ()
 
void requestCompleted (QJsonObject request, QJsonObject reply)
 

Public Member Functions

int pollingInterval () const
 
void setPollingInterval (int interval)
 
int pollingTaskInterval () const
 
void setPollingTaskInterval (int interval)
 
int requestInterval () const
 
void setRequestInterval (int interval)
 
virtual int timeout () const =0
 
virtual void setTimeout (int timeout)=0
 
void configureStarting (QState *starting, AssignStatusFunction assignStatus) override
 
void configureStarted (QState *active, const QState *idling, const QState *yielding, AssignStatusFunction assignStatus) override
 
void configureStopping (QState *stopping, AssignStatusFunction assignStatus) override
 
void configureBroken (QState *broken, AssignStatusFunction assignStatus) override
 
void configureRepairing (QState *repairing, AssignStatusFunction assignStatus) override
 
void configureEvacuating (QState *evacuating, AssignStatusFunction assignStatus) override
 
std::unique_ptr< QAbstractTransitiontransitionToStarted () const override
 
std::unique_ptr< QAbstractTransitiontransitionToStopped () const override
 
std::unique_ptr< QAbstractTransitiontransitionToBroken () const override
 
std::unique_ptr< QAbstractTransitiontransitionToYielding () const override
 
std::unique_ptr< QAbstractTransitiontransitionToIdling () const override
 
- Public Member Functions inherited from cutehmi::modbus::AbstractDevice
State state () const
 
bool ready () const
 Get readiness status. More...
 
int maxReadCoils () const
 
void setMaxReadCoils (int maxReadCoils)
 
int maxWriteCoils () const
 
void setMaxWriteCoils (int maxWriteCoils)
 
int maxReadDiscreteInputs () const
 
void setMaxReadDiscreteInputs (int maxReadDiscreteInputs)
 
int maxWriteDiscreteInputs () const
 
void setMaxWriteDiscreteInputs (int maxWriteDiscreteInputs)
 
int maxReadHoldingRegisters () const
 
void setMaxReadHoldingRegisters (int maxReadHoldingRegisters)
 
int maxWriteHoldingRegisters () const
 
void setMaxWriteHoldingRegisters (int maxWriteHoldingRegisters)
 
int maxReadInputRegisters () const
 
void setMaxReadInputRegisters (int maxReadInputRegisters)
 
int maxWriteInputRegisters () const
 
void setMaxWriteInputRegisters (int maxWriteInputRegisters)
 
int maxRequests () const
 
void setMaxRequests (int maxRequests)
 
CoilcoilAt (quint16 address)
 
DiscreteInputdiscreteInputAt (quint16 address)
 
HoldingRegisterholdingRegisterAt (quint16 address)
 
InputRegisterinputRegisterAt (quint16 address)
 
Q_INVOKABLE void requestReadCoils (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read coils request. More...
 
Q_INVOKABLE void requestWriteCoil (quint16 address, bool value, QUuid *requestId=nullptr)
 Write coils request. More...
 
Q_INVOKABLE void requestWriteMultipleCoils (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple coils request. More...
 
Q_INVOKABLE void requestReadDiscreteInputs (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read discrete inputs request. More...
 
Q_INVOKABLE void requestWriteDiscreteInput (quint16 address, bool value, QUuid *requestId=nullptr)
 Write discrete input request. More...
 
Q_INVOKABLE void requestWriteMultipleDiscreteInputs (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple discrete inputs request. More...
 
Q_INVOKABLE void requestReadHoldingRegisters (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read holding registers request. More...
 
Q_INVOKABLE void requestWriteHoldingRegister (quint16 address, quint16 value, QUuid *requestId=nullptr)
 Write holding register request. More...
 
Q_INVOKABLE void requestWriteMultipleHoldingRegisters (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple holding registers request. More...
 
Q_INVOKABLE void requestReadInputRegisters (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read input registers request. More...
 
Q_INVOKABLE void requestWriteInputRegister (quint16 address, quint16 value, QUuid *requestId=nullptr)
 Write input register request. More...
 
Q_INVOKABLE void requestWriteMultipleInputRegisters (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple input registers request. More...
 
Q_INVOKABLE void requestDiagnostics (cutehmi::modbus::AbstractDevice::DiagnosticsSubfunction subfunction, quint16 data, QUuid *requestId=nullptr)
 Diagonistics request. More...
 
Q_INVOKABLE void requestReadExceptionStatus (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestFetchCommEventCounter (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestFetchCommEventLog (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestReportSlaveId (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestMaskWriteHoldingRegister (quint16 address, quint16 andMask, quint16 orMask, QUuid *requestId=nullptr)
 Mask write holding register request. More...
 
Q_INVOKABLE void requestReadWriteMultipleHoldingRegisters (quint16 readAddress, quint16 amount, quint16 writeAddress, QJsonArray values, QUuid *requestId=nullptr)
 Read/write multiple holding registers request. More...
 
Q_INVOKABLE void requestReadFIFOQueue (quint16 address, QUuid *requestId=nullptr)
 Read FIFO queue request. More...
 
Q_INVOKABLE QJsonObject readFileRecordSubrequest (quint16 file, quint16 address, quint16 amount)
 Generate read file record subrequest. More...
 
Q_INVOKABLE void requestReadFileRecord (QJsonArray subrequests, QUuid *requestId=nullptr)
 Read file record request. More...
 
Q_INVOKABLE QJsonObject writeFileRecordSubrequest (quint16 file, quint16 address, QJsonArray values)
 Generate write file record subrequest. More...
 
Q_INVOKABLE void requestWriteFileRecord (QJsonArray subrequests, QUuid *requestId=nullptr)
 Write file record request. More...
 
Q_INVOKABLE void request (cutehmi::modbus::AbstractDevice::Function function, QJsonObject payload, QUuid *requestId=nullptr)
 Modbus function request. More...
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
 QObject (QObject *parent)
 
virtual ~QObject ()
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectListchildren () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
qobject_cast (QObject *object)
 
qobject_cast (const QObject *object)
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
 Q_CLASSINFO (Name, Value)
 
 Q_INTERFACES (...)
 
 Q_PROPERTY (...)
 
 Q_ENUMS (...)
 
 Q_FLAGS (...)
 
 Q_ENUM (...)
 
 Q_FLAG (...)
 
 Q_ENUM_NS (...)
 
 Q_FLAG_NS (...)
 
 Q_OBJECT Q_OBJECT
 
 Q_GADGET Q_GADGET
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SLOTS Q_SLOTS
 
 Q_SLOT Q_SLOT
 
 Q_EMIT Q_EMIT
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
virtual void configureStarting (QState *starting, AssignStatusFunction assignStatus)=0
 
virtual void configureStarted (QState *active, const QState *idling, const QState *yielding, AssignStatusFunction assignStatus)=0
 
virtual void configureStopping (QState *stopping, AssignStatusFunction assignStatus)=0
 
virtual void configureBroken (QState *broken, AssignStatusFunction assignStatus)=0
 
virtual void configureRepairing (QState *repairing, AssignStatusFunction assignStatus)=0
 
virtual void configureEvacuating (QState *evacuating, AssignStatusFunction assignStatus)=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToStarted () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToStopped () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToBroken () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToYielding () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToIdling () const=0
 

Static Public Attributes

static constexpr int INITIAL_POLLING_INTERVAL = 250
 
static constexpr int INITIAL_POLLING_TASK_INTERVAL = 10
 
static constexpr int INITIAL_REQUEST_INTERVAL = 5
 
- Static Public Attributes inherited from cutehmi::modbus::AbstractDevice
static constexpr quint16 MIN_ADDRESS = 0
 
static constexpr quint16 MAX_ADDRESS = 65535
 
static constexpr int INITIAL_MAX_READ_COILS = 16
 
static constexpr int INITIAL_MAX_WRITE_COILS = 16
 
static constexpr int INITIAL_MAX_READ_DISCRETE_INPUTS = 16
 
static constexpr int INITIAL_MAX_WRITE_DISCRETE_INPUTS = 16
 
static constexpr int INITIAL_MAX_READ_HOLDING_REGISTERS = 16
 
static constexpr int INITIAL_MAX_WRITE_HOLDING_REGISTERS = 16
 
static constexpr int INITIAL_MAX_READ_INPUT_REGISTERS = 16
 
static constexpr int INITIAL_MAX_WRITE_INPUT_REGISTERS = 16
 
static constexpr int INITIAL_MAX_REQUESTS = 1000
 
static constexpr State INITIAL_STATE = CLOSED
 
static constexpr bool INITIAL_READY = false
 
static constexpr int MAX_READ_TCP_COILS = 1976
 Maximal amount of coils that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_COILS = 2008
 Maximal amount of coils that can be read at once through RTU. More...
 
static constexpr int MAX_WRITE_TCP_COILS = 1944
 Maximal amount of coils that can be written at once through TCP. More...
 
static constexpr int MAX_WRITE_RTU_COILS = 1976
 Maximal amount of coils that can be written at once through RTU. More...
 
static constexpr int MAX_READ_TCP_DISCRETE_INPUTS = 1976
 Maximal amount of discrete inputs that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_DISCRETE_INPUTS = 2008
 Maximal amount of discrete inputs that can be read at once through RTU. More...
 
static constexpr int MAX_READ_TCP_HOLDING_REGISTERS = 123
 Maximal amount of holding registers that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_HOLDING_REGISTERS = 125
 Maximal amount of holding registers that can be read at once through RTU. More...
 
static constexpr int MAX_WRITE_TCP_HOLDING_REGISTERS = 123
 Maximal amount of holding registers that can be written at once through TCP. More...
 
static constexpr int MAX_WRITE_RTU_HOLDING_REGISTERS = 125
 Maximal amount of holding registers that can be written at once through RTU. More...
 
static constexpr int MAX_READ_TCP_INPUT_REGISTERS = 123
 Maximal amount of input registers that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_INPUT_REGISTERS = 125
 Maximal amount of input registers that can be read at once through RTU. More...
 

Protected Slots

virtual void onStateChanged ()
 
void poll ()
 
void pollingTask ()
 
- Protected Slots inherited from cutehmi::modbus::AbstractDevice
virtual void handleReply (QUuid requestId, QJsonObject reply)
 Reply handler. More...
 
void setState (cutehmi::modbus::AbstractDevice::State state)
 
void setReady (bool ready)
 
void handleError (cutehmi::InplaceError error)
 

Protected Member Functions

 AbstractClient (QObject *parent=nullptr)
 
void handleRequest (const QJsonObject &request) override
 Handle request. More...
 
void handleReply (QUuid requestId, QJsonObject reply) override
 Reply handler. More...
 
Q_SIGNAL void requestAccepted (QJsonObject request)
 
Q_SIGNAL void pollingRequested ()
 
Q_SIGNAL void pollingFinished ()
 
Q_SIGNAL void pollingTaskRequested ()
 
Q_SIGNAL void pollingTaskFinished ()
 
- Protected Member Functions inherited from cutehmi::modbus::AbstractDevice
 AbstractDevice (QObject *parent=nullptr)
 
 ~AbstractDevice () override
 Destructor. More...
 
virtual void handleRequest (const QJsonObject &request)=0
 Handle request. More...
 
const CoilDataContainercoilData () const
 
CoilDataContainercoilData ()
 
const DiscreteInputDataContainerdiscreteInputData () const
 
DiscreteInputDataContainerdiscreteInputData ()
 
const HoldingRegisterDataContainerholdingRegisterData () const
 
HoldingRegisterDataContainerholdingRegisterData ()
 
const InputRegisterDataContainerinputRegisterData () const
 
InputRegisterDataContainerinputRegisterData ()
 
QJsonObject pendingRequest (QUuid requestId) const
 
QJsonObject takePendingRequest (QUuid requestId)
 
Q_SIGNAL void broke ()
 
Q_SIGNAL void stopped ()
 
Q_SIGNAL void started ()
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
- Protected Member Functions inherited from cutehmi::services::Serviceable
 Serviceable ()=default
 
virtual ~Serviceable ()=default
 
 Serviceable (const Serviceable &other)=default
 
Serviceableoperator= (const Serviceable &other)=default
 

Properties

int pollingInterval
 Time interval between complete polling sequences [ms]. More...
 
int pollingTaskInterval
 Time interval between individual polling tasks [ms]. More...
 
int requestInterval
 Time interval between any individual requests [ms]. More...
 
int timeout
 Modbus response timeout [ms]. More...
 
- Properties inherited from cutehmi::modbus::AbstractDevice
State state
 
bool ready
 
int maxReadCoils
 
int maxWriteCoils
 
int maxReadDiscreteInputs
 
int maxWriteDiscreteInputs
 
int maxReadHoldingRegisters
 
int maxWriteHoldingRegisters
 
int maxReadInputRegisters
 
int maxWriteInputRegisters
 
int maxRequests
 
- Properties inherited from QObject
 objectName
 

Additional Inherited Members

- Public Types inherited from cutehmi::modbus::AbstractDevice
enum  State { OPENING , OPENED , CLOSING , CLOSED }
 
enum  Function {
  FUNCTION_INVALID = QModbusPdu::Invalid , FUNCTION_READ_COILS = QModbusPdu::ReadCoils , FUNCTION_READ_DISCRETE_INPUTS = QModbusPdu::ReadDiscreteInputs , FUNCTION_READ_HOLDING_REGISTERS = QModbusPdu::ReadHoldingRegisters ,
  FUNCTION_READ_INPUT_REGISTERS = QModbusPdu::ReadInputRegisters , FUNCTION_WRITE_COIL = QModbusPdu::WriteSingleCoil , FUNCTION_WRITE_HOLDING_REGISTER = QModbusPdu::WriteSingleRegister , FUNCTION_READ_EXCEPTION_STATUS = QModbusPdu::ReadExceptionStatus ,
  FUNCTION_DIAGNOSTICS = QModbusPdu::Diagnostics , FUNCTION_FETCH_COMM_EVENT_COUNTER = QModbusPdu::GetCommEventCounter , FUNCTION_FETCH_COMM_EVENT_LOG = QModbusPdu::GetCommEventLog , FUNCTION_WRITE_MULTIPLE_COILS = QModbusPdu::WriteMultipleCoils ,
  FUNCTION_WRITE_MULTIPLE_HOLDING_REGISTERS = QModbusPdu::WriteMultipleRegisters , FUNCTION_REPORT_SLAVE_ID = QModbusPdu::ReportServerId , FUNCTION_READ_FILE_RECORD = QModbusPdu::ReadFileRecord , FUNCTION_WRITE_FILE_RECORD = QModbusPdu::WriteFileRecord ,
  FUNCTION_MASK_WRITE_HOLDING_REGISTER = QModbusPdu::MaskWriteRegister , FUNCTION_READ_WRITE_MULTIPLE_HOLDING_REGISTERS = QModbusPdu::ReadWriteMultipleRegisters , FUNCTION_READ_FIFO_QUEUE = QModbusPdu::ReadFifoQueue , FUNCTION_UNDEFINED = QModbusPdu::UndefinedFunctionCode ,
  FUNCTION_WRITE_DISCRETE_INPUT , FUNCTION_WRITE_MULTIPLE_DISCRETE_INPUTS , FUNCTION_WRITE_INPUT_REGISTER , FUNCTION_WRITE_MULTIPLE_INPUT_REGISTERS ,
  FUNCTION_RAW
}
 
enum  DiagnosticsSubfunction : quint16 {
  DIAGNOSTICS_RETURN_QUERY_DATA = 0x00 , DIAGNOSTICS_RESTART_COMM_OPTION = 0x01 , DIAGNOSTICS_RETURN_DIAGNOSTICS_REGISTER = 0x02 , DIAGNOSTICS_CHANGE_ASCII_INPUT_DELIMITER = 0x03 ,
  DIAGNOSTICS_FORCE_LISTEN_ONLY_MODE = 0x04 , DIAGNOSTICS_CLEAR_COUNTERS_AND_DIAGNOSTICS_REGISTER = 0x0A , DIAGNOSTICS_RETURN_BUS_MESSAGE_COUNT = 0x0B , DIAGNOSTICS_RETURN_BUS_COMM_ERROR_COUNT = 0x0C ,
  DIAGNOSTICS_RETURN_BUS_EXCEPTION_ERROR_COUNT = 0x0D , DIAGNOSTICS_RETURN_SLAVE_MESSAGE_COUNT = 0x0E , DIAGNOSTICS_RETURN_SLAVE_NO_RESPONSE_COUNT = 0x0F , DIAGNOSTICS_RETURN_SLAVE_NAK_COUNT = 0x10 ,
  DIAGNOSTICS_RETURN_SLAVE_BUSY_COUNT = 0x11 , DIAGNOSTICS_RETURN_BUS_CHARACTER_OVERRUN_COUNT = 0x12 , DIAGNOSTICS_RETURN_IOP_OVERRUN_COUNT = 0x13 , DIAGNOSTICS_CLEAR_OVERRUN_COUNTER_AND_FLAG = 0x14 ,
  DIAGNOSTICS_GET_CLEAR_MODBUS_PLUS_STATISTICS = 0x15
}
 
- Public Types inherited from cutehmi::services::Serviceable
typedef std::function< void(QState &state, const QString &status)> AssignStatusFunction
 
- Public Slots inherited from cutehmi::modbus::AbstractDevice
virtual void open ()=0
 
virtual void close ()=0
 
- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Protected Types inherited from cutehmi::modbus::AbstractDevice
typedef internal::RegisterTraits< internal::Coil >::Container CoilDataContainer
 
typedef internal::RegisterTraits< internal::DiscreteInput >::Container DiscreteInputDataContainer
 
typedef internal::RegisterTraits< internal::HoldingRegister >::Container HoldingRegisterDataContainer
 
typedef internal::RegisterTraits< internal::InputRegister >::Container InputRegisterDataContainer
 

Detailed Description

Abstract client.

Abstract client can perform polling to update register values. This is handled by cutehmi::services::Service - the client just needs to be set as its serviceable object.

During polling a sequence of tasks is being processed. A task is usually a single request-response exchange performed to update register value. During polling all awaken registers are updated. Intervals between complete polling sequences and individual tasks can be with pollingInterval and pollingTaskInterval properties respectively.

To protect Modbus device from flooding it with too many requests requestInterval property can be used. If requests are comming too fast they will be queued and sent to the device one by one in constant intervals.

Remarks
Client becomes ready to handle requests only when it establishes connection with server.

Constructor & Destructor Documentation

◆ AbstractClient()

cutehmi::modbus::AbstractClient::AbstractClient ( QObject parent = nullptr)
protected

Member Function Documentation

◆ configureBroken()

void cutehmi::modbus::AbstractClient::configureBroken ( QState broken,
AssignStatusFunction  assignStatus 
)
overridevirtual

◆ configureEvacuating()

void cutehmi::modbus::AbstractClient::configureEvacuating ( QState evacuating,
AssignStatusFunction  assignStatus 
)
overridevirtual

◆ configureRepairing()

void cutehmi::modbus::AbstractClient::configureRepairing ( QState repairing,
AssignStatusFunction  assignStatus 
)
overridevirtual

◆ configureStarted()

void cutehmi::modbus::AbstractClient::configureStarted ( QState active,
const QState idling,
const QState yielding,
AssignStatusFunction  assignStatus 
)
overridevirtual

◆ configureStarting()

void cutehmi::modbus::AbstractClient::configureStarting ( QState starting,
AssignStatusFunction  assignStatus 
)
overridevirtual

◆ configureStopping()

void cutehmi::modbus::AbstractClient::configureStopping ( QState stopping,
AssignStatusFunction  assignStatus 
)
overridevirtual

◆ handleReply()

void cutehmi::modbus::AbstractClient::handleReply ( QUuid  requestId,
QJsonObject  reply 
)
overrideprotectedvirtual

Reply handler.

Parameters
requestIdrequest id.
replyreply data.

Reimplemented from cutehmi::modbus::AbstractDevice.

◆ handleRequest()

void cutehmi::modbus::AbstractClient::handleRequest ( const QJsonObject request)
overrideprotectedvirtual

Handle request.

This function acts as request handler, that derived class must implement. Internally request() function creates request object and passes it to request handler of derived class. Request object is added to pending requests queue. Derived class should start processing request. Once request completes derived class is expected to prepare reply and call handleReply() function. Otherwise it has to remove request from queue by calling takePendingRequest() function and emit requestCompleted() signal.

Parameters
requestrequest object containing request header and payload.

Implements cutehmi::modbus::AbstractDevice.

◆ onStateChanged

void cutehmi::modbus::AbstractClient::onStateChanged ( )
protectedvirtualslot

◆ poll

void cutehmi::modbus::AbstractClient::poll ( )
protectedslot

◆ pollingFinished()

Q_SIGNAL void cutehmi::modbus::AbstractClient::pollingFinished ( )
protected

◆ pollingInterval()

int cutehmi::modbus::AbstractClient::pollingInterval ( ) const

◆ pollingIntervalChanged

void cutehmi::modbus::AbstractClient::pollingIntervalChanged ( )
signal

◆ pollingRequested()

Q_SIGNAL void cutehmi::modbus::AbstractClient::pollingRequested ( )
protected

◆ pollingTask

void cutehmi::modbus::AbstractClient::pollingTask ( )
protectedslot

◆ pollingTaskFinished()

Q_SIGNAL void cutehmi::modbus::AbstractClient::pollingTaskFinished ( )
protected

◆ pollingTaskInterval()

int cutehmi::modbus::AbstractClient::pollingTaskInterval ( ) const

◆ pollingTaskIntervalChanged

void cutehmi::modbus::AbstractClient::pollingTaskIntervalChanged ( )
signal

◆ pollingTaskRequested()

Q_SIGNAL void cutehmi::modbus::AbstractClient::pollingTaskRequested ( )
protected

◆ requestAccepted()

Q_SIGNAL void cutehmi::modbus::AbstractClient::requestAccepted ( QJsonObject  request)
protected

◆ requestInterval()

int cutehmi::modbus::AbstractClient::requestInterval ( ) const

◆ requestIntervalChanged

void cutehmi::modbus::AbstractClient::requestIntervalChanged ( )
signal

◆ setPollingInterval()

void cutehmi::modbus::AbstractClient::setPollingInterval ( int  interval)

◆ setPollingTaskInterval()

void cutehmi::modbus::AbstractClient::setPollingTaskInterval ( int  interval)

◆ setRequestInterval()

void cutehmi::modbus::AbstractClient::setRequestInterval ( int  interval)

◆ setTimeout()

virtual void cutehmi::modbus::AbstractClient::setTimeout ( int  timeout)
pure virtual

◆ timeout()

virtual int cutehmi::modbus::AbstractClient::timeout ( ) const
pure virtual

◆ timeoutChanged

void cutehmi::modbus::AbstractClient::timeoutChanged ( )
signal

◆ transitionToBroken()

std::unique_ptr< QAbstractTransition > cutehmi::modbus::AbstractClient::transitionToBroken ( ) const
overridevirtual

◆ transitionToIdling()

std::unique_ptr< QAbstractTransition > cutehmi::modbus::AbstractClient::transitionToIdling ( ) const
overridevirtual

◆ transitionToStarted()

std::unique_ptr< QAbstractTransition > cutehmi::modbus::AbstractClient::transitionToStarted ( ) const
overridevirtual

◆ transitionToStopped()

std::unique_ptr< QAbstractTransition > cutehmi::modbus::AbstractClient::transitionToStopped ( ) const
overridevirtual

◆ transitionToYielding()

std::unique_ptr< QAbstractTransition > cutehmi::modbus::AbstractClient::transitionToYielding ( ) const
overridevirtual

Member Data Documentation

◆ INITIAL_POLLING_INTERVAL

constexpr int cutehmi::modbus::AbstractClient::INITIAL_POLLING_INTERVAL = 250
staticconstexpr

◆ INITIAL_POLLING_TASK_INTERVAL

constexpr int cutehmi::modbus::AbstractClient::INITIAL_POLLING_TASK_INTERVAL = 10
staticconstexpr

◆ INITIAL_REQUEST_INTERVAL

constexpr int cutehmi::modbus::AbstractClient::INITIAL_REQUEST_INTERVAL = 5
staticconstexpr

Property Documentation

◆ pollingInterval

int cutehmi::modbus::AbstractClient::pollingInterval
readwrite

Time interval between complete polling sequences [ms].

◆ pollingTaskInterval

int cutehmi::modbus::AbstractClient::pollingTaskInterval
readwrite

Time interval between individual polling tasks [ms].

Task is usually a single request-response exchange performed to update register value.

◆ requestInterval

int cutehmi::modbus::AbstractClient::requestInterval
readwrite

Time interval between any individual requests [ms].

Note
this property is not mutually exclusive with pollingTaskInterval. Property pollingTaskInterval is used for polling only, while this property controls the interval between any Modbus requests. Requests can not be sent faster than specified by requestInterval. If value of pollingTaskInterval is lower, this property enforces its precedence.
subtle difference between pollingTaskInterval and requestInterval is that first one measures interval between last response and new request, while this one measures interval between last request and new request.

◆ timeout

int cutehmi::modbus::AbstractClient::timeout
readwrite

Modbus response timeout [ms].