# Copyright (c) 2020 Linumiz
# SPDX -License-Identifier: Apache-2.0

menuconfig HAWKBIT
	bool "Hawkbit Firmware Over-the-Air support"
	select NVS
	select FLASH
	select REBOOT
	select HWINFO
	select NET_TCP
	select NET_SOCKETS
	select IMG_MANAGER
	select NETWORKING
	select HTTP_CLIENT
	select DNS_RESOLVER
	select JSON_LIBRARY
	select BOOTLOADER_MCUBOOT
	select MPU_ALLOW_FLASH_WRITE
	select IMG_ERASE_PROGRESSIVELY
	select NET_SOCKETS_POSIX_NAMES
	help
	  Hawkbit is a domain independent back-end framework for polling out
	  software updates to constrained edge devices as well as more powerful
	  controllers and gateways connected to IP based networking infrastructure.

config HAWKBIT_POLL_INTERVAL
	int "Time to poll interval (in minutes)"
	default 5
	range 1 43200
	depends on HAWKBIT
	help
	  Set the interval that the hawkbit update server will be polled.
	  This time interval is zero and 43200 minutes(30 days).

config HAWKBIT_SHELL
	bool "Enable Hawkbit shell utilities"
	depends on HAWKBIT
	depends on SHELL
	help
	  Activate shell module that provides Hawkbit commands.

config HAWKBIT_SERVER
	string "User address for the hawkbit server"
	depends on HAWKBIT
	default ""
	help
	  Configure the hawkbit server address.

config HAWKBIT_PORT
	string "Port address for the hawkbit server"
	default "8080"
	depends on HAWKBIT
	help
	  Configure the hawkbit port number.

module = HAWKBIT
module-str = Log Level for hawkbit
module-help = Enables logging for Hawkbit code.
source "subsys/logging/Kconfig.template.log_config"
