Petteri Aimonen [Wed, 27 Jan 2016 16:53:26 +0000 (18:53 +0200)]
Replace uint8_t with a pb_byte_t typedef.
This supports platforms where uint8_t does not exist.
If you are using a custom pb_syshdr.h, this may require adding
definitions for uint_least8_t etc.
Petteri Aimonen [Wed, 27 Jan 2016 16:24:33 +0000 (18:24 +0200)]
Modify the int size STATIC_ASSERTS to work with CHAR_BITS!=8.
This will still catch the most common bug of long int vs. long long int.
The uint8_t checks do not seem necessary, test for this will be added
in later commit.
Petteri Aimonen [Tue, 26 Jan 2016 20:10:09 +0000 (22:10 +0200)]
Get rid of type punning in pb_encode_fixedXX().
This was never very clean code, but it was fast. Hopefully
compilers are smart enough to optimize it away, or the speed
difference is not very large. This should be checked.
However working code is always more important than fast code,
and the previous way couldn't really work for platforms that
do not have byte-sized memory access. Related to PR #191.
Petteri Aimonen [Wed, 16 Dec 2015 14:39:30 +0000 (16:39 +0200)]
Merge pull request #190 from aeruder/master
pb_istream_from_buffer: add const to prototype
Andrew Ruder [Wed, 16 Dec 2015 14:13:55 +0000 (08:13 -0600)]
pb_istream_from_buffer: add const to prototype
This commit changes the prototype for pb_istream_from_buffer from:
pb_istream_t pb_istream_from_buffer(uint8_t *buf, size_t bufsize);
to
pb_istream_t pb_istream_from_buffer(const uint8_t *buf, size_t bufsize);
This allows pb_istream_from_buffer users to point to const buffers
without having to inspect code (to ensure practical const-ness) and then be
forced to manually cast away const.
In order to not break compatibility with existing programs (by
introducing a const/non-const union in the pb_istream_t state) we simply
cast away the const in pb_istream_from_buffer and re-apply it when
possible in the callbacks. Unfortunately we lose any compiler help in
the callbacks to ensure we are treating the buffer as const but manual
inspection is easy enough.
Petteri Aimonen [Sat, 21 Nov 2015 07:47:29 +0000 (09:47 +0200)]
Fix mistake in previous commit
Petteri Aimonen [Fri, 20 Nov 2015 21:57:37 +0000 (23:57 +0200)]
Fix generator crash with Enum inside Oneof (issue #188).
Add testcase for the same.
Petteri Aimonen [Sun, 15 Nov 2015 07:26:10 +0000 (09:26 +0200)]
Second fix for -pedantic build issue in tests
Petteri Aimonen [Sat, 14 Nov 2015 20:37:54 +0000 (22:37 +0200)]
Fix -Wno-pedantic on old GCC
Petteri Aimonen [Sat, 14 Nov 2015 20:23:48 +0000 (22:23 +0200)]
Add testcase for anonymous unions + few fixes.
Fixes compilation error with anonymous unions when
it is not the last field in message. Also fixes
extraneous newlines in header file. Cleanup the
pb.h extraneous use of ##.
Benjamin Kamath [Thu, 5 Nov 2015 00:42:25 +0000 (16:42 -0800)]
Add option to allow for anonymous unions
Petteri Aimonen [Sun, 25 Oct 2015 16:07:23 +0000 (18:07 +0200)]
Ignore null pointers in pb_release() (issue #183).
Petteri Aimonen [Sat, 24 Oct 2015 19:20:39 +0000 (22:20 +0300)]
Add contributing.md to provide issue templates on github
Petteri Aimonen [Sat, 17 Oct 2015 07:19:40 +0000 (10:19 +0300)]
Merge pull request #181 from kylemanna/cmake
Cmake updates
Kyle Manna [Thu, 15 Oct 2015 20:57:37 +0000 (13:57 -0700)]
examples: cmake_simple: Use auto discovered path
* No need to specify the src path and the module path. Let cmake do it.
Kyle Manna [Thu, 15 Oct 2015 20:56:20 +0000 (13:56 -0700)]
cmake: Auto discover NANOPB_SRC_ROOT_FOLDER
* Use CMAKE_CURRENT_LIST_DIR to learn the path of the currently running
file to determine location of NanoPB.
* Simplifies use in other projects.
Kyle Manna [Thu, 15 Oct 2015 20:04:23 +0000 (13:04 -0700)]
cmake: Build generator files in build directory
Treat the source directory as immutable. Copy the generator directory
which previously generated files in-tree to the build directory and
then generate files.
Many emerging continuous integration build systems test builds across
multiple versions of dependencies protobuf and python versions in
particular. The previous source tree builds resulted in stale files
from the last build breaking the current build. By placing the build
files in the build directory, the build system automatically removes
stale files (removes output build directory) and regenerates them as
necessary.
Petteri Aimonen [Thu, 8 Oct 2015 15:23:32 +0000 (18:23 +0300)]
Merge pull request #176 from kylemanna/whitespace
generator: Remove trailing whitespace
Kyle Manna [Thu, 8 Oct 2015 01:16:36 +0000 (18:16 -0700)]
generator: Remove trailing whitespace
* Remove trailing whitespace
* No functional changes
Petteri Aimonen [Mon, 5 Oct 2015 13:01:53 +0000 (16:01 +0300)]
Fix regression in generating message size defines (issue #172).
This bug was triggered when:
1. A .proto file included another .proto from a different directory.
2. The another .proto has an associated .options file.
Added regression test for the same.
Petteri Aimonen [Mon, 5 Oct 2015 12:36:24 +0000 (15:36 +0300)]
Add random message generator to help with fuzz testing
Petteri Aimonen [Thu, 1 Oct 2015 14:38:10 +0000 (17:38 +0300)]
Fix bug in fuzzstub.
The fread call always returned a message length of 1 byte,
making the fuzz stub used for external fuzzers useless. The
normal fuzztest.c was unaffected.
Bug found using afl-fuzz.
Petteri Aimonen [Sat, 26 Sep 2015 09:53:26 +0000 (12:53 +0300)]
Fix list formatting in readme
Petteri Aimonen [Sat, 26 Sep 2015 09:48:52 +0000 (12:48 +0300)]
Add documentation link to readme
Petteri Aimonen [Sat, 26 Sep 2015 09:47:34 +0000 (12:47 +0300)]
Fine-tune the readme
Petteri Aimonen [Sat, 26 Sep 2015 09:32:12 +0000 (12:32 +0300)]
Clean up the python2/python3 string type handling
Petteri Aimonen [Sat, 26 Sep 2015 09:21:08 +0000 (12:21 +0300)]
Merge pull request #170 from kylemanna/travis-ci
Add Travis CI Support
Petteri Aimonen [Sat, 26 Sep 2015 09:08:55 +0000 (12:08 +0300)]
Merge pull request #169 from kylemanna/python3
Add proper Python3 support to the generator
Petteri Aimonen [Sat, 26 Sep 2015 09:07:08 +0000 (12:07 +0300)]
Setting version to 0.3.5-dev
Petteri Aimonen [Sat, 26 Sep 2015 08:23:59 +0000 (11:23 +0300)]
Publishing nanopb-0.3.4
Petteri Aimonen [Thu, 24 Sep 2015 17:32:29 +0000 (20:32 +0300)]
Add initialization to examples/simple
Petteri Aimonen [Tue, 22 Sep 2015 04:24:21 +0000 (07:24 +0300)]
Merge pull request #171 from kylemanna/misc
decode: Fix compiler issue with gcc-5
Kyle Manna [Mon, 21 Sep 2015 18:03:12 +0000 (11:03 -0700)]
decode: Fix compiler issue with gcc-5
* gcc 5.0 and 5.1 appear to take issue with this line and generates the
following error:
/home/nitro/tmp/nanopb/pb_decode.c: In function ‘pb_decode_noinit’:
/home/nitro/tmp/nanopb/pb_decode.c:889:60: error: conversion to ‘uint8_t {aka unsigned char}’ from ‘int’ may alter its value [-Werror=conversion]
fields_seen[iter.required_field_index >> 3] |= (uint8_t)(1 << (iter.required_field_index & 7));
^
* This seems like a compiler bug, but this workaround is harmless.
Kyle Manna [Mon, 21 Sep 2015 16:04:11 +0000 (09:04 -0700)]
travis-ci: Use protobuf v3 as it adds python3
* Still in testing currently.
Kyle Manna [Mon, 21 Sep 2015 05:58:54 +0000 (22:58 -0700)]
travis-ci: Build C/C++/Python matrix
* Test a number of C compilers
* Travis CI can't handle three languages (C, C++, Python)
* Add support for swapping python2/3 binaries
* Scons has made no attempts to support python3 yet:
* Build the matrix manually
* Scons doesn't inherit $CC/$CXX from parent environement,
so pass compiler flags directly
Kyle Manna [Mon, 21 Sep 2015 15:16:17 +0000 (08:16 -0700)]
generator: Use search $PATH for python
* Search $PATH for the python binary so that this works better with
things like virtualenv as used on Travis CI
Kyle Manna [Mon, 21 Sep 2015 04:49:48 +0000 (21:49 -0700)]
travis-ci: Initial working build
* Initial working build for Travis CI build system.
Kyle Manna [Mon, 21 Sep 2015 01:39:45 +0000 (18:39 -0700)]
generator: Fix strange unicode/str issue in python2
* Work around this by checking the appropriate class for the given
* environment.
Kyle Manna [Mon, 21 Sep 2015 00:22:25 +0000 (17:22 -0700)]
generator: Attempt to simplify the str/unicode madness
* This is a shot in the dark.
Kyle Manna [Sat, 19 Sep 2015 22:13:05 +0000 (15:13 -0700)]
generator: Strings are utf-8 by default in python3
* Not sure how to handle this case in python2, seems to work
* Python 3 doesn't need this since all strings are utf-8
Kyle Manna [Sat, 19 Sep 2015 22:03:13 +0000 (15:03 -0700)]
generator: Remove cmp() to work with Python3
* Python3 ignores cmp() and __cmp__() and only needs __lt__() for
sorting. Delete and update as appropriate.
* Ref: https://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons
Kyle Manna [Sat, 19 Sep 2015 21:36:55 +0000 (14:36 -0700)]
generator: More exhaustive field size checking
Create a FieldMaxSize class that:
* Accumlates all C assertions
* Handles the checking of the longest simple field
* Also python3 doesn't support max(None)
Kyle Manna [Sat, 19 Sep 2015 21:30:21 +0000 (14:30 -0700)]
generator: Use python2/3 binary read/write method
* This works with python2 and python3
Kyle Manna [Sat, 19 Sep 2015 21:12:36 +0000 (14:12 -0700)]
generator: Run python's 2to3 converter
* Invoked with `2to3 -w nanopb_generator.py`
* No other changes.
Kyle Manna [Sat, 19 Sep 2015 22:19:28 +0000 (15:19 -0700)]
cmake: Don't explicitly look for python2
* Use the system python binary and make sure the generator works with
both instead.
Kyle Manna [Sat, 19 Sep 2015 21:42:03 +0000 (14:42 -0700)]
generator: Don't force python2
Python2 is being phased out of the default python interpreter. Arch
Linux has moved some time ago and upcoming Debian realeases will follow.
My distro, Arch, doesn't have a python2-protobuf version, but does have
a python3 version. With a python 2 & 3 compatible generator the exact
interpreter can be ignored and can use the system default as most users
expect.
Update issue #155
Petteri Aimonen [Sun, 20 Sep 2015 11:37:39 +0000 (14:37 +0300)]
Update changelog
Petteri Aimonen [Sun, 20 Sep 2015 11:12:19 +0000 (14:12 +0300)]
Add syntax specification to .proto files (issue #167)
Eliminates a warning on protoc 3.0.
Petteri Aimonen [Sun, 13 Sep 2015 08:38:54 +0000 (11:38 +0300)]
Fix maximum encoded size for negative enums (issue #166).
Petteri Aimonen [Sat, 12 Sep 2015 12:45:37 +0000 (15:45 +0300)]
Make the generator understand included files (issue #165).
This will allow message sizes and enum options to be available
across the include files.
Currently searching for .options files for included files may
not work for all path combinations, this is related to issue #116.
Should probably make a pull request to protoc about that.
Petteri Aimonen [Sat, 12 Sep 2015 11:46:00 +0000 (14:46 +0300)]
Refactor the generator logic into a ProtoFile class.
In preparation for multi-file support in generator.
No functional changes yet.
Petteri Aimonen [Sat, 12 Sep 2015 10:27:56 +0000 (13:27 +0300)]
Expand the multiple_files test case to include oneofs and enums
Petteri Aimonen [Sat, 12 Sep 2015 10:04:22 +0000 (13:04 +0300)]
Fix handling of unsigned 8- or 16-bit enums.
Previously unsigned enums would throw errors on decoding if the value
went outside the signed range (issue #164).
Currently only helps for enums defined within the same file, but solving
issue #165 will make it work for multiple files also.
Petteri Aimonen [Sat, 12 Sep 2015 09:16:58 +0000 (12:16 +0300)]
Add testcase for issue #164
Petteri Aimonen [Sat, 12 Sep 2015 09:15:27 +0000 (12:15 +0300)]
Add packed_enum option to generator.
This can be generally useful for saving RAM, but also makes
it easier to test for issue #164.
Petteri Aimonen [Sat, 11 Jul 2015 06:23:47 +0000 (09:23 +0300)]
Add note about running tests on Mac OS X
Petteri Aimonen [Wed, 1 Jul 2015 16:48:43 +0000 (19:48 +0300)]
Add link to forum to the readme
Petteri Aimonen [Wed, 17 Jun 2015 10:08:23 +0000 (13:08 +0300)]
Merge pull request #157 from ivankravets/patch-1
Specify additional fields for @PlatformIO Registry
Ivan Kravets [Wed, 17 Jun 2015 10:05:01 +0000 (13:05 +0300)]
Specify additional fields for @PlatformIO Registry
Petteri Aimonen [Tue, 16 Jun 2015 11:58:25 +0000 (14:58 +0300)]
Merge pull request #156 from ncolomer/master
PlatformIO Library Registry manifest file
Nicolas Colomer [Tue, 16 Jun 2015 11:47:34 +0000 (13:47 +0200)]
PlatformIO Library Registry manifest file
Petteri Aimonen [Thu, 7 May 2015 16:59:56 +0000 (19:59 +0300)]
Add download link to readme
Petteri Aimonen [Tue, 28 Apr 2015 15:16:51 +0000 (18:16 +0300)]
Fix for previous (issue #155)
Petteri Aimonen [Tue, 28 Apr 2015 15:14:24 +0000 (18:14 +0300)]
Prefer python2 in generator/protoc-gen-nanopb.
Update issue 155
Status: FixedInGit
Petteri Aimonen [Fri, 10 Apr 2015 18:07:25 +0000 (21:07 +0300)]
Setting version to 0.3.4-dev
Petteri Aimonen [Fri, 10 Apr 2015 17:46:33 +0000 (20:46 +0300)]
Publishing nanopb-0.3.3
Petteri Aimonen [Wed, 8 Apr 2015 15:38:03 +0000 (18:38 +0300)]
Switch to .tar.gz format for Mac OS X packages.
Update issue 154
Status: FixedInGit
Petteri Aimonen [Wed, 8 Apr 2015 15:05:25 +0000 (18:05 +0300)]
Fix problem with plugin options on Python 2.7.2 and older.
Update issue 153
Status: FixedInGit
Petteri Aimonen [Fri, 3 Apr 2015 18:14:06 +0000 (21:14 +0300)]
Update changelog
Petteri Aimonen [Fri, 3 Apr 2015 18:07:14 +0000 (21:07 +0300)]
Clear callbacks for union fields.
Update issue 148
Status: FixedInGit
Petteri Aimonen [Fri, 3 Apr 2015 18:00:57 +0000 (21:00 +0300)]
Fix for test case build rules
Petteri Aimonen [Fri, 3 Apr 2015 17:43:13 +0000 (20:43 +0300)]
Improve comment support in .options files.
Update issue 145
Status: FixedInGit
Petteri Aimonen [Fri, 3 Apr 2015 17:08:05 +0000 (20:08 +0300)]
Always define enum long names so that cross-file references work.
Update issue 118
Status: FixedInGit
Petteri Aimonen [Fri, 3 Apr 2015 16:46:57 +0000 (19:46 +0300)]
Add basic docs for msgid functionality
Petteri Aimonen [Fri, 3 Apr 2015 16:44:23 +0000 (19:44 +0300)]
Generate #defines for plain message ids
Petteri Aimonen [Sun, 22 Mar 2015 09:19:43 +0000 (11:19 +0200)]
Add simple test case for message ids
Petteri Aimonen [Sun, 22 Mar 2015 09:17:57 +0000 (11:17 +0200)]
Use make_identifier() to create the name for FOO_MESSAGES define.
This handles special charaters like in "my-file.proto" properly.
Also use headerbasename instead of full path, so that compiling files
with relative path doesn't create symbols like FOO/BAR/BAZ_MESSAGES.
Michael Haberler [Sun, 22 Mar 2015 01:18:24 +0000 (02:18 +0100)]
nanopb_generator.py: emit macros for msgid message type id use
Michael Haberler [Sun, 22 Mar 2015 01:17:30 +0000 (02:17 +0100)]
nanopb.proto: add msgid message-level option
Petteri Aimonen [Sat, 7 Mar 2015 08:25:09 +0000 (10:25 +0200)]
Fix oneof submessage initialization bug.
Update issue 149
Status: FixedInGit
Petteri Aimonen [Thu, 26 Feb 2015 16:16:25 +0000 (18:16 +0200)]
Better error messages for syntax errors in .options file
Petteri Aimonen [Thu, 26 Feb 2015 15:33:36 +0000 (17:33 +0200)]
Fix generator error when long_names:false is combined with Oneofs.
Update issue 147
Status: FixedInGit
Petteri Aimonen [Sun, 22 Feb 2015 13:28:26 +0000 (15:28 +0200)]
Include libprotobuf in linux binary package.
Previously this got included by bbfreeze, but apparently no more.
Update issue 146
Status: FixedInGit
Petteri Aimonen [Fri, 13 Feb 2015 16:57:46 +0000 (18:57 +0200)]
Lower required CMake version in example
Petteri Aimonen [Fri, 13 Feb 2015 16:42:35 +0000 (18:42 +0200)]
Update cmake_simple example readme
Oliver Lee [Fri, 13 Feb 2015 16:28:27 +0000 (17:28 +0100)]
Add simple example built with CMake
Oliver Lee [Fri, 13 Feb 2015 16:14:00 +0000 (17:14 +0100)]
Fix search for Python 2 with CMake
Do not assume that Python has already been found by CMake. Fix value of
CMake variable PYTHON_EXECUTABLE if Python 3 was found. Change minimum
supported Python version to 2.6.
This fixes a bug introduced by this commit:
d8d3b75e2e3b348d016f48cebc1be764061975d2
Oliver Lee [Fri, 13 Feb 2015 09:26:31 +0000 (10:26 +0100)]
Updates for the CMake rule file.
1) Search explicitly for python2.7
In systems where python3 is default or in build cases where the user has
already searched for and found python3 in CMake, store the python3
executable and search for python2.7.
2) Generate nanopb core protobuf files with CMake
Generate python output files used in turn by the nanopb generator
script. This removes the requirement of manually calling 'make' in the
nanopb/generator/proto directory.
3) Use nanopb options file if it exists
Look for nanopb options file and use in protobuf source and header
generation if it exists. The options file must have the same name and
path as the proto file, excluding the extension.
Petteri Aimonen [Tue, 27 Jan 2015 15:47:25 +0000 (17:47 +0200)]
Fix generator bug when oneof is first field in a message.
Added test case for the same.
Update issue 142
Status: FixedInGit
Petteri Aimonen [Sat, 24 Jan 2015 15:40:42 +0000 (17:40 +0200)]
Setting version to nanopb-0.3.3-dev
Petteri Aimonen [Sat, 24 Jan 2015 15:33:01 +0000 (17:33 +0200)]
Publishing nanopb-0.3.2
Petteri Aimonen [Fri, 23 Jan 2015 19:29:29 +0000 (21:29 +0200)]
Fix encoded_size #defines for oneof messages.
The sizes are represented as EncodedSize() instances, which cause
max() operation to sort them by address instead of value. This caused
pretty much random item to be selected for the maximum.
Update issue 141
Status: FixedInGit
Petteri Aimonen [Thu, 15 Jan 2015 17:34:49 +0000 (19:34 +0200)]
Update changelog
Petteri Aimonen [Thu, 15 Jan 2015 17:18:48 +0000 (19:18 +0200)]
Fix clang compiler warning in intsizes unit test.
Petteri Aimonen [Thu, 15 Jan 2015 16:58:08 +0000 (18:58 +0200)]
Release memory when overwriting oneof fields.
Update issue 131
Status: FixedInGit
Petteri Aimonen [Sun, 11 Jan 2015 17:47:27 +0000 (19:47 +0200)]
Add oneofs to AllTypes test case
Petteri Aimonen [Sun, 11 Jan 2015 17:46:15 +0000 (19:46 +0200)]
Bugfixes for oneof support.
Fixes crashes / memory leaks when using pointer type fields.
Also fixes initialization of which_oneof fields.
Petteri Aimonen [Sun, 11 Jan 2015 17:38:05 +0000 (19:38 +0200)]
New generator options for oneofs: allow skipping or generating as normal 'optional' fields.
The behaviour with no_unions:true is the same as of nanopb 0.3.1 and earlier.
Petteri Aimonen [Wed, 7 Jan 2015 16:59:44 +0000 (18:59 +0200)]
Fix generator error with OneOfs
Petteri Aimonen [Mon, 5 Jan 2015 20:32:34 +0000 (22:32 +0200)]
Allow using 8/16/32/64 as values in int_size setting