doc/services/serialization/nanopb.rst
.. _nanopb_reference:
Nanopb
Nanopb <https://jpa.kapsi.fi/nanopb/>_ is a C implementation of Google's
Protocol Buffers <https://protobuf.dev/>_.
Requirements
Nanopb uses the protocol buffer compiler to generate source and header files,
make sure the protoc executable is installed and available.
.. tabs::
.. group-tab:: Ubuntu
Use ``apt`` to install dependency:
.. code-block:: shell
sudo apt install protobuf-compiler
.. group-tab:: macOS
Use ``brew`` to install dependency:
.. code-block:: shell
brew install protobuf
.. group-tab:: Windows
Use ``choco`` to install dependency:
.. code-block:: shell
choco install protoc
Configuration
Make sure to include nanopb within your CMakeLists.txt file as follows:
.. code-block:: cmake
list(APPEND CMAKE_MODULE_PATH ${ZEPHYR_BASE}/modules/nanopb) include(nanopb)
Adding proto files can be done with the zephyr_nanopb_sources() CMake function which
ensures the generated header and source files are created before building the specified target.
Nanopb has generator options <https://jpa.kapsi.fi/nanopb/docs/reference.html#generator-options>_
that can be used to configure messages or fields. This allows to set fixed sizes or skip fields
entirely.
The internal CMake generator has an extension to configure *.options.in files automatically
with CMake variables.
See :zephyr_file:samples/modules/nanopb/src/simple.options.in and
:zephyr_file:samples/modules/nanopb/CMakeLists.txt for usage example.