Generate ENUMTYPE macros for enums instead of MSGTYPE macros.
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index c9fc4cf..77036b2 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -1422,7 +1422,7 @@
result += '#define %s_DEFAULT NULL\n' % Globals.naming_style.define_name(self.name)
for field in sorted_fields:
- if field.pbtype in ['MESSAGE', 'MSG_W_CB', "UENUM"]:
+ if field.pbtype in ['MESSAGE', 'MSG_W_CB']:
if field.rules == 'ONEOF':
result += "#define %s_%s_%s_MSGTYPE %s\n" % (
Globals.naming_style.type_name(self.name),
@@ -1437,6 +1437,21 @@
Globals.naming_style.type_name(field.ctype)
)
+ if field.pbtype in ['ENUM', "UENUM"]:
+ if field.rules == 'ONEOF':
+ result += "#define %s_%s_%s_ENUMTYPE %s\n" % (
+ Globals.naming_style.type_name(self.name),
+ Globals.naming_style.var_name(field.union_name),
+ Globals.naming_style.var_name(field.name),
+ Globals.naming_style.type_name(field.ctype)
+ )
+ else:
+ result += "#define %s_%s_ENUMTYPE %s\n" % (
+ Globals.naming_style.type_name(self.name),
+ Globals.naming_style.var_name(field.name),
+ Globals.naming_style.type_name(field.ctype)
+ )
+
return result
def fields_declaration_cpp_lookup(self):