/* Define this flag to add 720p10 support to USB 2.0 */
#define NEW_USB2_MODE
/* Standard High Speed Configuration Descriptor - USB 2.0 */
const uint8_t esUSBHSConfigDscr[] =
{
/* Configuration descriptor */
0x09, /* Descriptor size */
CY_U3P_USB_CONFIG_DESCR, /* Configuration descriptor type */
#ifdef NEW_USB2_MODE
0xFA,0x00, /* Length of this descriptor and all sub descriptors */
#else
0xDC,0x00, /* Length of this descriptor and all sub descriptors */
#endif
0x02, /* Number of interfaces */
0x01, /* Configuration number */
0x00, /* COnfiguration string index */
0x80, /* Config characteristics - bus powered */
0xFA, /* Max power consumption of device (in 2mA unit) : 500mA */
/* Interface association descriptor */
0x08, /* Descriptor size */
ES_INTF_ASSN_DSCR_TYPE, /* Interface association descr type */
0x00, /* I/f number of first video control i/f */
0x02, /* Number of video streaming i/f */
0x0E, /* CC_VIDEO : Video i/f class code */
0x03, /* SC_VIDEO_INTERFACE_COLLECTION : subclass code */
0x00, /* Protocol : not used */
0x00, /* String desc index for interface */
/* Standard video control interface descriptor */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
0x00, /* Interface number */
0x00, /* Alternate setting number */
0x01, /* Number of end points */
0x0E, /* CC_VIDEO : Interface class */
0x01, /* CC_VIDEOCONTROL : Interface sub class */
0x00, /* Interface protocol code */
0x00, /* Interface descriptor string index */
/* Class specific VC interface header descriptor */
0x0D, /* Descriptor size */
0x24, /* Class Specific I/f header descriptor type */
0x01, /* Descriptor sub type : VC_HEADER */
0x00,0x01, /* Revision of class spec : 1.0 */
0x50,0x00, /* Total size of class specific descriptors (till output terminal) */
0x00,0x6C,0xDC,0x02, /* Clock frequency : 48MHz */
0x01, /* Number of streaming interfaces */
0x01, /* Video streaming I/f 1 belongs to VC i/f */
/* Input (camera) terminal descriptor */
0x12, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x02, /* Input Terminal Descriptor type */
0x01, /* ID of this terminal */
0x01,0x02, /* Camera terminal type */
0x00, /* No association terminal */
0x00, /* String desc index : not used */
0x00,0x00, /* No optical zoom supported */
0x00,0x00, /* No optical zoom supported */
0x00,0x00, /* No optical zoom supported */
0x03, /* Size of controls field for this terminal : 3 bytes */
0x2A,0x00,0x02, /* No controls supported */
/* Processing unit descriptor */
0x0C, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x05, /* Processing unit descriptor type */
0x02, /* ID of this terminal */
0x01, /* Source ID : 1 : conencted to input terminal */
0x00,0x00, /* Digital multiplier */
0x03, /* Size of controls field for this terminal : 3 bytes */
0x5F,0x11,0x00, /* No controls supported */
0x00, /* String desc index : not used */
/* Extension unit descriptor */
0x1C, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x06, /* Extension unit descriptor type */
0x03, /* ID of this terminal */
#if 1
0x4A,0x00,0xA6,0x29,
0x02,0xEB,0xAA,0x4D,
0x82,0xDB,0x35,0x56,
0x35,0x62,0xDE,0x9D,
#endif
#if 0
0xFF,0xFF,0xFF,0xFF, /* 16 byte GUID */
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
#endif
0x01, /* Number of controls in this terminal */
0x01, /* Number of input pins in this terminal */
0x02, /* Source ID : 2 : Connected to Proc Unit */
0x03, /* Size of controls field for this terminal : 3 bytes */
0x00,0x00,0x00, /* No controls supported */
0x00, /* String desc index : not used */
/* Output terminal descriptor */
0x09, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x03, /* Output terminal descriptor type */
0x04, /* ID of this terminal */
0x01,0x01, /* USB Streaming terminal type */
0x00, /* No association terminal */
0x03, /* Source ID : 3 : connected to extn unit */
0x00, /* String desc index : not used */
/* Video control status interrupt endpoint descriptor */
0x07, /* Descriptor size */
CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
ES_EP_CONTROL_STATUS, /* Endpoint address and description */
CY_U3P_USB_EP_INTR, /* Interrupt end point type */
0x40,0x00, /* Max packet size = 64 bytes */
0x08, /* Servicing interval : 8ms */
/* Class specific interrupt endpoint descriptor */
0x05, /* Descriptor size */
0x25, /* Class specific endpoint descriptor type */
CY_U3P_USB_EP_INTR, /* End point sub type */
0x40,0x00, /* Max packet size = 64 bytes */
/* Standard video streaming interface descriptor (alternate setting 0) */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
0x01, /* Interface number */
0x00, /* Alternate setting number */
0x00, /* Number of end points : zero bandwidth */
0x0E, /* Interface class : CC_VIDEO */
0x02, /* Interface sub class : CC_VIDEOSTREAMING */
0x00, /* Interface protocol code : undefined */
0x00, /* Interface descriptor string index */
/* Class-specific video streaming input header descriptor */
0x0E, /* Descriptor size */
0x24, /* Class-specific VS i/f type */
0x01, /* Descriptotor subtype : input header */
0x01, /* 1 format desciptor follows */
#ifdef NEW_USB2_MODE
0x6B,0x00, /* Total size of class specific VS descr */
#else
0x4D,0x00, /* Total size of class specific VS descr */
#endif
ES_EP_UVC_VIDEO, /* EP address for ISO video data */
0x01, /* No dynamic format change supported */
0x04, /* Output terminal ID : 4 */
0x02, /* Still image capture method 1 supported */
0x01, /* Hardware trigger supported for still image */
0x01, /* Hardware to initiate still image capture */
0x01, /* Size of controls field : 1 byte */
0x00, /* D2 : Compression quality supported */
/* Class specific VS format descriptor */
0x1B, /* Descriptor size */
0x24, /* Class-specific VS i/f type */
0x04, /* Descriptotor subtype : VS_FORMAT_MJPEG */
0x01, /* Format desciptor index */
#ifdef NEW_USB2_MODE
0x02, /* Number of frame descriptors */
#else
0x01, /* 1 Frame desciptor follows */
#endif
0x59, 0x55, 0x59, 0x32, /* guid */
0x00, 0x00,
0x10, 0x00,
0x80, 0x00,
0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71,
0x10, /* bBitsPerPixel*/
0x01, /* Default frame index is 1 */
0x00, /* bAspectRatioX */
0x00, /* bAspectRatioY */
0x00, /* bmInterlaceFlags */
0x00, /* bCopyProtect */
/* Class specific Uncompressed VS frame descriptor */
/* VGA 30 FPS */
0x1E, /* Descriptor size */
0x24, /* Descriptor type*/
0x05, /* Subtype: uncompressed frame I/F */
0x01, /* Frame Descriptor Index */
0x00, /* Still image capture method 1 supported, fixed frame rate */
0x80,0x02, /* Width in pixel */
0xE0,0x01, /* Height in pixel */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x60,0x09,0x00, /* Maximum video or still frame size in bytes(Deprecated)*/
0x15,0x16,0x05,0x00, /* Default frame interval */
0x01, /* Frame interval type : No of discrete intervals */
0x15,0x16,0x05,0x00, /* Frame interval 3 */
#ifdef NEW_USB2_MODE // KK
// 720p10 USB Device descriptor for USB 2.0
0x1E, /* Descriptor size */
0x24, /* Descriptor type*/
0x05, /* Subtype: uncompressed frame I/F */
0x02, /* Frame Descriptor Index */
0x00, /* Still image capture method 1 supported, fixed frame rate */
0x00,0x05, /* Width in pixel */
0xD0,0x02, /* Height in pixel */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x20,0x1C,0x00, /* Maximum video or still frame size in bytes(Deprecated)*/
0x40,0x42,0x0F,0x00, /* Default frame interval */
0x01, /* Frame interval type : No of discrete intervals */
0x40,0x42,0x0F,0x00, /* Frame interval 3 */
#endif
/* Color matching descriptor */
0x06,
0x24,
0x0D,
0x00,
0x00,
0x00,
/* Standard video streaming interface descriptor (Alternate Setting 1) */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
0x01, /* Interface number */
0x01, /* Alternate setting number */
0x01, /* Number of end points : 1 ISO EP */
0x0E, /* Interface class : CC_VIDEO */
0x02, /* Interface sub class : CC_VIDEOSTREAMING */
0x00, /* Interface protocol code : Undefined */
0x00, /* Interface descriptor string index */
/* Endpoint descriptor for ISO streaming video data */
0x07, /* Descriptor size */
CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
ES_EP_UVC_VIDEO, /* Endpoint address and description */
0x05, /* ISO End point : Async */
ES_EP_ISO_VIDEO_PKT_SIZE_L, /* 1 transaction per microframe */
ES_EP_ISO_VIDEO_PKT_SIZE_H, /* ES_EP_ISO_VIDEO_PKT_SIZE max bytes */
0x01, /* Servicing interval for data transfers */
};
#define NEW_USB2_MODE
/* Standard High Speed Configuration Descriptor - USB 2.0 */
const uint8_t esUSBHSConfigDscr[] =
{
/* Configuration descriptor */
0x09, /* Descriptor size */
CY_U3P_USB_CONFIG_DESCR, /* Configuration descriptor type */
#ifdef NEW_USB2_MODE
0xFA,0x00, /* Length of this descriptor and all sub descriptors */
#else
0xDC,0x00, /* Length of this descriptor and all sub descriptors */
#endif
0x02, /* Number of interfaces */
0x01, /* Configuration number */
0x00, /* COnfiguration string index */
0x80, /* Config characteristics - bus powered */
0xFA, /* Max power consumption of device (in 2mA unit) : 500mA */
/* Interface association descriptor */
0x08, /* Descriptor size */
ES_INTF_ASSN_DSCR_TYPE, /* Interface association descr type */
0x00, /* I/f number of first video control i/f */
0x02, /* Number of video streaming i/f */
0x0E, /* CC_VIDEO : Video i/f class code */
0x03, /* SC_VIDEO_INTERFACE_COLLECTION : subclass code */
0x00, /* Protocol : not used */
0x00, /* String desc index for interface */
/* Standard video control interface descriptor */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
0x00, /* Interface number */
0x00, /* Alternate setting number */
0x01, /* Number of end points */
0x0E, /* CC_VIDEO : Interface class */
0x01, /* CC_VIDEOCONTROL : Interface sub class */
0x00, /* Interface protocol code */
0x00, /* Interface descriptor string index */
/* Class specific VC interface header descriptor */
0x0D, /* Descriptor size */
0x24, /* Class Specific I/f header descriptor type */
0x01, /* Descriptor sub type : VC_HEADER */
0x00,0x01, /* Revision of class spec : 1.0 */
0x50,0x00, /* Total size of class specific descriptors (till output terminal) */
0x00,0x6C,0xDC,0x02, /* Clock frequency : 48MHz */
0x01, /* Number of streaming interfaces */
0x01, /* Video streaming I/f 1 belongs to VC i/f */
/* Input (camera) terminal descriptor */
0x12, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x02, /* Input Terminal Descriptor type */
0x01, /* ID of this terminal */
0x01,0x02, /* Camera terminal type */
0x00, /* No association terminal */
0x00, /* String desc index : not used */
0x00,0x00, /* No optical zoom supported */
0x00,0x00, /* No optical zoom supported */
0x00,0x00, /* No optical zoom supported */
0x03, /* Size of controls field for this terminal : 3 bytes */
0x2A,0x00,0x02, /* No controls supported */
/* Processing unit descriptor */
0x0C, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x05, /* Processing unit descriptor type */
0x02, /* ID of this terminal */
0x01, /* Source ID : 1 : conencted to input terminal */
0x00,0x00, /* Digital multiplier */
0x03, /* Size of controls field for this terminal : 3 bytes */
0x5F,0x11,0x00, /* No controls supported */
0x00, /* String desc index : not used */
/* Extension unit descriptor */
0x1C, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x06, /* Extension unit descriptor type */
0x03, /* ID of this terminal */
#if 1
0x4A,0x00,0xA6,0x29,
0x02,0xEB,0xAA,0x4D,
0x82,0xDB,0x35,0x56,
0x35,0x62,0xDE,0x9D,
#endif
#if 0
0xFF,0xFF,0xFF,0xFF, /* 16 byte GUID */
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
#endif
0x01, /* Number of controls in this terminal */
0x01, /* Number of input pins in this terminal */
0x02, /* Source ID : 2 : Connected to Proc Unit */
0x03, /* Size of controls field for this terminal : 3 bytes */
0x00,0x00,0x00, /* No controls supported */
0x00, /* String desc index : not used */
/* Output terminal descriptor */
0x09, /* Descriptor size */
0x24, /* Class specific interface desc type */
0x03, /* Output terminal descriptor type */
0x04, /* ID of this terminal */
0x01,0x01, /* USB Streaming terminal type */
0x00, /* No association terminal */
0x03, /* Source ID : 3 : connected to extn unit */
0x00, /* String desc index : not used */
/* Video control status interrupt endpoint descriptor */
0x07, /* Descriptor size */
CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
ES_EP_CONTROL_STATUS, /* Endpoint address and description */
CY_U3P_USB_EP_INTR, /* Interrupt end point type */
0x40,0x00, /* Max packet size = 64 bytes */
0x08, /* Servicing interval : 8ms */
/* Class specific interrupt endpoint descriptor */
0x05, /* Descriptor size */
0x25, /* Class specific endpoint descriptor type */
CY_U3P_USB_EP_INTR, /* End point sub type */
0x40,0x00, /* Max packet size = 64 bytes */
/* Standard video streaming interface descriptor (alternate setting 0) */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
0x01, /* Interface number */
0x00, /* Alternate setting number */
0x00, /* Number of end points : zero bandwidth */
0x0E, /* Interface class : CC_VIDEO */
0x02, /* Interface sub class : CC_VIDEOSTREAMING */
0x00, /* Interface protocol code : undefined */
0x00, /* Interface descriptor string index */
/* Class-specific video streaming input header descriptor */
0x0E, /* Descriptor size */
0x24, /* Class-specific VS i/f type */
0x01, /* Descriptotor subtype : input header */
0x01, /* 1 format desciptor follows */
#ifdef NEW_USB2_MODE
0x6B,0x00, /* Total size of class specific VS descr */
#else
0x4D,0x00, /* Total size of class specific VS descr */
#endif
ES_EP_UVC_VIDEO, /* EP address for ISO video data */
0x01, /* No dynamic format change supported */
0x04, /* Output terminal ID : 4 */
0x02, /* Still image capture method 1 supported */
0x01, /* Hardware trigger supported for still image */
0x01, /* Hardware to initiate still image capture */
0x01, /* Size of controls field : 1 byte */
0x00, /* D2 : Compression quality supported */
/* Class specific VS format descriptor */
0x1B, /* Descriptor size */
0x24, /* Class-specific VS i/f type */
0x04, /* Descriptotor subtype : VS_FORMAT_MJPEG */
0x01, /* Format desciptor index */
#ifdef NEW_USB2_MODE
0x02, /* Number of frame descriptors */
#else
0x01, /* 1 Frame desciptor follows */
#endif
0x59, 0x55, 0x59, 0x32, /* guid */
0x00, 0x00,
0x10, 0x00,
0x80, 0x00,
0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71,
0x10, /* bBitsPerPixel*/
0x01, /* Default frame index is 1 */
0x00, /* bAspectRatioX */
0x00, /* bAspectRatioY */
0x00, /* bmInterlaceFlags */
0x00, /* bCopyProtect */
/* Class specific Uncompressed VS frame descriptor */
/* VGA 30 FPS */
0x1E, /* Descriptor size */
0x24, /* Descriptor type*/
0x05, /* Subtype: uncompressed frame I/F */
0x01, /* Frame Descriptor Index */
0x00, /* Still image capture method 1 supported, fixed frame rate */
0x80,0x02, /* Width in pixel */
0xE0,0x01, /* Height in pixel */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x60,0x09,0x00, /* Maximum video or still frame size in bytes(Deprecated)*/
0x15,0x16,0x05,0x00, /* Default frame interval */
0x01, /* Frame interval type : No of discrete intervals */
0x15,0x16,0x05,0x00, /* Frame interval 3 */
#ifdef NEW_USB2_MODE // KK
// 720p10 USB Device descriptor for USB 2.0
0x1E, /* Descriptor size */
0x24, /* Descriptor type*/
0x05, /* Subtype: uncompressed frame I/F */
0x02, /* Frame Descriptor Index */
0x00, /* Still image capture method 1 supported, fixed frame rate */
0x00,0x05, /* Width in pixel */
0xD0,0x02, /* Height in pixel */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x00,0x08,0xCA, /* Min bit rate bits/s */
0x00,0x20,0x1C,0x00, /* Maximum video or still frame size in bytes(Deprecated)*/
0x40,0x42,0x0F,0x00, /* Default frame interval */
0x01, /* Frame interval type : No of discrete intervals */
0x40,0x42,0x0F,0x00, /* Frame interval 3 */
#endif
/* Color matching descriptor */
0x06,
0x24,
0x0D,
0x00,
0x00,
0x00,
/* Standard video streaming interface descriptor (Alternate Setting 1) */
0x09, /* Descriptor size */
CY_U3P_USB_INTRFC_DESCR, /* Interface descriptor type */
0x01, /* Interface number */
0x01, /* Alternate setting number */
0x01, /* Number of end points : 1 ISO EP */
0x0E, /* Interface class : CC_VIDEO */
0x02, /* Interface sub class : CC_VIDEOSTREAMING */
0x00, /* Interface protocol code : Undefined */
0x00, /* Interface descriptor string index */
/* Endpoint descriptor for ISO streaming video data */
0x07, /* Descriptor size */
CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
ES_EP_UVC_VIDEO, /* Endpoint address and description */
0x05, /* ISO End point : Async */
ES_EP_ISO_VIDEO_PKT_SIZE_L, /* 1 transaction per microframe */
ES_EP_ISO_VIDEO_PKT_SIZE_H, /* ES_EP_ISO_VIDEO_PKT_SIZE max bytes */
0x01, /* Servicing interval for data transfers */
};