# Copyright (c) 2017 Linaro Limited
# SPDX-License-Identifier: Apache-2.0

menuconfig LWM2M
	bool "OMA LWM2M protocol stack"
	select COAP
	select HTTP_PARSER_URL
	select NET_SOCKETS
	select NET_SOCKETS_POSIX_NAMES
	help
	  This option adds logic for managing OMA LWM2M data

if LWM2M

module = LWM2M
module-dep = LOG
module-str = Log level for LWM2M library
source "subsys/net/Kconfig.template.log_config.net"

config LWM2M_DTLS_SUPPORT
	bool "Enable DTLS support in the LwM2M client"
	select TLS_CREDENTIALS
	select NET_SOCKETS_SOCKOPT_TLS
	select NET_SOCKETS_ENABLE_DTLS

config LWM2M_DNS_SUPPORT
	bool "Enable DNS support in the LWM2M client"
	default y if DNS_RESOLVER

config LWM2M_ENGINE_STACK_SIZE
	int "LWM2M engine stack size"
	default 2560 if NET_LOG
	default 2048
	help
	  Set the stack size for the LWM2M library engine (used for handling
	  OBSERVE and NOTIFY events)

config LWM2M_ENGINE_MAX_MESSAGES
	int "LWM2M engine max. message object"
	default 10
	help
	  Set the maximum message objects for the LWM2M library client

config LWM2M_COAP_BLOCK_SIZE
	int "LWM2M CoAP block-wise transfer size"
	default 256
	range 64 1024
	help
	  CoAP block size used by LWM2M when performing block-wise
	  transfers. Possible values: 16, 32, 64, 128, 256, 512 and 1024.

config LWM2M_ENGINE_MESSAGE_HEADER_SIZE
	int "Room for CoAP header data"
	default 48
	range 24 128
	help
	  Extra room allocated to handle CoAP header data

config LWM2M_ENGINE_MAX_PENDING
	int "LWM2M engine max. pending objects"
	default 5
	help
	  Set the maximum pending objects for the LWM2M library client

config LWM2M_ENGINE_MAX_REPLIES
	int "LWM2M engine max. reply objects"
	default 5
	help
	  Set the maximum reply objects for the LWM2M library client

config LWM2M_ENGINE_MAX_OBSERVER
	int "Maximum # of observable LWM2M resources"
	default 10
	range 5 200
	help
	  This value sets the maximum number of resources which can be
	  added to the observe notification list.

config LWM2M_ENGINE_DEFAULT_LIFETIME
	int "LWM2M engine default server connection lifetime"
	default 30
	range 15 65535
	help
	  Set the default lifetime (in seconds) for the LWM2M library engine

config LWM2M_QUEUE_MODE_ENABLED
	bool "Enable Queue Mode UDP binding"
	help
	  Set the transport binding to UDP with Queue Mode (UQ).

config LWM2M_QUEUE_MODE_UPTIME
	int "Specify time the LWM2M client should stay online in queue mode."
	default 93
	help
	  This config specifies time (in seconds) the device should stay online
	  after sending a message to the server. Note, that LWM2M specification
	  recommends this to be CoAP MAX_TRANSMIT_WAIT parameter (which
	  defaults to 93 seconds, see RFC 7252), it does not forbid other
	  values though.

config LWM2M_RD_CLIENT_SUPPORT
	bool "support for LWM2M client bootstrap/registration state machine"
	default y
	help
	  Client will use registration state machine to locate and connect to
	  LWM2M servers (including bootstrap server support)

config LWM2M_RD_CLIENT_SUPPORT_BOOTSTRAP
	bool "Enable bootstrap support"
	help
	  Enabling this setting allows the RD client to support bootstrap mode.

config LWM2M_PEER_PORT
	int "LWM2M server port"
	depends on LWM2M_RD_CLIENT_SUPPORT
	default 5683
	help
	  This is the default server port to connect to for LWM2M communication

config LWM2M_SECURITY_INSTANCE_COUNT
	int "Maximum # of LWM2M Security object instances"
	default 2 if LWM2M_RD_CLIENT_SUPPORT_BOOTSTRAP
	default 1
	range 1 10
	help
	  This setting establishes the total count of LWM2M Security instances
	  available to the client.

config LWM2M_SECURITY_KEY_SIZE
	int "Buffer size of the security key resources"
	default 16
	range 16 256
	help
	  This setting establishes the size of the key (pre-shared / public)
	  resources in the security object instances.

config LWM2M_SERVER_DEFAULT_PMIN
	int "Default server record PMIN"
	default 10
	help
	  Default minimum amount of time in seconds the client must wait
	  between notifications.  If a resource has to be notified during this
	  minimum time period, the notification must be sent after the time
	  period expires.

config LWM2M_SERVER_DEFAULT_PMAX
	int "Default server record PMAX"
	default 60
	help
	  Default maximum amount of time in seconds the client may wait
	  between notifications.  When this time period expires a notification
	  must be sent.

config LWM2M_SERVER_INSTANCE_COUNT
	int "Maximum # of LWM2M Server object instances"
	default 2 if LWM2M_RD_CLIENT_SUPPORT_BOOTSTRAP
	default 1
	range 1 10
	help
	  This setting establishes the total count of LWM2M Server instances
	  available to the client (including: bootstrap and regular servers).

config LWM2M_CONN_MON_OBJ_SUPPORT
	bool "Connectivity Monitoring object support"
	help
	  Include support for LWM2M Connectivity Monitoring Object (ID 4)

config LWM2M_CONN_MON_BEARER_MAX
	int "Maximum # of available network bearer resource instances"
	depends on LWM2M_CONN_MON_OBJ_SUPPORT
	default 1
	help
	  This value sets the maximum number of available network bearer
	  resource instances.  These are displayed via the
	  "Connection Monitoring" object /4/0/1.

config LWM2M_CONN_MON_APN_MAX
	int "Maximum # of APN resource instances"
	depends on LWM2M_CONN_MON_OBJ_SUPPORT
	default 1
	help
	  This value sets the maximum number of APN resource instances.
	  These are displayed via the "Connection Monitoring" object /4/0/7.

config LWM2M_FIRMWARE_UPDATE_OBJ_SUPPORT
	bool "Firmware Update object support"
	default y
	help
	  Include support for LWM2M Firmware Update Object (ID 5)

config LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT
	bool "Firmware Update object pull support"
	default y
	depends on LWM2M_FIRMWARE_UPDATE_OBJ_SUPPORT
	depends on (HTTP_PARSER || HTTP_PARSER_URL)
	help
	  Include support for pulling a file from a remote server via
	  block transfer and "FIRMWARE PACKAGE URI" resource.  This option
	  adds another UDP context and packet handling.

config LWM2M_NUM_BLOCK1_CONTEXT
	int "Maximum # of LWM2M block1 contexts"
	default 3
	help
	  This value sets up the maximum number of block1 contexts for
	  CoAP block-wise transfer we can handle at the same time.

config LWM2M_FIRMWARE_UPDATE_PULL_COAP_PROXY_SUPPORT
	bool "Firmware Update object pull via CoAP-CoAP/HTTP proxy support"
	depends on LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT
	help
	  Include support for pulling firmware file via a CoAP-CoAP/HTTP proxy.

config LWM2M_FIRMWARE_UPDATE_PULL_COAP_PROXY_ADDR
	string "CoAP proxy network address"
	depends on LWM2M_FIRMWARE_UPDATE_PULL_COAP_PROXY_SUPPORT
	help
	  Network address of the CoAP proxy server.

config LWM2M_RW_JSON_SUPPORT
	bool "support for JSON writer"
	default y
	help
	  Include support for writing JSON data

config LWM2M_DEVICE_PWRSRC_MAX
	int "Maximum # of device power source records"
	default 5
	range 1 20
	help
	  This value sets the maximum number of power source data that a device
	  can store.  These are displayed via the "Device" object /3/0/6,
	  /3/0/7 and /3/0/8 resources.

config LWM2M_DEVICE_ERROR_CODE_MAX
	int "Maximum # of device obj error codes to store"
	default 10
	range 1 20
	help
	  This value sets the maximum number of error codes that the device
	  object will store before ignoring new values.

config LWM2M_NUM_ATTR
	int "Maximum # of LWM2M attributes"
	default 20
	help
	  This value sets up the maximum number of LwM2M attributes that
	  we can handle at the same time.

config LWM2M_LOCATION_OBJ_SUPPORT
	bool "Location object support"
	help
	  Include support for LWM2M Location Object (ID 6)

menu "IPSO Alliance Smart Object Support"

source "subsys/net/lib/lwm2m/Kconfig.ipso"

endmenu

endif # LWM2M
