Add registers enum for convinience

master
Simon Stürz 2022-01-28 12:05:10 +01:00 committed by Michael Zanetti
parent 4e9f98ddee
commit d22b5b6e91
1 changed files with 54 additions and 0 deletions

View File

@ -111,6 +111,54 @@ def writeLicenseHeader(fileDescriptor):
writeLine(fileDescriptor)
def writeRegistersEnum(fileDescriptor, registerJson):
print('Writing enum for all registers')
registerEnums = {}
# Read all register names and addresses
if 'blocks' in registerJson:
for blockDefinition in registerJson['blocks']:
blockRegisters = blockDefinition['registers']
for blockRegister in blockRegisters:
registerName = blockRegister['id']
registerAddress = blockRegister['address']
registerEnums[registerAddress] = registerName
for registerDefinition in registerJson['registers']:
registerName = registerDefinition['id']
registerAddress = registerDefinition['address']
registerEnums[registerAddress] = registerName
# Sort the enum map
registersKeys = registerEnums.keys()
sortedRegistersKeys = sorted(registersKeys)
sortedRegisterEnumList = []
print('Sorted registers')
for registerAddress in sortedRegistersKeys:
print('--> %s : %s' % (registerAddress, registerEnums[registerAddress]))
enumData = {}
enumData['key'] = registerEnums[registerAddress]
enumData['value'] = registerAddress
sortedRegisterEnumList.append(enumData)
enumName = 'Registers'
writeLine(fileDescriptor, ' enum %s {' % enumName)
for i in range(len(sortedRegisterEnumList)):
enumData = sortedRegisterEnumList[i]
line = (' Register%s = %s' % (enumData['key'][0].upper() + enumData['key'][1:] , enumData['value']))
if i < (len(sortedRegisterEnumList) - 1):
line += ','
writeLine(fileDescriptor, line)
writeLine(fileDescriptor, ' };')
writeLine(fileDescriptor, ' Q_ENUM(%s)' % enumName)
writeLine(fileDescriptor)
def writeEnumDefinition(fileDescriptor, enumDefinition):
print('Writing enum', enumDefinition)
enumName = enumDefinition['name']
@ -900,6 +948,9 @@ def writeTcpHeaderFile():
# Public members
writeLine(headerFile, 'public:')
# Write enum for all register values
writeRegistersEnum(headerFile, registerJson)
# Enum declarations
if 'enums' in registerJson:
for enumDefinition in registerJson['enums']:
@ -1060,6 +1111,9 @@ def writeRtuHeaderFile():
# Public members
writeLine(headerFile, 'public:')
# Write enum for all register values
writeRegistersEnum(headerFile, registerJson)
# Enum declarations
if 'enums' in registerJson:
for enumDefinition in registerJson['enums']: