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

if IPC_SERVICE_BACKEND_ICMSG_ME_INITIATOR || IPC_SERVICE_BACKEND_ICMSG_ME_FOLLOWER

config IPC_SERVICE_BACKEND_ICMSG_ME_SEND_BUF_SIZE
	int "Size of sending buffer size"
	range 1 65535
	default 255
	help
	  Size of a static buffer used for preparring data to send in sending
	  function. If you are sure that your application never sends data
	  data bigger than some size, you can safely change this option to
	  reduce RAM consumption in your application.

config IPC_SERVICE_BACKEND_ICMSG_ME_NUM_EP
	int "Endpoints number"
	range 1 254
	default 2
	help
	  Number of endpoints supported by the multi endpoint ICMSG library.

config IPC_SERVICE_BACKEND_ICMSG_ME_EP_NAME_LEN
	int "Endpoint name length"
	range 1 252
	default 32
	help
	  Maximal length of a string used to discover endpoints between the
	  initiator and the follower.

config IPC_SERVICE_BACKEND_ICMSG_ME_NOCOPY_RX
	bool "Nocopy feature for receive path"
	select IPC_SERVICE_ICMSG_ME_NOCOPY_RX
	help
	  Enable nocopy feature for receive path of multiendpoint icmsg
	  ipc_service backend. This features enables functions to hold and
	  release rx buffer by the ipc_service API user. It also creates
	  performance and memory overhead so it is recommended to disable
	  this feature if unused by the API user.

endif # IPC_SERVICE_BACKEND_ICMSG_ME_INITIATOR || IPC_SERVICE_BACKEND_ICMSG_ME_FOLLOWER
