# Copyright (c) 2021 Basalte bv
# SPDX-License-Identifier: Apache-2.0

config ZEPHYR_NANOPB_MODULE
	bool

menuconfig NANOPB
	bool "Nanopb Support"
	help
	  This option enables the Nanopb library and generator.

if NANOPB

config NANOPB_ENABLE_MALLOC
	bool "Malloc usage"
	help
	  This option enables dynamic allocation support in the decoder.

config NANOPB_MAX_REQUIRED_FIELDS
	int "Max number of required fields"
	default 64
	help
	  Maximum number of proto2 required fields to check for presence.
	  Default and minimum value is 64.

config NANOPB_NO_ERRMSG
	bool "Disable error messages"
	help
	  Disable error message support to save code size. Only error
	  information is the true/false return value.

config NANOPB_BUFFER_ONLY
	bool "Buffers only"
	help
	  Disable support for custom streams. Only supports encoding and
	  decoding with memory buffers. Speeds up execution and slightly
	  decreases code size.

config NANOPB_WITHOUT_64BIT
	bool "Disable 64-bit integer fields"
	help
	  Disable support of 64-bit integer fields, for old compilers or
	  for a slight speedup on 8-bit platforms.

config NANOPB_ENCODE_ARRAYS_UNPACKED
	bool "Encode arrays unpacked"
	help
	  Encode scalar arrays in the unpacked format, which takes up more
	  space.
	  Only to be used when the decoder on the receiving side cannot
	  process packed arrays, such as protobuf.js versions before 2020.

config NANOPB_VALIDATE_UTF8
	bool "Validate UTF-8"
	help
	  Check whether incoming strings are valid UTF-8 sequences.
	  Adds a small performance and code size penalty.

endif # NANOPB
