Class CpModbusConnection

Inheritance Relationships

Base Types

  • public smacc2::ISmaccComponent

  • public smacc2::ISmaccUpdatable

Class Documentation

class CpModbusConnection : public smacc2::ISmaccComponent, public smacc2::ISmaccUpdatable

Component that manages Modbus TCP connection lifecycle and heartbeat monitoring.

Responsibilities:

  • Create/destroy modbus_t context

  • Manage TCP connection state

  • Periodic heartbeat via ISmaccUpdatable (reads coil status to verify connectivity)

  • Emit connection state change signals

  • Thread-safe connection access via mutex

Configuration is loaded from YAML parameters: modbus_relay.ip_address: IP address of the relay (default: “192.168.1.254”) modbus_relay.port: Modbus TCP port (default: 502) modbus_relay.slave_id: Modbus slave ID (default: 1) modbus_relay.heartbeat_interval_ms: Heartbeat check interval (default: 1000) modbus_relay.connect_on_init: Connect automatically on init (default: true)

Public Functions

CpModbusConnection()
virtual ~CpModbusConnection()
void onInitialize() override
template<typename TOrthogonal, typename TClient>
inline void onStateOrthogonalAllocation()

Configure component for event posting during orthogonal allocation.

bool connect()
void disconnect()
bool reconnect()
bool isConnected() const
modbus_t *getContext()
std::mutex &getMutex()
inline std::string getIpAddress() const
inline int getPort() const
inline int getSlaveId() const
template<typename T>
inline smacc2::SmaccSignalConnection onConnectionLost(void (T::* callback)(), T *object)
template<typename T>
inline smacc2::SmaccSignalConnection onConnectionRestored(void (T::* callback)(), T *object)
template<typename T>
inline smacc2::SmaccSignalConnection onConnectionError(void (T::* callback)(const std::string&), T *object)

Public Members

smacc2::SmaccSignal<void()> onConnectionLost_
smacc2::SmaccSignal<void()> onConnectionRestored_
smacc2::SmaccSignal<void(const std::string&)> onConnectionError_

Protected Functions

void update() override