Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nanopb/nanopb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjheaff1 <jheaff1@outlook.com>2023-08-17 13:18:59 +0300
committerPetteri Aimonen <jpa@github.mail.kapsi.fi>2023-09-08 15:11:23 +0300
commitf5f65a90c8057a591f3cc98de40874bd78c9880d (patch)
treefd5f0ff766cb47c9aac8f16df01e509fd7348264
parent9c11463770beab0c6f244999e66676f9bca866fd (diff)
Provide the maximum message size
-rwxr-xr-xgenerator/nanopb_generator.py7
-rw-r--r--tests/message_sizes/dummy.c1
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;
}