From: Petteri Aimonen Date: Mon, 3 Jun 2013 19:46:19 +0000 (+0300) Subject: Include the field tags in the generated .pb.h file. X-Git-Tag: 3.99.1~14^2~374 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=a1cec46b3e824292b4ae22fa1f5c4faf9846196c;p=apps%2Flow-level-can-service.git Include the field tags in the generated .pb.h file. Patch from Michael Haberler. --- diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 3529a34..bd365df 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'