/** @defgroup usb_dfu_defines USB DFU Type Definitions @brief Defined Constants and Types for the USB DFU Type Definitions @ingroup USB_defines @version 1.0.0 @author @htmlonly © @endhtmlonly 2010 Gareth McMullin @date 10 March 2013 LGPL License Terms @ref lgpl_license */ /* * This file is part of the libopencm3 project. * * Copyright (C) 2010 Gareth McMullin * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . */ /**@{*/ #ifndef __DFU_H #define __DFU_H enum dfu_req { DFU_DETACH, DFU_DNLOAD, DFU_UPLOAD, DFU_GETSTATUS, DFU_CLRSTATUS, DFU_GETSTATE, DFU_ABORT, }; enum dfu_status { DFU_STATUS_OK, DFU_STATUS_ERR_TARGET, DFU_STATUS_ERR_FILE, DFU_STATUS_ERR_WRITE, DFU_STATUS_ERR_ERASE, DFU_STATUS_ERR_CHECK_ERASED, DFU_STATUS_ERR_PROG, DFU_STATUS_ERR_VERIFY, DFU_STATUS_ERR_ADDRESS, DFU_STATUS_ERR_NOTDONE, DFU_STATUS_ERR_FIRMWARE, DFU_STATUS_ERR_VENDOR, DFU_STATUS_ERR_USBR, DFU_STATUS_ERR_POR, DFU_STATUS_ERR_UNKNOWN, DFU_STATUS_ERR_STALLEDPKT, }; enum dfu_state { STATE_APP_IDLE, STATE_APP_DETACH, STATE_DFU_IDLE, STATE_DFU_DNLOAD_SYNC, STATE_DFU_DNBUSY, STATE_DFU_DNLOAD_IDLE, STATE_DFU_MANIFEST_SYNC, STATE_DFU_MANIFEST, STATE_DFU_MANIFEST_WAIT_RESET, STATE_DFU_UPLOAD_IDLE, STATE_DFU_ERROR, }; #define DFU_FUNCTIONAL 0x21 struct usb_dfu_descriptor { uint8_t bLength; uint8_t bDescriptorType; uint8_t bmAttributes; #define USB_DFU_CAN_DOWNLOAD 0x01 #define USB_DFU_CAN_UPLOAD 0x02 #define USB_DFU_MANIFEST_TOLERANT 0x04 #define USB_DFU_WILL_DETACH 0x08 uint16_t wDetachTimeout; uint16_t wTransferSize; uint16_t bcdDFUVersion; } __attribute__((packed)); #endif /**@}*/