14#ifndef ZEPHYR_INCLUDE_USB_CLASS_USBD_DFU_H
15#define ZEPHYR_INCLUDE_USB_CLASS_USBD_DFU_H
20#define USB_DFU_SUBCLASS 0x01
23#define USB_DFU_PROTOCOL_RUNTIME 0x01
26#define USB_DFU_PROTOCOL_DFU 0x02
29#define USB_DFU_REQ_DETACH 0x00
30#define USB_DFU_REQ_DNLOAD 0x01
31#define USB_DFU_REQ_UPLOAD 0x02
32#define USB_DFU_REQ_GETSTATUS 0x03
33#define USB_DFU_REQ_CLRSTATUS 0x04
34#define USB_DFU_REQ_GETSTATE 0x05
35#define USB_DFU_REQ_ABORT 0x06
48#define USB_DESC_DFU_FUNCTIONAL 0x21
51#define USB_DFU_ATTR_WILL_DETACH BIT(3)
52#define USB_DFU_ATTR_MANIFESTATION_TOLERANT BIT(2)
53#define USB_DFU_ATTR_CAN_UPLOAD BIT(1)
54#define USB_DFU_ATTR_CAN_DNLOAD BIT(0)
57#define USB_DFU_VERSION 0x0110
104 uint8_t buf[
static CONFIG_USBD_DFU_TRANSFER_SIZE]);
107 const uint8_t buf[
static CONFIG_USBD_DFU_TRANSFER_SIZE]);
152#define USBD_DFU_DEFINE_IMG(id, iname, ipriv, iread, iwrite, inext) \
153 static __noinit struct usb_if_descriptor usbd_dfu_iface_##id; \
155 USBD_DESC_STRING_DEFINE(usbd_dfu_str_##id, iname, USBD_DUT_STRING_INTERFACE); \
157 static const STRUCT_SECTION_ITERABLE(usbd_dfu_image, usbd_dfu_image_##id) = { \
159 .if_desc = &usbd_dfu_iface_##id, \
161 .sd_nd = &usbd_dfu_str_##id, \
163 .write_cb = iwrite, \
state
Definition parser_state.h:29
#define bool
Definition stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
uint8_t bDescriptorType
Definition usbd_dfu.h:40
uint8_t bmAttributes
Definition usbd_dfu.h:41
uint16_t wTransferSize
Definition usbd_dfu.h:43
uint8_t bLength
Definition usbd_dfu.h:39
uint16_t wDetachTimeOut
Definition usbd_dfu.h:42
uint16_t bcdDFUVersion
Definition usbd_dfu.h:44
USB Standard Interface Descriptor defined in spec.
Definition usb_ch9.h:193
Descriptor node.
Definition usbd.h:163
int(* read_cb)(void *const priv, const uint32_t block, const uint16_t size, uint8_t buf[static CONFIG_USBD_DFU_TRANSFER_SIZE])
Definition usbd_dfu.h:102
bool(* next_cb)(void *const priv, const enum usb_dfu_state state, const enum usb_dfu_state next)
Definition usbd_dfu.h:100
void *const priv
Definition usbd_dfu.h:98
const char * name
Definition usbd_dfu.h:96
struct usb_if_descriptor *const if_desc
Definition usbd_dfu.h:97
int(* write_cb)(void *const priv, const uint32_t block, const uint16_t size, const uint8_t buf[static CONFIG_USBD_DFU_TRANSFER_SIZE])
Definition usbd_dfu.h:105
struct usbd_desc_node *const sd_nd
Definition usbd_dfu.h:99
usb_dfu_status
Definition usbd_dfu.h:60
@ ERR_FILE
Definition usbd_dfu.h:63
@ ERR_NOTDONE
Definition usbd_dfu.h:70
@ ERR_FIRMWARE
Definition usbd_dfu.h:71
@ ERR_UNKNOWN
Definition usbd_dfu.h:75
@ ERR_STALLEDPKT
Definition usbd_dfu.h:76
@ ERR_POR
Definition usbd_dfu.h:74
@ ERR_WRITE
Definition usbd_dfu.h:64
@ ERR_VERIFY
Definition usbd_dfu.h:68
@ ERR_ERASE
Definition usbd_dfu.h:65
@ ERR_TARGET
Definition usbd_dfu.h:62
@ ERR_ADDRESS
Definition usbd_dfu.h:69
@ ERR_PROG
Definition usbd_dfu.h:67
@ ERR_VENDOR
Definition usbd_dfu.h:72
@ ERR_OK
Definition usbd_dfu.h:61
@ ERR_CHECK_ERASED
Definition usbd_dfu.h:66
@ ERR_USBR
Definition usbd_dfu.h:73
usb_dfu_state
Definition usbd_dfu.h:80
@ APP_DETACH
Definition usbd_dfu.h:82
@ DFU_STATE_MAX
Definition usbd_dfu.h:92
@ DFU_MANIFEST_WAIT_RST
Definition usbd_dfu.h:89
@ DFU_IDLE
Definition usbd_dfu.h:83
@ DFU_DNBUSY
Definition usbd_dfu.h:85
@ DFU_MANIFEST
Definition usbd_dfu.h:88
@ APP_IDLE
Definition usbd_dfu.h:81
@ DFU_DNLOAD_SYNC
Definition usbd_dfu.h:84
@ DFU_MANIFEST_SYNC
Definition usbd_dfu.h:87
@ DFU_UPLOAD_IDLE
Definition usbd_dfu.h:90
@ DFU_DNLOAD_IDLE
Definition usbd_dfu.h:86
@ DFU_ERROR
Definition usbd_dfu.h:91