Back to Zephyr

Nanopb

doc/services/serialization/nanopb.rst

4.4.01.6 KB
Original Source

.. _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.