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

menuconfig NET_6LOWPAN
	bool "IEEE 802.15.4 6LoWPAN support"
	default n
	depends on EXPERIMENTAL && NET_IPv6
	---help---
		Enable support for IEEE 802.15.4 Low power Wireless Personal Area
		Networking (6LoWPAN).

if NET_6LOWPAN

config NET_6LOWPAN_FRAG
	bool "6loWPAN Fragmentation"
	default y
	---help---
		CONFIG_NET_6LOWPAN_FRAG specifies if 6lowpan fragmentation should be
		used or not. Fragmentation is on by default.

config NET_6LOWPAN_FRAMELEN
	int "IEEE802.15.4 MAC Frame Length"
	default 127
	range 127 999999
	---help---
		Some wireless devices may use non-standard frame lengths.  This
		setting should never be smaller than 127.

choice
	prompt "6loWPAN Compression"
	default NET_6LOWPAN_COMPRESSION_HC06

config NET_6LOWPAN_COMPRESSION_IPv6
	bool "IPv6 Dispatch"
	---help---
		Packets compression when only IPv6 dispatch is used.  There is no
		compression in this case, all fields are sent inline. We just add
		the IPv6 dispatch byte before the packet.

config NET_6LOWPAN_COMPRESSION_HC1
	bool "6loWPAN HC1"
	---help---
		Compress IP/UDP header using HC1 and HC_UDP

config NET_6LOWPAN_COMPRESSION_HC06
	bool "6loWPAN HC06"
	---help---
		Compress IP/UDP header using HC06 compression

endchoice # 6loWPAN Compression

config NET_6LOWPAN_COMPRESSION_THRESHOLD
	int "Lower compression threshold"
	default 63
	depends on !NET_6LOWPAN_COMPRESSION_IPv6
	---help---
		CONFIG_NET_6LOWPAN_COMPRESSION_THRESHOLD sets a lower threshold for
		when packets should not be compressed.

if NET_6LOWPAN_COMPRESSION_HC06

config NET_6LOWPAN_MAXADDRCONTEXT
	int "Maximum address contexts"
	default 1
	---help---
		If we use IPHC compression, how many address contexts do we support?

config NET_6LOWPAN_MAXADDRCONTEXT_PREFIX_0_0
	hex "Address context 0 Prefix 0"
	default 0xaa
	---help---
		Prefix 0 for address context ze0ro (assumes CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 0)

config NET_6LOWPAN_MAXADDRCONTEXT_PREFIX_0_1
	hex "Address context 0 Prefix 1"
	default 0xaa
	---help---
		Prefix 1 for address context 0 (assumes CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 0)

config NET_6LOWPAN_MAXADDRCONTEXT_PREINIT_1
	bool "Pre-initialize address context 1"
	default n
	---help---
		Preinitialize address context 1 for better header compression
		(Saves up to 13 bytes per 6lowpan packet).   Assumes
		CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 1)

if NET_6LOWPAN_MAXADDRCONTEXT_PREINIT_1

config NET_6LOWPAN_MAXADDRCONTEXT_PREFIX_1_0
	hex "Address context 1 Prefix 0"
	default 0xaa
	---help---
		Prefix 0 for address context 1 (assumes CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 1)

config NET_6LOWPAN_MAXADDRCONTEXT_PREFIX_1_1
	hex "Address context 1 Prefix 1"
	default 0xaa
	---help---
		Prefix 1 for address context 1 (assumes CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 1)

endif # NET_6LOWPAN_MAXADDRCONTEXT_PREINIT_1

config NET_6LOWPAN_MAXADDRCONTEXT_PREINIT_2
	bool "Pre-initialize address context 2"
	default n
	depends on NET_6LOWPAN_MAXADDRCONTEXT_PREINIT_1
	---help---
		Preinitialize any address contexts for better header compression
		(Saves up to 13 bytes per 6lowpan packet).   Assumes
		CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 2)

if NET_6LOWPAN_MAXADDRCONTEXT_PREINIT_2

config NET_6LOWPAN_MAXADDRCONTEXT_PREFIX_2_0
	hex "Address context 2 Prefix 0"
	default 0xaa
	---help---
		Prefix 0 for address context 2 (assumes CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 2)

config NET_6LOWPAN_MAXADDRCONTEXT_PREFIX_2_1
	hex "Address context 2 Prefix 1"
	default 0xaa
	---help---
		Prefix 1 for address context 2 (assumes CONFIG_NET_6LOWPAN_MAXADDRCONTEXT >= 2)

endif # NET_6LOWPAN_MAXADDRCONTEXT_PREINIT_0
endif # NET_6LOWPAN_COMPRESSION_HC06

config NET_6LOWPAN_RIMEADDR_SIZE
	int "Rime address size"
	default 2
	range 2 8
	---help---
		Only the values 2 and 8 are supported

config NET_SIXLOWPAN_MAXAGE
	int "Packet reassembly timeout"
	default 20
	---help---
		Timeout for packet reassembly at the 6lowpan layer (should be < 60s)

config NET_6LOWPAN_MAX_MACTRANSMITS
	int "Max MAC transmissions"
	default 4
	---help---
		CONFIG_NET_6LOWPAN_MAX_MACTRANSMITS specifies how many times the MAC
		layer should resend packets if no link-layer ACK wasreceived. This
		only makes sense with the csma_driver.

config NET_SIXLOWPAN_MAXPAYLOAD
	int "Max packet size"
	default 102
	---help---
		CONFIG_NET_SIXLOWPAN_MAXPAYLOAD specifies the maximum size of packets
		before they get fragmented. The default is 127 bytes (the maximum size
		of a 802.15.4 frame) - 25 bytes (for the 802.15.4 MAClayer header). This
		can be increased for systems with larger packet sizes.

config NET_6LOWPAN_TCP_RECVWNDO
	int "6LoWPAN TCP receive window size"
	default 102
	depends on NET_TCP
	---help---
		The size of the advertised receiver's window.   Should be set low
		(i.e., to the size of the IEEE802.15.4 frame payload) if the application
		is slow to process incoming data, or high (32768 bytes) if the
		application processes data quickly. REVISIT!

config NET_6LOWPAN_SNIFFER
	default n
	---help---
		Enable use use an architecture-specific sniffer to support tracing
		of IP.

endif # NET_6LOWPAN
