#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menuconfig SYSTEM_PSMQ
	bool "psmq"
	default n
	depends on !DISABLE_MQUEUE && SYSTEM_EMBEDLOG
	---help---
		psmq is tool set which allows IPC communication in publish/subscribe way
		created on top of posix messege queue. Full documentation is available
		at: https://psmq.kurwinet.pl (despite the domain, it is in english).

		Library is licensed under BSD 2-clause license. See LICENSE file in
		the downloaded code for license details.

if SYSTEM_PSMQ

config PSMQ_MAX_CLIENTS
	int "Max number of clients"
	default 8
	---help---
		This  defines  how  many  clients  single  broker process will
		support.  Broker will return error for clients that want to
		register to it and there are already max clients connected.  psmqd
		will  alocate client array with static storage duration that is
		about 12 bytes (may vary depending on architecture) for each
		client.

config PSMQ_PAYLOAD_MAX
	int "Max size of payload"
	default 8
	---help---
		Defines maximum size of payload that can be sent via psmq.

		Both PSMQ_TOPIC_MAX and PSMQ_PAYLOAD_MAX have direct impact on size
		of internal message structures that  are copied each time message
		is sent.  If you set PSMQ_PAYLOAD_MAX to, let's say 20, and you are
		sending message with payload that takes only 2 byte, then 20 bytes
		will get copied anyway.  Same rule applies to topics.

config PSMQ_TOPIC_MAX
	int "Max length of topic"
	default 15
	---help---
		Defines maximum length any topic can be.  That includes first ´/´
		character,  but  does  not  include terminating null  character.  So
		if  this is set to 3, then topics "/0", "/01" will be valid, but
		"/012" will be too long.

		Library will use PSMQ_TOPIC_MAX + 1 as an array size for topic.
		This means, to prevent unecessary paddings, use values like 7, or 15
		or 31.

config PSMQD_PRIORITY
	int "psmqd broker task priority"
	default 100

config PSMQD_STACKSIZE
	int "psmqd broker stack size"
	default 2048

config PSMQ_TOOLS_PUB
	bool "Enable psmq_pub tool"
	default n
	---help---
		Enables program which allows to publish message over psmq directly
		from command line.

if PSMQ_TOOLS_PUB

config PSMQ_PUB_PRIORITY
	int "psmq_pub broker task priority"
	default 100

config PSMQ_PUB_STACKSIZE
	int "psmq_pub broker stack size"
	default 2048

endif # PSMQ_TOOLS_PUB

config PSMQ_TOOLS_SUB
	bool "Enable psmq_sub tool"
	default n
	---help---
		Enables program which allows to listen to published messages on
		chosen topics. It also has capabilities to log these messages to
		a chosen file.

if PSMQ_TOOLS_SUB

config PSMQ_SUB_PROGNAME
	string "psmq_sub program name"
	default "psmq_sub"
	depends on BUILD_KERNEL

config PSMQ_SUB_PRIORITY
	int "psmq_sub broker task priority"
	default 100

config PSMQ_SUB_STACKSIZE
	int "psmq_sub broker stack size"
	default 2048

endif # PSMQ_TOOLS_SUB
endif # SYSTEM_PSMQ

