# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

config ZEPHYR_ZCBOR_MODULE
	bool

config ZCBOR
	bool "zcbor CBOR library"
	depends on ZEPHYR_ZCBOR_MODULE
	help
	  zcbor CBOR encoder/decoder library

if ZCBOR

config ZCBOR_CANONICAL
	bool "Produce canonical CBOR"
	help
	  Enabling this will prevent zcbor from creating lists and maps with
	  indefinite-length arrays (it will still decode them properly).

config ZCBOR_STOP_ON_ERROR
	bool "Stop on error when processing"
	help
	  This makes all functions abort their execution if called when an error
	  has already happened.

config ZCBOR_VERBOSE
	bool "Make zcbor code print messages"

config ZCBOR_ASSERT
	def_bool ASSERT

config ZCBOR_BIG_ENDIAN
	def_bool BIG_ENDIAN

config ZCBOR_MAX_STR_LEN
	int "Default max length when calling zcbor_tstr_put_term()"
	default 256
	help
	  This can be manually used if no other value is readily available, but
	  using this is discouraged.

endif # ZCBOR
