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

menuconfig USB_DFU_CLASS
	bool "USB DFU Class Driver"
	select MPU_ALLOW_FLASH_WRITE
	select POLL
	depends on IMG_MANAGER
	select IMG_ERASE_PROGRESSIVELY if SOC_FLASH_NRF
	help
	  USB DFU class driver

if USB_DFU_CLASS

config USB_DEVICE_DFU_PID
	hex "USB DFU Product ID"
	default 0xFFFF
	help
	  USB device product ID in DFU mode. MUST be configured by vendor.

config USB_DFU_DETACH_TIMEOUT
	int
	default 1000

config USB_DFU_DEFAULT_POLLTIMEOUT
	int "Default value for bwPollTimeout"
	default 256
	range 0 1000
	help
	  Default value for bwPollTimeout (in ms)

config USB_DFU_ENABLE_UPLOAD
	bool "Firmware uploading to the host"
	help
	  Enabling this option allows to upload firmware image to the host.
	  Be aware that upload capability can be a security risk because
	  the executable image is always decrypted despite the image
	  encryption is enabled.

config USB_DFU_REBOOT
	bool "Reboot after download"
	select REBOOT
	help
	  When enabled the device will automatically reboot after a download
	  so the bootloader can swap the images.

config USB_DFU_PERMANENT_DOWNLOAD
	bool "Mark slot 1 as permanent after download"
	help
	  When enabled the image written to slot 1 will be marked as permanent.
	  WARNING: This bypasses Mcuboot's test-confirm mechanism!
	  Downloading the wrong image will cause a bricked device.
	  Make sure there is some kind of recovery mechanism.


endif # USB_DFU_CLASS
