Skip to content

Commit 7951ae3

Browse files
committed
Correct building for qt5
1 parent faaad4a commit 7951ae3

8 files changed

Lines changed: 59 additions & 42 deletions

File tree

omodsim/jsobjects/server.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
///
1111
uint qHash(const Server::KeyOnChange &key, uint seed)
1212
{
13-
return qHashMulti(seed, key.DeviceId, key.Type, key.Address);
13+
return ::qHash(static_cast<uint>(key.DeviceId), seed) ^
14+
::qHash(static_cast<int>(key.Type), seed) ^
15+
::qHash(key.Address, seed);
1416
}
1517

1618
///

omodsim/modbusrtuserialserver.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "modbusrtuserialserver.h"
33

44
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
5+
#include <QtCore/qmath.h>
56
#include <QModbusRtuSerialSlave>
67
typedef QModbusRtuSerialSlave QModbusRtuSerialServer;
78
#else

omodsim/modbusserver.cpp

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,21 @@ bool ModbusServer::setValue(int option, const QVariant &newValue, int serverAddr
130130
{
131131
#define CHECK_INT_OR_UINT(val) \
132132
do { \
133-
if ((val.typeId() != QMetaType::Type::Int) && (val.typeId() != QMetaType::Type::UInt)) \
134-
return false; \
133+
const int type = val.userType(); \
134+
if (type != QMetaType::Int && type != QMetaType::UInt) \
135+
return false; \
136+
} while (0)
137+
138+
#define CHECK_BOOL(val) \
139+
do { \
140+
if (!val.canConvert(QMetaType::Bool)) \
141+
return false; \
142+
} while (0)
143+
144+
#define CHECK_BYTEARRAY(val) \
145+
do { \
146+
if (!val.canConvert(QMetaType::QByteArray)) \
147+
return false; \
135148
} while (0)
136149

137150
switch (option) {
@@ -165,8 +178,7 @@ bool ModbusServer::setValue(int option, const QVariant &newValue, int serverAddr
165178
return true;
166179
}
167180
case ListenOnlyMode: {
168-
if (newValue.typeId() != QMetaType::Type::Bool)
169-
return false;
181+
CHECK_BOOL(newValue);
170182
_serversOptions[serverAddress].insert(option, newValue);
171183
return true;
172184
}
@@ -183,8 +195,7 @@ bool ModbusServer::setValue(int option, const QVariant &newValue, int serverAddr
183195
return true;
184196
}
185197
case AdditionalData: {
186-
if (newValue.typeId() != QMetaType::Type::QByteArray)
187-
return false;
198+
CHECK_BYTEARRAY(newValue);
188199
const QByteArray additionalData = newValue.toByteArray();
189200
if (additionalData.size() > 249)
190201
return false;
@@ -336,7 +347,7 @@ bool ModbusServer::data(QModbusDataUnit *newData, int serverAddress) const
336347
///
337348
bool ModbusServer::setData(QModbusDataUnit::RegisterType table, quint16 address, quint16 data, int serverAddress)
338349
{
339-
return writeData(QModbusDataUnit(table, address, QList<quint16> { data }), serverAddress);
350+
return writeData(QModbusDataUnit(table, address, QVector<quint16>() << data), serverAddress);
340351
}
341352

342353
///
@@ -857,7 +868,7 @@ QModbusResponse ModbusServer::processGetCommEventLogRequest(const QModbusRequest
857868
}
858869
const quint16 deviceBusy = tmp.value<quint16>();
859870

860-
QList<quint8> eventLog(int(_commEventLog.size()));
871+
QVector<quint8> eventLog(int(_commEventLog.size()));
861872
std::copy(_commEventLog.cbegin(), _commEventLog.cend(), eventLog.begin());
862873

863874
// 6 -> 3 x 2 Bytes (Status, Event Count and Message Count)
@@ -957,7 +968,7 @@ QModbusResponse ModbusServer::processWriteMultipleRegistersRequest(const QModbus
957968
const QByteArray pduData = request.data().remove(0,5);
958969
QDataStream stream(pduData);
959970

960-
QList<quint16> values;
971+
QVector<quint16> values;
961972
quint16 tmp;
962973
for (int i = 0; i < numberOfRegisters; i++) {
963974
stream >> tmp;
@@ -1071,7 +1082,7 @@ QModbusResponse ModbusServer::processReadWriteMultipleRegistersRequest(const QMo
10711082
const QByteArray pduData = request.data().remove(0,9);
10721083
QDataStream stream(pduData);
10731084

1074-
QList<quint16> values;
1085+
QVector<quint16> values;
10751086
quint16 tmp;
10761087
for (int i = 0; i < writeQuantity; i++) {
10771088
stream >> tmp;

omodsim/modbusserver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define IMODBUSSERVER_H
33

44
#include <deque>
5+
#include <array>
56
#include <QLoggingCategory>
67
#include <QModbusServer>
78
#include "qcountedset.h"

omodsim/modbustcpserver.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,16 @@ void ModbusTcpServer::on_newConnection()
7979
return;
8080
}
8181

82+
_connections.append(socket);
83+
8284
auto buffer = new QByteArray();
8385

8486
QObject::connect(socket, &QObject::destroyed, socket, [buffer]() {
8587
// cleanup buffer
8688
delete buffer;
8789
});
8890
QObject::connect(socket, &QTcpSocket::disconnected, this, [socket, this]() {
91+
_connections.removeAll(socket);
8992
emit modbusClientDisconnected(socket);
9093
socket->deleteLater();
9194
});
@@ -239,9 +242,7 @@ void ModbusTcpServer::close()
239242
if (_server->isListening())
240243
_server->close();
241244

242-
const auto childSockets =
243-
_server->findChildren<QTcpSocket *>(Qt::FindDirectChildrenOnly);
244-
for (auto socket : childSockets)
245+
for (auto socket : qAsConst(_connections))
245246
socket->disconnectFromHost();
246247

247248
setState(QModbusDevice::UnconnectedState);

omodsim/modbustcpserver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ private slots:
4242
QString _networkAddress = QStringLiteral("127.0.0.1");
4343

4444
QTcpServer* _server = nullptr;
45+
QVector<QTcpSocket*> _connections;
4546
QModbusTcpConnectionObserver* _observer = nullptr;
4647

4748
static const qint8 mbpaHeaderSize = 7;

omodsim/translations/omodsim_ru.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2183,7 +2183,7 @@ MODBUS Point Type:
21832183
<context>
21842184
<name>ModbusTcpServer</name>
21852185
<message>
2186-
<location filename="../modbustcpserver.cpp" line="217"/>
2186+
<location filename="../modbustcpserver.cpp" line="220"/>
21872187
<source>Invalid connection settings for TCP communication specified.</source>
21882188
<translation type="unfinished"></translation>
21892189
</message>
@@ -2227,73 +2227,73 @@ MODBUS Point Type:
22272227
<context>
22282228
<name>QModbusDevice</name>
22292229
<message>
2230-
<location filename="../modbusrtuserialserver.cpp" line="390"/>
2230+
<location filename="../modbusrtuserialserver.cpp" line="391"/>
22312231
<source>Referenced serial device does not exist.</source>
22322232
<translation type="unfinished"></translation>
22332233
</message>
22342234
<message>
2235-
<location filename="../modbusrtuserialserver.cpp" line="393"/>
2235+
<location filename="../modbusrtuserialserver.cpp" line="394"/>
22362236
<source>Cannot open serial device due to permissions.</source>
22372237
<translation type="unfinished"></translation>
22382238
</message>
22392239
<message>
2240-
<location filename="../modbusrtuserialserver.cpp" line="397"/>
2240+
<location filename="../modbusrtuserialserver.cpp" line="398"/>
22412241
<source>Cannot open serial device.</source>
22422242
<translation type="unfinished"></translation>
22432243
</message>
22442244
<message>
2245-
<location filename="../modbusrtuserialserver.cpp" line="400"/>
2245+
<location filename="../modbusrtuserialserver.cpp" line="401"/>
22462246
<source>Write error.</source>
22472247
<translation type="unfinished"></translation>
22482248
</message>
22492249
<message>
2250-
<location filename="../modbusrtuserialserver.cpp" line="403"/>
2250+
<location filename="../modbusrtuserialserver.cpp" line="404"/>
22512251
<source>Read error.</source>
22522252
<translation type="unfinished"></translation>
22532253
</message>
22542254
<message>
2255-
<location filename="../modbusrtuserialserver.cpp" line="406"/>
2255+
<location filename="../modbusrtuserialserver.cpp" line="407"/>
22562256
<source>Resource error.</source>
22572257
<translation type="unfinished"></translation>
22582258
</message>
22592259
<message>
2260-
<location filename="../modbusrtuserialserver.cpp" line="409"/>
2260+
<location filename="../modbusrtuserialserver.cpp" line="410"/>
22612261
<source>Device operation is not supported error.</source>
22622262
<translation type="unfinished"></translation>
22632263
</message>
22642264
<message>
2265-
<location filename="../modbusrtuserialserver.cpp" line="413"/>
2265+
<location filename="../modbusrtuserialserver.cpp" line="414"/>
22662266
<source>Timeout error.</source>
22672267
<translation type="unfinished"></translation>
22682268
</message>
22692269
<message>
2270-
<location filename="../modbusrtuserialserver.cpp" line="416"/>
2270+
<location filename="../modbusrtuserialserver.cpp" line="417"/>
22712271
<source>Unknown error.</source>
22722272
<translation type="unfinished"></translation>
22732273
</message>
22742274
</context>
22752275
<context>
22762276
<name>QModbusRtuSerialServer</name>
22772277
<message>
2278-
<location filename="../modbusrtuserialserver.cpp" line="301"/>
2278+
<location filename="../modbusrtuserialserver.cpp" line="302"/>
22792279
<source>Requesting serial port is closed</source>
22802280
<translation type="unfinished"></translation>
22812281
</message>
22822282
<message>
2283-
<location filename="../modbusrtuserialserver.cpp" line="310"/>
2283+
<location filename="../modbusrtuserialserver.cpp" line="311"/>
22842284
<source>Could not write response to client</source>
22852285
<translation type="unfinished"></translation>
22862286
</message>
22872287
</context>
22882288
<context>
22892289
<name>QModbusTcpServer</name>
22902290
<message>
2291-
<location filename="../modbustcpserver.cpp" line="146"/>
2291+
<location filename="../modbustcpserver.cpp" line="149"/>
22922292
<source>Requesting socket is closed</source>
22932293
<translation type="unfinished"></translation>
22942294
</message>
22952295
<message>
2296-
<location filename="../modbustcpserver.cpp" line="154"/>
2296+
<location filename="../modbustcpserver.cpp" line="157"/>
22972297
<source>Could not write response to client</source>
22982298
<translation type="unfinished"></translation>
22992299
</message>

omodsim/translations/omodsim_zh.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2191,7 +2191,7 @@ MODBUS Point Type:
21912191
<context>
21922192
<name>ModbusTcpServer</name>
21932193
<message>
2194-
<location filename="../modbustcpserver.cpp" line="217"/>
2194+
<location filename="../modbustcpserver.cpp" line="220"/>
21952195
<source>Invalid connection settings for TCP communication specified.</source>
21962196
<translation type="unfinished"></translation>
21972197
</message>
@@ -2235,73 +2235,73 @@ MODBUS Point Type:
22352235
<context>
22362236
<name>QModbusDevice</name>
22372237
<message>
2238-
<location filename="../modbusrtuserialserver.cpp" line="390"/>
2238+
<location filename="../modbusrtuserialserver.cpp" line="391"/>
22392239
<source>Referenced serial device does not exist.</source>
22402240
<translation type="unfinished"></translation>
22412241
</message>
22422242
<message>
2243-
<location filename="../modbusrtuserialserver.cpp" line="393"/>
2243+
<location filename="../modbusrtuserialserver.cpp" line="394"/>
22442244
<source>Cannot open serial device due to permissions.</source>
22452245
<translation type="unfinished"></translation>
22462246
</message>
22472247
<message>
2248-
<location filename="../modbusrtuserialserver.cpp" line="397"/>
2248+
<location filename="../modbusrtuserialserver.cpp" line="398"/>
22492249
<source>Cannot open serial device.</source>
22502250
<translation type="unfinished"></translation>
22512251
</message>
22522252
<message>
2253-
<location filename="../modbusrtuserialserver.cpp" line="400"/>
2253+
<location filename="../modbusrtuserialserver.cpp" line="401"/>
22542254
<source>Write error.</source>
22552255
<translation type="unfinished"></translation>
22562256
</message>
22572257
<message>
2258-
<location filename="../modbusrtuserialserver.cpp" line="403"/>
2258+
<location filename="../modbusrtuserialserver.cpp" line="404"/>
22592259
<source>Read error.</source>
22602260
<translation type="unfinished"></translation>
22612261
</message>
22622262
<message>
2263-
<location filename="../modbusrtuserialserver.cpp" line="406"/>
2263+
<location filename="../modbusrtuserialserver.cpp" line="407"/>
22642264
<source>Resource error.</source>
22652265
<translation type="unfinished"></translation>
22662266
</message>
22672267
<message>
2268-
<location filename="../modbusrtuserialserver.cpp" line="409"/>
2268+
<location filename="../modbusrtuserialserver.cpp" line="410"/>
22692269
<source>Device operation is not supported error.</source>
22702270
<translation type="unfinished"></translation>
22712271
</message>
22722272
<message>
2273-
<location filename="../modbusrtuserialserver.cpp" line="413"/>
2273+
<location filename="../modbusrtuserialserver.cpp" line="414"/>
22742274
<source>Timeout error.</source>
22752275
<translation type="unfinished"></translation>
22762276
</message>
22772277
<message>
2278-
<location filename="../modbusrtuserialserver.cpp" line="416"/>
2278+
<location filename="../modbusrtuserialserver.cpp" line="417"/>
22792279
<source>Unknown error.</source>
22802280
<translation type="unfinished"></translation>
22812281
</message>
22822282
</context>
22832283
<context>
22842284
<name>QModbusRtuSerialServer</name>
22852285
<message>
2286-
<location filename="../modbusrtuserialserver.cpp" line="301"/>
2286+
<location filename="../modbusrtuserialserver.cpp" line="302"/>
22872287
<source>Requesting serial port is closed</source>
22882288
<translation type="unfinished"></translation>
22892289
</message>
22902290
<message>
2291-
<location filename="../modbusrtuserialserver.cpp" line="310"/>
2291+
<location filename="../modbusrtuserialserver.cpp" line="311"/>
22922292
<source>Could not write response to client</source>
22932293
<translation type="unfinished"></translation>
22942294
</message>
22952295
</context>
22962296
<context>
22972297
<name>QModbusTcpServer</name>
22982298
<message>
2299-
<location filename="../modbustcpserver.cpp" line="146"/>
2299+
<location filename="../modbustcpserver.cpp" line="149"/>
23002300
<source>Requesting socket is closed</source>
23012301
<translation type="unfinished"></translation>
23022302
</message>
23032303
<message>
2304-
<location filename="../modbustcpserver.cpp" line="154"/>
2304+
<location filename="../modbustcpserver.cpp" line="157"/>
23052305
<source>Could not write response to client</source>
23062306
<translation type="unfinished"></translation>
23072307
</message>

0 commit comments

Comments
 (0)