X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=docs%2Fmigration.rst;h=ac92db88d47f07fba71e0eafc406748d24491ee7;hb=acd72917912aa99e9751766ec90e2d2156639a60;hp=5ac52b3e38082293dbfe0581fef43cbf6c42d83a;hpb=be0b9e047a007685aa10a268f9bf856e9a52ef58;p=apps%2Fagl-service-can-low-level.git diff --git a/docs/migration.rst b/docs/migration.rst index 5ac52b3e..ac92db88 100644 --- a/docs/migration.rst +++ b/docs/migration.rst @@ -11,7 +11,26 @@ are included, in order to make it easier to find this document. .. contents :: -Nanopb-0.3.0 (2014-09-xx) +Nanopb-0.3.2 (2015-01-24) +========================= + +Add support for OneOfs +---------------------- +**Rationale:** Previously nanopb did not support the *oneof* construct in +*.proto* files. Those fields were generated as regular *optional* fields. + +**Changes:** OneOfs are now generated as C unions. Callback fields are not +supported inside oneof and generator gives an error. + +**Required actions:** The generator option *no_unions* can be used to restore old +behaviour and to allow callbacks to be used. To use unions, one change is +needed: use *which_xxxx* field to detect which field is present, instead +of *has_xxxx*. Compare the value against *MyStruct_myfield_tag*. + +**Error indications:** Generator error: "Callback fields inside of oneof are +not supported". Compiler error: "Message" has no member named "has_xxxx". + +Nanopb-0.3.0 (2014-08-26) ========================= Separate field iterator logic to pb_common.c @@ -151,12 +170,12 @@ Callback function signature as *void\**. This allowed passing of any data, but made it unnecessarily complex to return a pointer from callback. -**Changes:** The callback function parameter was changed to *void\**. +**Changes:** The callback function parameter was changed to *void\*\**. **Required actions:** You can continue using the old callback style by defining *PB_OLD_CALLBACK_STYLE*. Recommended action is to: - * Change the callback signatures to contain *void\** for decoders and + * Change the callback signatures to contain *void\*\** for decoders and *void \* const \** for encoders. * Change the callback function body to use *\*arg* instead of *arg*.