dfu.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2020 Mesotic SAS
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser General
5  * Public License v2.1. See the file LICENSE in the top level directory for
6  * more details.
7  */
8 
22 #ifndef USB_DFU_H
23 #define USB_DFU_H
24 
25 #include <stdint.h>
26 
27 #include "usb.h"
28 #include "usb/descriptor.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 #define USB_IF_DESCRIPTOR_DFU 0x21
35 #define USB_DFU_VERSION_BCD 0x0110
41 #ifndef USB_DFU_DETACH_TIMEOUT_MS
42 #define USB_DFU_DETACH_TIMEOUT_MS 255
43 #endif
50 #define USB_DFU_CAN_DOWNLOAD 0x01
51 #define USB_DFU_CAN_UPLOAD 0x02
52 #define USB_DFU_MANIFEST_TOLERANT 0x04
53 #define USB_DFU_WILL_DETACH 0x08
60 #define USB_DFU_INTERFACE 0xFE
68 #define USB_DFU_SUBCLASS_DFU 0x01
75 #define USB_DFU_PROTOCOL_RUNTIME_MODE 0x01
76 #define USB_DFU_PROTOCOL_DFU_MODE 0x02
83 #define DFU_DETACH 0x00
84 #define DFU_DOWNLOAD 0x01
85 #define DFU_UPLOAD 0x02
86 #define DFU_GET_STATUS 0x03
87 #define DFU_CLR_STATUS 0x04
88 #define DFU_GET_STATE 0x05
89 #define DFU_ABORT 0x06
95 typedef enum {
108 
112 typedef struct __attribute__((packed)) {
113  uint8_t length;
114  uint8_t type;
115  uint8_t attribute;
116  uint16_t detach_timeout;
117  uint16_t xfer_size;
118  uint16_t bcd_dfu;
120 
124 typedef struct __attribute__((packed)) {
125  uint8_t status;
126  uint32_t timeout : 24;
127  uint8_t state;
128  uint8_t string;
130 
131 #ifdef __cplusplus
132 }
133 #endif
134 
135 #endif /* USB_DFU_H */
Definitions for USB protocol messages.
usb_dfu_state_t
USBUS DFU internal state.
Definition: dfu.h:95
@ USB_DFU_STATE_DFU_UP_IDLE
DFU upload idle.
Definition: dfu.h:105
@ USB_DFU_STATE_DFU_MANIFEST
DFU manifest mode.
Definition: dfu.h:103
@ USB_DFU_STATE_DFU_MANIFEST_WAIT_RST
DFU manifest wait for CPU reset.
Definition: dfu.h:104
@ USB_DFU_STATE_DFU_ERROR
DFU internal error.
Definition: dfu.h:106
@ USB_DFU_STATE_DFU_DL_BUSY
DFU download busy.
Definition: dfu.h:100
@ USB_DFU_STATE_DFU_MANIFEST_SYNC
DFU manifest synchronization.
Definition: dfu.h:102
@ USB_DFU_STATE_DFU_IDLE
DFU runtime mode idle.
Definition: dfu.h:98
@ USB_DFU_STATE_DFU_DL_IDLE
DFU download idle.
Definition: dfu.h:101
@ USB_DFU_STATE_DFU_DL_SYNC
DFU download synchronization.
Definition: dfu.h:99
@ USB_DFU_STATE_APP_IDLE
DFU application idle.
Definition: dfu.h:96
@ USB_DFU_STATE_APP_DETACH
DFU application detach (reboot to DFU mode)
Definition: dfu.h:97
USB DFU get_status control request packet.
Definition: dfu.h:124
uint8_t state
DFU internal state machine.
Definition: dfu.h:127
uint32_t timeout
DFU timeout (ms) response.
Definition: dfu.h:126
uint8_t string
DFU string.
Definition: dfu.h:128
uint8_t status
DFU status response.
Definition: dfu.h:125
USB DFU interface descriptor.
Definition: dfu.h:112
uint8_t length
Descriptor length.
Definition: dfu.h:113
uint16_t bcd_dfu
Descriptor bcd version.
Definition: dfu.h:118
uint16_t xfer_size
Descriptor transaction size.
Definition: dfu.h:117
uint16_t detach_timeout
Descriptor detach timeout (ms)
Definition: dfu.h:116
uint8_t attribute
Descriptor attributes flags.
Definition: dfu.h:115
uint8_t type
Descriptor type.
Definition: dfu.h:114
Definition of global compile time configuration options.