1 #ifndef DEVICES_USB_DFU_H
    2 #define DEVICES_USB_DFU_H
    3 /*
    4 **	$VER: usb_dfu.h 2.0 (15.12.07)
    5 **
    6 **	usb definitions include file
    7 **
    8 **	(C) Copyright 2002-2007 Chris Hodges
    9 **	    All Rights Reserved
   10 */
   11 
   12 #include <exec/types.h>
   13 
   14 #if defined(__GNUC__)
   15 # pragma pack(1)
   16 #endif
   17 
   18 /* Usb DFU Requests */
   19 #define UDFUR_DETACH              0x00
   20 #define UDFUR_DNLOAD              0x01
   21 #define UDFUR_UPLOAD              0x02
   22 #define UDFUR_GETSTATUS           0x03
   23 #define UDFUR_CLRSTATUS           0x04
   24 #define UDFUR_GETSTATE            0x05
   25 #define UDFUR_ABORT               0x06
   26 
   27 /* DFU class specific descriptors */
   28 #define UDT_DFU               0x21
   29 
   30 /* Firmware Upgrade subclasses */
   31 #define FWUPGRADE_STD_SUBCLASS 0x01
   32 
   33 /* Firmware Upgrade protocols */
   34 #define FWUPGRADE_PROTO_STD   0x01
   35 #define FWUPGRADE_PROTO_DFU   0x02
   36 
   37 /* DFU specific descriptor */
   38 
   39 struct UsbDFUDesc
   40 {
   41     UBYTE bLength;             /* Size of this descriptor */
   42     UBYTE bDescriptorType;     /* Descriptor Type (0x21) */
   43     UBYTE bmAttributes;        /* DFU attributes */
   44     UBYTE wDetachTimeOut0;     /* Lowbyte of Detach TimeOut */
   45     UBYTE wDetachTimeOut1;     /* Highbyte of above */
   46     UBYTE wTransferSize0;      /* Maximum bytes per control-write (Lowbyte) */
   47     UBYTE wTransferSize1;      /* Highbyte of above */
   48     UBYTE bcdDFUVersion;       /* DFU Spec Release */
   49 };
   50 
   51 /* bmAttributes from above */
   52 #define UDDAF_DOWNLOADABLE    0x0001
   53 #define UDDAF_UPLOADABLE      0x0002
   54 #define UDDAF_NO_MANIFEST_RST 0x0004
   55 #define UDDAF_WILL_DETACH     0x0008
   56 
   57 /* Returned by UDFUR_GETSTATUS */
   58 struct UsbDFUStatus
   59 {
   60     UBYTE bStatus;
   61     UBYTE bwPollTimeout0;
   62     UBYTE bwPollTimeout1;
   63     UBYTE bwPollTimeout2;
   64     UBYTE bState;
   65     UBYTE iString;
   66 };
   67 
   68 
   69 #if defined(__GNUC__)
   70 # pragma pack()
   71 #endif
   72 
   73 #endif /* DEVICES_USB_DFU_H */