From a1cec46b3e824292b4ae22fa1f5c4faf9846196c Mon Sep 17 00:00:00 2001 From: Petteri Aimonen Date: Mon, 3 Jun 2013 22:46:19 +0300 Subject: [PATCH] Include the field tags in the generated .pb.h file. Patch from Michael Haberler. --- generator/nanopb_generator.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 3529a346..bd365dfd 100644 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -235,6 +235,11 @@ class Field: else: return 'const %s %s_default%s = %s;' % (ctype, self.struct_name + self.name, array_decl, default) + def tags(self): + '''Return the #define for the tag number of this field.''' + identifier = '%s_%s_tag' % (self.struct_name, self.name) + return '#define %-40s %d\n' % (identifier, self.tag) + def pb_field_t(self, prev_field_name): '''Return the pb_field_t initializer to use in the constant array. prev_field_name is the name of the previous field or None. @@ -490,6 +495,12 @@ def generate_header(dependencies, headername, enums, messages, options): yield msg.default_decl(True) yield '\n' + yield '/* Field tags (for use in manual encoding/decoding) */\n' + for msg in sort_dependencies(messages): + for field in msg.fields: + yield field.tags() + yield '\n' + yield '/* Struct field encoding specification for nanopb */\n' for msg in messages: yield msg.fields_declaration() + '\n' -- 2.16.6