Fix init method writing for TCP and warn about missing RTU feature for now
parent
00915e3dc1
commit
b8994ca5f5
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Copyright (C) 2021 nymea GmbH <developer@nymea.io>
|
# Copyright (C) 2021 - 2022 nymea GmbH <developer@nymea.io>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
|
@ -843,7 +843,8 @@ def writeInitializeMethod(fileDescriptor, className, registerDefinitions):
|
||||||
break
|
break
|
||||||
|
|
||||||
if initRequired:
|
if initRequired:
|
||||||
# FIXME: distinguish between RTU and TCP
|
if protocol == 'TCP':
|
||||||
|
# Init implementation for TCP
|
||||||
writeLine(fileDescriptor, ' QModbusReply *reply = nullptr;')
|
writeLine(fileDescriptor, ' QModbusReply *reply = nullptr;')
|
||||||
writeLine(fileDescriptor)
|
writeLine(fileDescriptor)
|
||||||
writeLine(fileDescriptor, ' if (!m_pendingInitReplies.isEmpty()) {')
|
writeLine(fileDescriptor, ' if (!m_pendingInitReplies.isEmpty()) {')
|
||||||
|
|
@ -866,6 +867,7 @@ def writeInitializeMethod(fileDescriptor, className, registerDefinitions):
|
||||||
writeLine(fileDescriptor, ' connect(reply, &QModbusReply::finished, this, [this, reply](){')
|
writeLine(fileDescriptor, ' connect(reply, &QModbusReply::finished, this, [this, reply](){')
|
||||||
writeLine(fileDescriptor, ' if (reply->error() == QModbusDevice::NoError) {')
|
writeLine(fileDescriptor, ' if (reply->error() == QModbusDevice::NoError) {')
|
||||||
writeLine(fileDescriptor, ' const QModbusDataUnit unit = reply->result();')
|
writeLine(fileDescriptor, ' const QModbusDataUnit unit = reply->result();')
|
||||||
|
writeLine(fileDescriptor, ' const QVector<quint16> values = unit.values();')
|
||||||
writeLine(fileDescriptor, ' %s received%s = %s;' % (propertyTyp, propertyName[0].upper() + propertyName[1:], getValueConversionMethod(registerDefinition)))
|
writeLine(fileDescriptor, ' %s received%s = %s;' % (propertyTyp, propertyName[0].upper() + propertyName[1:], getValueConversionMethod(registerDefinition)))
|
||||||
writeLine(fileDescriptor, ' if (m_%s != received%s) {' % (propertyName, propertyName[0].upper() + propertyName[1:]))
|
writeLine(fileDescriptor, ' if (m_%s != received%s) {' % (propertyName, propertyName[0].upper() + propertyName[1:]))
|
||||||
writeLine(fileDescriptor, ' m_%s = received%s;' % (propertyName, propertyName[0].upper() + propertyName[1:]))
|
writeLine(fileDescriptor, ' m_%s = received%s;' % (propertyName, propertyName[0].upper() + propertyName[1:]))
|
||||||
|
|
@ -888,6 +890,9 @@ def writeInitializeMethod(fileDescriptor, className, registerDefinitions):
|
||||||
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << errorString();' % (className, registerDefinition['description']))
|
writeLine(fileDescriptor, ' qCWarning(dc%s()) << "Error occurred while reading \\"%s\\" registers from" << hostAddress().toString() << errorString();' % (className, registerDefinition['description']))
|
||||||
writeLine(fileDescriptor, ' }')
|
writeLine(fileDescriptor, ' }')
|
||||||
|
|
||||||
|
else:
|
||||||
|
print('TODO: this has not been implemented yet for RTU')
|
||||||
|
exit(1)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
writeLine(fileDescriptor, ' // No init registers defined. Nothing to be done and we are finished.')
|
writeLine(fileDescriptor, ' // No init registers defined. Nothing to be done and we are finished.')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue