Fix generating WO registers

pull/75/head
Michael Zanetti 2022-08-05 18:36:56 +02:00
parent 5db18ec40f
commit 4cd6118d12
3 changed files with 39 additions and 28 deletions

View File

@ -29,9 +29,11 @@ def writePropertyGetSetMethodDeclarationsRtu(fileDescriptor, registerDefinitions
else: else:
writeLine(fileDescriptor, ' /* %s - Address: %s, Size: %s */' % (registerDefinition['description'], registerDefinition['address'], registerDefinition['size'])) writeLine(fileDescriptor, ' /* %s - Address: %s, Size: %s */' % (registerDefinition['description'], registerDefinition['address'], registerDefinition['size']))
# Check if we require a read method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'RO':
writeLine(fileDescriptor, ' %s %s() const;' % (propertyTyp, propertyName)) writeLine(fileDescriptor, ' %s %s() const;' % (propertyTyp, propertyName))
# Check if we require a set method # Check if we require a write method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO': if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO':
writeLine(fileDescriptor, ' ModbusRtuReply *set%s(%s %s);' % (propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName)) writeLine(fileDescriptor, ' ModbusRtuReply *set%s(%s %s);' % (propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName))
@ -42,7 +44,9 @@ def writePropertyGetSetMethodImplementationsRtu(fileDescriptor, className, regis
for registerDefinition in registerDefinitions: for registerDefinition in registerDefinitions:
propertyName = registerDefinition['id'] propertyName = registerDefinition['id']
propertyTyp = getCppDataType(registerDefinition) propertyTyp = getCppDataType(registerDefinition)
# Get
# Check if we require a read method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'RO':
if 'enum' in registerDefinition: if 'enum' in registerDefinition:
writeLine(fileDescriptor, '%s::%s %s::%s() const' % (className, propertyTyp, className, propertyName)) writeLine(fileDescriptor, '%s::%s %s::%s() const' % (className, propertyTyp, className, propertyName))
else: else:
@ -53,7 +57,7 @@ def writePropertyGetSetMethodImplementationsRtu(fileDescriptor, className, regis
writeLine(fileDescriptor, '}') writeLine(fileDescriptor, '}')
writeLine(fileDescriptor) writeLine(fileDescriptor)
# Check if we require a set method # Check if we require a write method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO': if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO':
writeLine(fileDescriptor, 'ModbusRtuReply *%s::set%s(%s %s)' % (className, propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName)) writeLine(fileDescriptor, 'ModbusRtuReply *%s::set%s(%s %s)' % (className, propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName))
writeLine(fileDescriptor, '{') writeLine(fileDescriptor, '{')

View File

@ -27,9 +27,11 @@ def writePropertyGetSetMethodDeclarationsTcp(fileDescriptor, registerDefinitions
else: else:
writeLine(fileDescriptor, ' /* %s - Address: %s, Size: %s */' % (registerDefinition['description'], registerDefinition['address'], registerDefinition['size'])) writeLine(fileDescriptor, ' /* %s - Address: %s, Size: %s */' % (registerDefinition['description'], registerDefinition['address'], registerDefinition['size']))
# Check if we require a read method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'RO':
writeLine(fileDescriptor, ' %s %s() const;' % (propertyTyp, propertyName)) writeLine(fileDescriptor, ' %s %s() const;' % (propertyTyp, propertyName))
# Check if we require a set method # Check if we require a write method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO': if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO':
writeLine(fileDescriptor, ' QModbusReply *set%s(%s %s);' % (propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName)) writeLine(fileDescriptor, ' QModbusReply *set%s(%s %s);' % (propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName))
@ -40,7 +42,9 @@ def writePropertyGetSetMethodImplementationsTcp(fileDescriptor, className, regis
for registerDefinition in registerDefinitions: for registerDefinition in registerDefinitions:
propertyName = registerDefinition['id'] propertyName = registerDefinition['id']
propertyTyp = getCppDataType(registerDefinition) propertyTyp = getCppDataType(registerDefinition)
# Get
# Check if we require a read method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'RO':
if 'enum' in registerDefinition: if 'enum' in registerDefinition:
writeLine(fileDescriptor, '%s::%s %s::%s() const' % (className, propertyTyp, className, propertyName)) writeLine(fileDescriptor, '%s::%s %s::%s() const' % (className, propertyTyp, className, propertyName))
else: else:
@ -51,7 +55,7 @@ def writePropertyGetSetMethodImplementationsTcp(fileDescriptor, className, regis
writeLine(fileDescriptor, '}') writeLine(fileDescriptor, '}')
writeLine(fileDescriptor) writeLine(fileDescriptor)
# Check if we require a set method # Check if we require a write method
if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO': if registerDefinition['access'] == 'RW' or registerDefinition['access'] == 'WO':
writeLine(fileDescriptor, 'QModbusReply *%s::set%s(%s %s)' % (className, propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName)) writeLine(fileDescriptor, 'QModbusReply *%s::set%s(%s %s)' % (className, propertyName[0].upper() + propertyName[1:], propertyTyp, propertyName))
writeLine(fileDescriptor, '{') writeLine(fileDescriptor, '{')
@ -75,7 +79,7 @@ def writePropertyGetSetMethodImplementationsTcp(fileDescriptor, className, regis
def writePropertyUpdateMethodImplementationsTcp(fileDescriptor, className, registerDefinitions): def writePropertyUpdateMethodImplementationsTcp(fileDescriptor, className, registerDefinitions):
for registerDefinition in registerDefinitions: for registerDefinition in registerDefinitions:
if 'readSchedule' in registerDefinition and registerDefinition['readSchedule'] == 'init': if 'readSchedule' not in registerDefinition or registerDefinition['readSchedule'] == 'init':
continue continue
propertyName = registerDefinition['id'] propertyName = registerDefinition['id']

View File

@ -352,7 +352,7 @@ def writeBlockGetMethodDeclarations(fileDescriptor, registerDefinitions):
def writePropertyUpdateMethodDeclarations(fileDescriptor, registerDefinitions): def writePropertyUpdateMethodDeclarations(fileDescriptor, registerDefinitions):
for registerDefinition in registerDefinitions: for registerDefinition in registerDefinitions:
if 'readSchedule' in registerDefinition and registerDefinition['readSchedule'] == 'init': if 'readSchedule' not in registerDefinition or registerDefinition['readSchedule'] == 'init':
continue continue
propertyName = registerDefinition['id'] propertyName = registerDefinition['id']
@ -427,6 +427,9 @@ def writeBlocksUpdateMethodDeclarations(fileDescriptor, blockDefinitions):
def writeRegistersDebugLine(fileDescriptor, debugObjectParamName, registerDefinitions): def writeRegistersDebugLine(fileDescriptor, debugObjectParamName, registerDefinitions):
for registerDefinition in registerDefinitions: for registerDefinition in registerDefinitions:
if registerDefinition['access'] == 'WO':
continue
propertyName = registerDefinition['id'] propertyName = registerDefinition['id']
propertyTyp = getCppDataType(registerDefinition) propertyTyp = getCppDataType(registerDefinition)
line = ('" - %s: " << %s->%s()' % (registerDefinition['description'], debugObjectParamName, propertyName)) line = ('" - %s: " << %s->%s()' % (registerDefinition['description'], debugObjectParamName, propertyName))