55#include " util/formatdatetime.h"
66#include " util/scopelogging.h"
77
8- #include < QCoreApplication>
98#include < QJsonArray>
109
1110ModbusPoll::ModbusPoll (SettingsModel* pSettingsModel, QObject* parent) : QObject(parent), _bPollActive(false )
@@ -17,21 +16,17 @@ ModbusPoll::ModbusPoll(SettingsModel* pSettingsModel, QObject* parent) : QObject
1716 _pSettingsModel = pSettingsModel;
1817 _lastPollStart = QDateTime::currentMSecsSinceEpoch ();
1918
20- _pAdapterProcess = new AdapterProcess (this );
21- _pAdapterClient = new AdapterClient (_pAdapterProcess, this );
19+ _pAdapterManager = new AdapterManager (_pSettingsModel, this );
2220
23- connect (_pAdapterClient, &AdapterClient::sessionStarted, this , &ModbusPoll::triggerRegisterRead);
24- connect (_pAdapterClient, &AdapterClient::readDataResult, this , &ModbusPoll::onReadDataResult);
25- connect (_pAdapterClient, &AdapterClient::describeResult, this , &ModbusPoll::onDescribeResult);
26- connect (_pAdapterClient, &AdapterClient::registerSchemaResult, this , &ModbusPoll::onRegisterSchemaResult);
27- connect (_pAdapterClient, &AdapterClient::buildExpressionResult, this , &ModbusPoll::buildExpressionResult);
28- connect (_pAdapterClient, &AdapterClient::sessionError, this , [this ](QString message) {
21+ connect (_pAdapterManager, &AdapterManager::sessionStarted, this , &ModbusPoll::triggerRegisterRead);
22+ connect (_pAdapterManager, &AdapterManager::readDataResult, this , &ModbusPoll::onReadDataResult);
23+ connect (_pAdapterManager, &AdapterManager::buildExpressionResult, this , &ModbusPoll::buildExpressionResult);
24+ connect (_pAdapterManager, &AdapterManager::sessionStopped, this , &ModbusPoll::initAdapter);
25+ connect (_pAdapterManager, &AdapterManager::sessionError, this , [this ](QString message) {
2926 qCWarning (scopeComm) << " AdapterClient error:" << message;
3027 _bPollActive = false ;
31- disconnect (_pAdapterClient , &AdapterClient ::sessionStopped, this , &ModbusPoll::initAdapter);
28+ disconnect (_pAdapterManager , &AdapterManager ::sessionStopped, this , &ModbusPoll::initAdapter);
3229 });
33- connect (_pAdapterClient, &AdapterClient::sessionStopped, this , &ModbusPoll::initAdapter);
34- connect (_pAdapterClient, &AdapterClient::diagnosticReceived, this , &ModbusPoll::onAdapterDiagnostic);
3530}
3631
3732ModbusPoll::~ModbusPoll () = default ;
@@ -40,13 +35,11 @@ ModbusPoll::~ModbusPoll() = default;
4035 *
4136 * Resolves the adapter binary relative to the running executable so the path
4237 * is correct in the build tree, AppImage, and installed layouts alike.
43- * Calls prepareAdapter() on the client, which triggers the adapter.describe
44- * handshake.
38+ * Delegates to AdapterManager::initAdapter().
4539 */
4640void ModbusPoll::initAdapter ()
4741{
48- const QString adapterPath = QCoreApplication::applicationDirPath () + " /modbusadapter" ;
49- _pAdapterClient->prepareAdapter (adapterPath);
42+ _pAdapterManager->initAdapter ();
5043}
5144
5245void ModbusPoll::startCommunication (QList<DataPoint>& registerList)
@@ -55,19 +48,15 @@ void ModbusPoll::startCommunication(QList<DataPoint>& registerList)
5548 _bPollActive = true ;
5649
5750 /* Re-establish auto-restart in case it was disconnected by a prior session error */
58- disconnect (_pAdapterClient , &AdapterClient ::sessionStopped, this , &ModbusPoll::initAdapter);
59- connect (_pAdapterClient , &AdapterClient ::sessionStopped, this , &ModbusPoll::initAdapter);
51+ disconnect (_pAdapterManager , &AdapterManager ::sessionStopped, this , &ModbusPoll::initAdapter);
52+ connect (_pAdapterManager , &AdapterManager ::sessionStopped, this , &ModbusPoll::initAdapter);
6053
6154 qCInfo (scopeComm) << QString (" Start logging: %1" ).arg (FormatDateTime::currentDateTime ());
6255
6356 resetCommunicationStats ();
6457
6558 QStringList expressions = buildRegisterExpressions (_registerList);
66-
67- const AdapterData* data = _pSettingsModel->adapterData (" modbus" );
68- QJsonObject config = data->effectiveConfig ();
69-
70- _pAdapterClient->provideConfig (config, expressions);
59+ _pAdapterManager->startSession (expressions);
7160}
7261
7362void ModbusPoll::resetCommunicationStats ()
@@ -79,7 +68,7 @@ void ModbusPoll::stopCommunication()
7968{
8069 _bPollActive = false ;
8170 _pPollTimer->stop ();
82- _pAdapterClient ->stopSession ();
71+ _pAdapterManager ->stopSession ();
8372
8473 qCInfo (scopeComm) << QString (" Stop logging: %1" ).arg (FormatDateTime::currentDateTime ());
8574}
@@ -94,7 +83,7 @@ void ModbusPoll::triggerRegisterRead()
9483 if (_bPollActive)
9584 {
9685 _lastPollStart = QDateTime::currentMSecsSinceEpoch ();
97- _pAdapterClient ->requestReadData ();
86+ _pAdapterManager ->requestReadData ();
9887 }
9988}
10089
@@ -120,52 +109,6 @@ void ModbusPoll::onReadDataResult(ResultDoubleList results)
120109 }
121110}
122111
123- void ModbusPoll::onDescribeResult (const QJsonObject& description)
124- {
125- _pSettingsModel->updateAdapterFromDescribe (" modbus" , description);
126- _pAdapterClient->requestRegisterSchema ();
127- }
128-
129- /* ! \brief Receive the adapter register schema and forward it to the settings model.
130- * \param schema The register schema JSON object returned by adapter.registerSchema.
131- */
132- void ModbusPoll::onRegisterSchemaResult (const QJsonObject& schema)
133- {
134- _pSettingsModel->setAdapterRegisterSchema (" modbus" , schema);
135- }
136-
137- /* ! \brief Route an adapter.diagnostic notification to the diagnostics log.
138- *
139- * Maps the adapter's level string to the appropriate Qt logging severity so
140- * the message flows through ScopeLogging into DiagnosticModel.
141- *
142- * \param level Severity string from the adapter: "debug", "info", "warning", or "error".
143- * \param message The diagnostic message text.
144- */
145- void ModbusPoll::onAdapterDiagnostic (const QString& level, const QString& message)
146- {
147- if (level == QStringLiteral (" debug" ))
148- {
149- qCDebug (scopeAdapter) << message;
150- }
151- else if (level == QStringLiteral (" info" ))
152- {
153- qCInfo (scopeAdapter) << message;
154- }
155- else if (level == QStringLiteral (" warning" ))
156- {
157- qCWarning (scopeAdapter) << message;
158- }
159- else if (level == QStringLiteral (" error" ))
160- {
161- qCCritical (scopeAdapter) << message;
162- }
163- else
164- {
165- qCWarning (scopeAdapter) << " AdapterClient: unknown diagnostic level:" << level << " -" << message;
166- }
167- }
168-
169112/* !
170113 * \brief Request the adapter to construct a register expression from its component parts.
171114 * \param addressFields Address field values from the register schema form.
@@ -174,7 +117,7 @@ void ModbusPoll::onAdapterDiagnostic(const QString& level, const QString& messag
174117 */
175118void ModbusPoll::buildExpression (const QJsonObject& addressFields, const QString& dataType, deviceId_t deviceId)
176119{
177- _pAdapterClient ->buildExpression (addressFields, dataType, deviceId);
120+ _pAdapterManager ->buildExpression (addressFields, dataType, deviceId);
178121}
179122
180123QStringList ModbusPoll::buildRegisterExpressions (const QList<DataPoint>& registerList)
0 commit comments