# Kconfig - USB HID configuration options

#
# Copyright (c) 2018 Intel Corp.
#
# SPDX-License-Identifier: Apache-2.0
#

config USB_DEVICE_HID
	bool "USB Human Interface Device support"
	help
	  Enables USB Human Interface Device support.

if USB_DEVICE_HID

config USB_HID_DEVICE_NAME_0
	string "USB HID first device name"
	default "HID_0"
	help
	  Device name for the first HID Device.

if USB_COMPOSITE_DEVICE

config USB_HID_DEVICE_1
	bool "Enable second USB HID Device"
	help
	  Enable second USB HID Device for composite configuration.

config USB_HID_DEVICE_NAME_1
	string "USB HID second device name"
	depends on USB_HID_DEVICE_1
	default "HID_1"
	help
	  Device name for the seconf HID Device.

endif # USB_COMPOSITE_DEVICE

config ENABLE_HID_INT_OUT_EP
	bool
	prompt "Enable USB HID Device Interrupt OUT Endpoint"
	help
	  Enable USB HID Device Interrupt OUT Endpoint.

config HID_INTERRUPT_EP_MPS
	int "USB HID Device Interrupt Endpoint size"
	default 16
	help
	  USB HID Device interrupt endpoint size

config USB_HID_MAX_PAYLOAD_SIZE
	int
	default 64
	help
	  Max allowed payload size over USB HID Class

config USB_HID_POLL_INTERVAL_MS
	int "Polling interval"
	default 9
	help
	  Polling interval in ms selected by the USB HID Device.

config USB_HID_REPORTS
	int "HID reports in the instance"
	default 1
	range 1 256
	help
	  Number of HID reports in the instance.
	  Must be equal or higher than highest report ID (if they are not consecutive).

config USB_HID_BOOT_PROTOCOL
	bool
	prompt "Enable USB HID Boot Protocol handling"
	help
	  Sets bInterfaceSubClass to 1 and enables Set_Protocol and Get_Protocol
	  requests handling.
	  See Chapter 4.2 of Device Class Definition for Human Interface Devices 1.11
	  for more information.

if USB_HID_BOOT_PROTOCOL

config USB_HID_PROTOCOL_CODE
	int "HID protocol code"
	default 0
	range 0 2
	help
	  Sets bIntefaceProtocol in HID instance.
	  0 = None
	  1 = Keyboard
	  2 = Mouse
	  See Chapter 4.3 of Device Class Definition for Human Interface Devices 1.11
	  for more information.

endif # USB_HID_BOOT_PROTOCOL

endif # USB_DEVICE_HID
