# Kconfig - Socket MQTT Library for Zephyr
#
# Copyright (c) 2018 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

config MQTT_LIB
	bool "Socket MQTT Library Support"
	select NET_SOCKETS
	select NET_SOCKETS_POSIX_NAMES
	help
	  Enable the Zephyr MQTT Library

if MQTT_LIB

module=MQTT
module-dep=NET_LOG
module-str=Log level for MQTT
module-help=Enables mqtt debug messages.
source "subsys/net/Kconfig.template.log_config.net"

config MQTT_KEEPALIVE
	int "Maximum number of clients Keep alive time for MQTT (in seconds)"
	default 60
	help
	  Keep alive time for MQTT (in seconds). Sending of Ping Requests to
	  keep the connection alive are governed by this value.

config MQTT_LIB_TLS
	bool "TLS support for socket MQTT Library"
	help
	  Enable TLS support for socket MQTT Library

config MQTT_LIB_SOCKS
	bool "SOCKS proxy support for socket MQTT Library"
	select SOCKS
	help
	  Enable SOCKS proxy support for socket MQTT Library

endif # MQTT_LIB
