Petteri Aimonen [Mon, 22 Jul 2013 16:00:04 +0000 (19:00 +0300)]
Finish the testcase for extensions
Petteri Aimonen [Mon, 22 Jul 2013 15:59:15 +0000 (18:59 +0300)]
Fix bugs in extension support when multiple extension fields are present.
Petteri Aimonen [Wed, 17 Jul 2013 17:21:51 +0000 (20:21 +0300)]
Extension support implemented for decoder.
Testing is still needed. Also only 'optional' extension fields
are supported now, 'repeated' fields are not yet supported.
Petteri Aimonen [Wed, 17 Jul 2013 16:29:06 +0000 (19:29 +0300)]
Add test case for extensions decoding
Petteri Aimonen [Wed, 17 Jul 2013 16:23:19 +0000 (19:23 +0300)]
Implement extension support for the encoder
Petteri Aimonen [Tue, 16 Jul 2013 21:06:54 +0000 (00:06 +0300)]
Implement generator support for extension fields (no encoder/decoder support yet)
Petteri Aimonen [Tue, 16 Jul 2013 08:31:38 +0000 (11:31 +0300)]
Fix formatting in documentation
Kent Ryhorchuk [Tue, 16 Jul 2013 01:04:47 +0000 (18:04 -0700)]
Check for empty message type before incrementing required_field_index.
If you have a message that defined as empty, but attempt to decode a
message that has one or more unknown fields then pb_decode fails. The
method used to count the number of required fields counts 1 required
field because the default type of PB_LAST_FIELD is PB_HTYPE_REQUIRED.
Petteri Aimonen [Tue, 16 Jul 2013 08:07:34 +0000 (11:07 +0300)]
Add test case for extra fields in AllTypes
Petteri Aimonen [Sat, 6 Jul 2013 13:16:00 +0000 (16:16 +0300)]
Add pb_decode_delimited and pb_encode_delimited wrapper functions.
Update issue 74
Status: FixedInGit
Petteri Aimonen [Sat, 6 Jul 2013 12:55:15 +0000 (15:55 +0300)]
Clean up the comments in pb_encode.h and pb_decode.h
Petteri Aimonen [Sat, 6 Jul 2013 12:27:31 +0000 (15:27 +0300)]
Add section in pb.h for changing compilation settings.
Update issue 76
Status: FixedInGit
Petteri Aimonen [Sat, 6 Jul 2013 12:25:42 +0000 (15:25 +0300)]
Add error message macros to API reference.
Petteri Aimonen [Sat, 6 Jul 2013 10:49:47 +0000 (13:49 +0300)]
Document the .options file usage.
Also add note about the 'packed' message option being incompatible
with CPUs that do not support unaligned access.
Update issue 12
Status: FixedInGit
Update issue 77
Status: FixedInGit
Petteri Aimonen [Sat, 6 Jul 2013 10:01:21 +0000 (13:01 +0300)]
Switch the example project to use the new .options file
Petteri Aimonen [Mon, 3 Jun 2013 19:46:19 +0000 (22:46 +0300)]
Include the field tags in the generated .pb.h file.
Patch from Michael Haberler.
Petteri Aimonen [Sun, 14 Apr 2013 07:07:46 +0000 (10:07 +0300)]
Setting version to 0.2.2-dev
Petteri Aimonen [Sun, 14 Apr 2013 07:06:47 +0000 (10:06 +0300)]
Publishing nanopb-0.2.1
Petteri Aimonen [Sun, 14 Apr 2013 07:04:46 +0000 (10:04 +0300)]
Update changelog
Petteri Aimonen [Sun, 14 Apr 2013 06:46:39 +0000 (09:46 +0300)]
Handle unterminated strings when encoding.
If the null terminator is not present, string will be limited to the
data size of the field.
If you are still using the pb_enc_string (deprecated since 0.1.3) from
callbacks, now would be an excellent time to stop. The pb_field_t for
the callback will not contain proper data_size. Use pb_encode_string()
instead.
Update issue 68
Status: FixedInGit
Petteri Aimonen [Sun, 14 Apr 2013 06:26:42 +0000 (09:26 +0300)]
Fix bug with empty strings in repeated string callbacks.
Fix suggested by Henrik Carlgren. Added also unit test for the bug.
Update issue 73
Status: FixedInGit
Petteri Aimonen [Mon, 8 Apr 2013 08:00:28 +0000 (11:00 +0300)]
Avoid maybe-uninitialized warning
Patch from dch.
dch [Sun, 7 Apr 2013 14:28:51 +0000 (15:28 +0100)]
No need to include stdbool.h separately
dch [Sun, 7 Apr 2013 14:28:05 +0000 (15:28 +0100)]
__pragma keyword is only supported by recent Microsoft compilers
Petteri Aimonen [Tue, 2 Apr 2013 17:01:31 +0000 (20:01 +0300)]
Do not generate has_ fields for callback fields.
The arg field can be used to store the field presence from inside
the callback. Furthermore, having the has_ field for encoding callbacks
would be more annoying than useful.
Update issue 70
Status: FixedInGit
Petteri Aimonen [Tue, 2 Apr 2013 16:55:21 +0000 (19:55 +0300)]
Change the callback function to use void**.
NOTE: This change breaks backwards-compatibility by default.
If you have old callback functions, you can define PB_OLD_CALLBACK_STYLE
to retain the old behaviour.
If you want to convert your old callbacks to new signature, you need
to do the following:
1) Change decode callback argument to void **arg
and encode callback argument to void * const *arg.
2) Change any reference to arg into *arg.
The rationale for making the new behaviour the default is that it
simplifies the common case of "allocate some memory in decode callback".
Update issue 69
Status: FixedInGit
Petteri Aimonen [Wed, 13 Mar 2013 13:34:12 +0000 (15:34 +0200)]
Fix warning on clang.
Update issue 67
Status: FixedInGit
Petteri Aimonen [Wed, 13 Mar 2013 13:22:00 +0000 (15:22 +0200)]
Add support for packed structures on IAR and MSVC.
Update issue 66
Status: FixedInGit
Petteri Aimonen [Sat, 9 Mar 2013 21:03:09 +0000 (23:03 +0200)]
Make the generator options accept a file name in addition to format string.
Petteri Aimonen [Sat, 9 Mar 2013 12:56:34 +0000 (14:56 +0200)]
Add PB_SYSTEM_HEADER compile time option.
This allows replacing the C99 standard include file names with
a single system-specific file. It should provide all the necessary
system functions (typedefs, memset, memcpy, strlen).
Update issue 62
Status: FixedInGit
Petteri Aimonen [Sat, 9 Mar 2013 12:52:38 +0000 (14:52 +0200)]
Rename pb_field_iterator_t field 'current' to 'pos'.
This avoids a name clash when compiling as Linux kernel module.
Update issue 60
Status: FixedInGit
Petteri Aimonen [Sat, 9 Mar 2013 12:49:15 +0000 (14:49 +0200)]
Implement error message support for the encoder side.
Update issue 7
Status: FixedInGit
Petteri Aimonen [Sat, 9 Mar 2013 12:45:41 +0000 (14:45 +0200)]
alltypes.proto no longer needs to include nanopb.proto
Petteri Aimonen [Sat, 9 Mar 2013 12:23:44 +0000 (14:23 +0200)]
Switch alltypes.proto to use the new .options file mechanism.
Petteri Aimonen [Sat, 9 Mar 2013 12:21:21 +0000 (14:21 +0200)]
Add simple support for separate options file.
Update issue 12
Still needs documentation.
Petteri Aimonen [Sat, 9 Mar 2013 11:12:09 +0000 (13:12 +0200)]
Fix additional bug with empty message types.
pb_field_next() would access past the fields array.
Petteri Aimonen [Sat, 9 Mar 2013 11:09:14 +0000 (13:09 +0200)]
Add option to run the tests with mudflap to detect pointer errors.
Petteri Aimonen [Sat, 9 Mar 2013 10:51:47 +0000 (12:51 +0200)]
Improve the fuzztest.
Enable -fstack-protector-all to detect any stack smashing bugs. Also
use test_decode3 for maximal vulnerable surface.
Petteri Aimonen [Sat, 9 Mar 2013 10:43:35 +0000 (12:43 +0200)]
Fix error in backwards compatibility testcase
Petteri Aimonen [Sat, 9 Mar 2013 10:35:07 +0000 (12:35 +0200)]
Fix bug with decoding empty message types. Add test for the same.
Note: the bug only applies to empty message types. Empty messages
of non-empty message types are not affected.
Update issue 65
Status: FixedInGit
Petteri Aimonen [Wed, 6 Mar 2013 16:02:57 +0000 (18:02 +0200)]
Add a dummy field if struct would otherwise be empty.
Update issue 64
Status: FixedInGit
Petteri Aimonen [Mon, 4 Mar 2013 17:27:42 +0000 (19:27 +0200)]
Add generator option to configure #include directives.
This suits complex projects, where there are multiple interdependent .proto files
in various directories. Patch by Michael Haberler.
Petteri Aimonen [Sat, 2 Mar 2013 14:35:17 +0000 (16:35 +0200)]
Setting version to 0.2.1-dev
Petteri Aimonen [Sat, 2 Mar 2013 14:32:54 +0000 (16:32 +0200)]
Publishing nanopb-0.2.0
Petteri Aimonen [Sat, 2 Mar 2013 14:32:15 +0000 (16:32 +0200)]
Update changelog
Petteri Aimonen [Sat, 2 Mar 2013 14:27:31 +0000 (16:27 +0200)]
Update documentation
Petteri Aimonen [Thu, 28 Feb 2013 14:42:34 +0000 (16:42 +0200)]
Add --extension option to generator.
Patch courtesy of Michael Haberler.
Pavel Ilin [Thu, 31 Jan 2013 18:01:09 +0000 (19:01 +0100)]
Added CMake file for use in projects linking against nanopb.
Petteri Aimonen [Thu, 21 Feb 2013 17:38:56 +0000 (19:38 +0200)]
Merge branch 'dev-0.2'
Petteri Aimonen [Thu, 21 Feb 2013 17:35:20 +0000 (19:35 +0200)]
Move STATIC_ASSERTs to .pb.c file.
This way the .pb.h will remain cleaner and easier to read.
Petteri Aimonen [Wed, 20 Feb 2013 20:55:59 +0000 (22:55 +0200)]
Separate PB_HTYPE to PB_ATYPE and PB_HTYPE.
Also clean up the logic so that it is easier to implement more
allocation types in the future.
Update issue 53
Status: FixedInGit
Petteri Aimonen [Wed, 20 Feb 2013 19:58:18 +0000 (21:58 +0200)]
Rename PB_HTYPE_ARRAY -> PB_HTYPE_REPEATED.
This is a more logical name in parallel with PB_HTYPE_REQUIRED and PB_HTYPE_OPTIONAL.
Warning: This breaks backwards-compatibility of generated .pb.c files.
You will have to regenerate the files and recompile.
Petteri Aimonen [Sat, 16 Feb 2013 22:10:47 +0000 (00:10 +0200)]
Reformat generated .pb.c files using macros.
This has the following advantages:
1) Easier to modify pb_field_t encoding
2) Simpler generator logic
3) Tidier looking, easier to read .pb.c files
Update issue 58
Status: FixedInGit
Petteri Aimonen [Wed, 13 Feb 2013 19:13:35 +0000 (21:13 +0200)]
Setting version to 0.1.9.1-dev
Petteri Aimonen [Wed, 13 Feb 2013 19:12:09 +0000 (21:12 +0200)]
Publishing nanopb-0.1.9
Petteri Aimonen [Mon, 11 Feb 2013 20:03:14 +0000 (22:03 +0200)]
Add gitignore.
This is a bit bloated gitignore file. Having binaries
in a separate build directory would be cleaner, but I don't
bother to make that change now.
Petteri Aimonen [Mon, 11 Feb 2013 19:55:55 +0000 (21:55 +0200)]
Replace pb_type_t enum with #defines.
See issue #57.
Petteri Aimonen [Mon, 11 Feb 2013 19:54:24 +0000 (21:54 +0200)]
Set version to 0.2.0-dev
Petteri Aimonen [Thu, 7 Feb 2013 16:06:42 +0000 (18:06 +0200)]
Update changelog
Petteri Aimonen [Thu, 7 Feb 2013 15:56:52 +0000 (17:56 +0200)]
Fix error message bugs with packed arrays.
Error messages were not propagated correctly with PB_HTYPE_ARRAY.
Error status (boolean return value) was correct.
Update issue 56
Status: FixedInGit
Petteri Aimonen [Thu, 7 Feb 2013 15:48:50 +0000 (17:48 +0200)]
Add check for sizeof(double) == 8.
Update issue 54
Status: FixedInGit
Petteri Aimonen [Thu, 7 Feb 2013 15:40:17 +0000 (17:40 +0200)]
Sanitize filenames before putting them in #ifndef.
Update issue 50
Status: FixedInGit
Petteri Aimonen [Thu, 7 Feb 2013 15:19:53 +0000 (17:19 +0200)]
Fix compiler warning on MSVC (issue #57)
Petteri Aimonen [Wed, 6 Feb 2013 20:18:52 +0000 (22:18 +0200)]
Use unsigned datatypes where appropriate.
Petteri Aimonen [Wed, 6 Feb 2013 20:11:02 +0000 (22:11 +0200)]
Improve the pb_decode_varint implementations.
Results for ARM: -4% execution time, +1% code size
Petteri Aimonen [Wed, 6 Feb 2013 19:44:40 +0000 (21:44 +0200)]
Avoid unnecessary looping in required fields check.
Results for ARM: -6% execution time, -1% code size
Petteri Aimonen [Wed, 6 Feb 2013 18:54:25 +0000 (20:54 +0200)]
Add compile-time option PB_BUFFER_ONLY.
This allows slight optimizations if only memory buffer support
(as opposed to stream callbacks) is wanted. On ARM difference
is -12% execution time, -4% code size when enabled.
Petteri Aimonen [Tue, 5 Feb 2013 20:39:32 +0000 (22:39 +0200)]
Make pb_decode_varint32 a separate implementation.
This avoids doing 64-bit arithmetic for 32-bit varint decodings.
It does increase the code size somewhat.
Results for ARM Cortex-M3: -10% execution time, +1% code size, -2% ram usage.
Petteri Aimonen [Tue, 5 Feb 2013 20:06:36 +0000 (22:06 +0200)]
Performance improvement: replace memcpy with loop.
In the pb_istream_from_buffer and pb_ostream_from_buffer, memcpy was
used to transfer values to the buffer. For the common case of
count = 1-10 bytes, a simple loop is faster.
Petteri Aimonen [Tue, 5 Feb 2013 09:47:37 +0000 (11:47 +0200)]
Add Java package name to nanopb.proto.
This fixes problems when interoperating with Java.
Fix suggested by trepidacious:
https://groups.google.com/forum/#!topic/nanopb/hZgrj6h9OnY
Petteri Aimonen [Tue, 29 Jan 2013 20:10:37 +0000 (22:10 +0200)]
Add an example of handling doubles on AVR platform.
Petteri Aimonen [Mon, 21 Jan 2013 19:18:38 +0000 (21:18 +0200)]
Fix misleading comment (current generator sets LTYPE always).
Petteri Aimonen [Wed, 16 Jan 2013 14:32:48 +0000 (16:32 +0200)]
Oops, typoed #ifdef; again fixing previous commit.
Petteri Aimonen [Wed, 16 Jan 2013 14:31:45 +0000 (16:31 +0200)]
Put previous commit (issue 52) inside #ifndef
Petteri Aimonen [Wed, 16 Jan 2013 14:28:51 +0000 (16:28 +0200)]
Fix bug with error messages.
Update issue 52
Status: FixedInGit
Petteri Aimonen [Mon, 14 Jan 2013 15:30:49 +0000 (17:30 +0200)]
Add field type FT_IGNORE to generator.
This allows ignoring fields that are unnecessary or too large for an
embedded system using nanopb, while allowing them to remain in the .proto
for other platforms.
Update issue 51
Status: FixedInGit
Petteri Aimonen [Sun, 13 Jan 2013 16:44:15 +0000 (18:44 +0200)]
Add a test for the backwards compatibility of generated files.
It is not necessary to maintain full compatibility of generated files
for all of eternity, but this test will warn us if there is
a need to regenerate the files.
Petteri Aimonen [Thu, 10 Jan 2013 15:32:27 +0000 (17:32 +0200)]
Add generator option for packed structs.
Usage is:
message Foo
{
option (nanopb_msgopt).packed_struct = true;
...
}
Valid also in file scope.
Update issue 49
Status: FixedInGit
Petteri Aimonen [Thu, 10 Jan 2013 15:31:33 +0000 (17:31 +0200)]
Cleanup: get rid of unnecessary spaces
Petteri Aimonen [Thu, 13 Dec 2012 19:32:37 +0000 (21:32 +0200)]
Setting version to 0.1.9-dev
Petteri Aimonen [Thu, 13 Dec 2012 19:29:57 +0000 (21:29 +0200)]
Publishing nanopb-0.1.8
Petteri Aimonen [Thu, 6 Dec 2012 09:13:53 +0000 (11:13 +0200)]
Fix small error in field callback documentation.
Update issue 44
Status: FixedInGit
Jens Steinhauser [Mon, 26 Nov 2012 23:19:55 +0000 (00:19 +0100)]
Complete initialization of pb_istream_t.
Because PB_RETURN_ERROR checks if the 'errmsg' member is NULL before
assigning to it, error messages would get lost.
Steffen Siering [Sun, 11 Nov 2012 23:02:26 +0000 (23:02 +0000)]
Use TESTS variable to define dependencies for run_unittests
Petteri Aimonen [Fri, 16 Nov 2012 07:51:23 +0000 (09:51 +0200)]
Select compilation options based on $(CC) in tests/Makefile.
Makes 'make CC=clang' work.
Based on patch submitted by Steffen Siering.
Update issue 40:
Status: FixedInGit
Petteri Aimonen [Fri, 16 Nov 2012 07:33:11 +0000 (09:33 +0200)]
Rename test_compiles.c to test_multiple_files.c
Steffen Siering [Sun, 11 Nov 2012 22:48:21 +0000 (22:48 +0000)]
Fix STATIC_ASSERT macro when using multiple .proto files.
The __COUNTER__ macro (used for generating unique names) is at least supported
by gcc, clang and Visual Studio. With this change test_compiles.c is
compilable, since no more typedefs are redefined.
Compilers/Preprocessors not supporting __COUNTER__ error's are still possible
which are hopfully handled by the usage of __LINE__ in most sittuations.
Added unit test for the problem.
Petteri Aimonen [Tue, 13 Nov 2012 22:43:51 +0000 (00:43 +0200)]
Fix naming of nested Enums with short names
Petteri Aimonen [Tue, 13 Nov 2012 22:20:44 +0000 (00:20 +0200)]
Fix naming of enums when long_names=false.
Modify test case to check that options.pb.o compiles.
Update issue 42
Status: FixedInGit
Update issue 43
Status: FixedInGit
Petteri Aimonen [Sun, 11 Nov 2012 09:20:34 +0000 (11:20 +0200)]
Fix changelog
Petteri Aimonen [Sun, 11 Nov 2012 09:19:17 +0000 (11:19 +0200)]
Setting version to 0.1.8-dev
Petteri Aimonen [Sun, 11 Nov 2012 09:16:01 +0000 (11:16 +0200)]
Publishing nanopb-0.1.7
Petteri Aimonen [Mon, 29 Oct 2012 17:33:33 +0000 (19:33 +0200)]
Document new generator options
Petteri Aimonen [Mon, 29 Oct 2012 17:15:34 +0000 (19:15 +0200)]
Add nanopb version number to generated files.
tools/set_version.sh is used to update the values.
Update issue 36
Status: FixedInGit
Petteri Aimonen [Mon, 29 Oct 2012 17:03:19 +0000 (19:03 +0200)]
Add extern "C" to header files.
Update issue 35
Status: FixedInGit
Petteri Aimonen [Mon, 29 Oct 2012 16:55:49 +0000 (18:55 +0200)]
Add option to use short names for enum values.
Update issue 38
Status: FixedInGit
Petteri Aimonen [Mon, 29 Oct 2012 16:34:24 +0000 (18:34 +0200)]
Allow defining field type in .proto.
Update issue 30
Status: FixedInGit
Petteri Aimonen [Mon, 29 Oct 2012 16:20:15 +0000 (18:20 +0200)]
Improve .proto options parsing.
Options can now be defined on command line, file, message or in field
scope.
Update issue 12
Status: Started
Petteri Aimonen [Mon, 29 Oct 2012 15:22:02 +0000 (17:22 +0200)]
Use optparse in nanopb_generator.py
Petteri Aimonen [Mon, 29 Oct 2012 14:56:45 +0000 (16:56 +0200)]
Give names to generated structures to allow forward declaration.
Update issue 39
Status: FixedInGit