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):