diff options
author | jheaff1 <jheaff1@outlook.com> | 2023-08-17 13:18:59 +0300 |
---|---|---|
committer | Petteri Aimonen <jpa@github.mail.kapsi.fi> | 2023-09-08 15:11:23 +0300 |
commit | f5f65a90c8057a591f3cc98de40874bd78c9880d (patch) | |
tree | fd5f0ff766cb47c9aac8f16df01e509fd7348264 | |
parent | 9c11463770beab0c6f244999e66676f9bca866fd (diff) |
Provide the maximum message size
-rwxr-xr-x | generator/nanopb_generator.py | 7 | ||||
-rw-r--r-- | tests/message_sizes/dummy.c | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index cb73d1b..82aa6e4 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -2041,6 +2041,8 @@ class ProtoFile: yield '#endif\n' guards = {} + # Provide a #define of the maximum message size, which faciliates setting the size of static arrays to be the largest possible encoded message size + max_messagesize = max(messagesizes, key=lambda messagesize: messagesize[1].value if messagesize[1] else 0) for identifier, msize in messagesizes: if msize is not None: cpp_guard = msize.get_cpp_guard(local_defines) @@ -2048,6 +2050,11 @@ class ProtoFile: guards[cpp_guard] = set() guards[cpp_guard].add('#define %-40s %s' % ( Globals.naming_style.define_name(identifier), msize)) + + if identifier == max_messagesize[0]: + guards[cpp_guard].add('#define %-40s %s' % ( + Globals.naming_style.define_name(symbol + "_MAX_SIZE"), Globals.naming_style.define_name(identifier))) + else: yield '/* %s depends on runtime parameters */\n' % identifier for guard, values in guards.items(): diff --git a/tests/message_sizes/dummy.c b/tests/message_sizes/dummy.c index 767ad46..560fd09 100644 --- a/tests/message_sizes/dummy.c +++ b/tests/message_sizes/dummy.c @@ -4,6 +4,7 @@ int main() { + PB_STATIC_ASSERT(MESSAGES2_PB_H_MAX_SIZE == xmit_size, INCORRECT_MAX_SIZE); return xmit_size; } |