/***************************************************************************
 *
 *
 * Copyright(c) 2015,2016 Intel Corporation.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in
 * the documentation and/or other materials provided with the
 * distribution.
 * * Neither the name of Intel Corporation nor the names of its
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 ***************************************************************************/

/**
 * @file
 * @brief useful constants and macros for the USB application
 *
 * This file contains useful constants and macros for the USB applications.
 */

#ifndef USB_COMMON_H_
#define USB_COMMON_H_

/* Descriptor size in bytes */
#define USB_DEVICE_DESC_SIZE            18
#define USB_CONFIGURATION_DESC_SIZE     9
#define USB_INTERFACE_DESC_SIZE         9
#define USB_ENDPOINT_DESC_SIZE          7
#define USB_STRING_DESC_SIZE            4
#define USB_HID_DESC_SIZE               9
#define USB_DFU_DESC_SIZE               9
#define USB_DEVICE_QUAL_DESC_SIZE       10
#define USB_INTERFACE_ASSOC_DESC_SIZE   8

/* Descriptor type */
#define USB_DEVICE_DESC                 0x01
#define USB_CONFIGURATION_DESC          0x02
#define USB_STRING_DESC                 0x03
#define USB_INTERFACE_DESC              0x04
#define USB_ENDPOINT_DESC               0x05
#define USB_DEVICE_QUAL_DESC            0x06
#define USB_INTERFACE_ASSOC_DESC        0x0B
#define USB_HID_DESC                    0x21
#define USB_HID_REPORT_DESC             0x22
#define USB_DFU_FUNCTIONAL_DESC         0x21

/* Useful define */
#define USB_1_1                         0x0110
#define USB_2_0                         0x0200
/* Set USB version to 2.1 so that the host will request the BOS descriptor */
#define USB_2_1				0x0210

#define BCDDEVICE_RELNUM                0x0100

/* 100mA max power, per 2mA units */
/* USB 1.1 spec indicates 100mA(max) per unit load, up to 5 loads */
#define MAX_LOW_POWER                   0x32
#define MAX_HIGH_POWER                  0xFA

/* bmAttributes:
 * D7:Reserved, always 1,
 * D6:Self-Powered -> 1,
 * D5:Remote Wakeup -> 0,
 * D4...0:Reserved -> 0
 */
#define USB_CONFIGURATION_ATTRIBUTES    0xC0

/* Classes */
#define COMMUNICATION_DEVICE_CLASS      0x02
#define COMMUNICATION_DEVICE_CLASS_DATA 0x0A
#define HID_CLASS                       0x03
#define MASS_STORAGE_CLASS              0x08
#define WIRELESS_DEVICE_CLASS           0xE0
#define MISC_CLASS                      0xEF
#define CUSTOM_CLASS                    0xFF
#define DFU_CLASS                       0xFE

/* Sub-classes */
#define ACM_SUBCLASS                    0x02
#define CDC_ECM_SUBCLASS                0x06
#define CDC_NCM_SUBCLASS                0x0d
#define BOOT_INTERFACE_SUBCLASS         0x01
#define SCSI_TRANSPARENT_SUBCLASS       0x06
#define DFU_INTERFACE_SUBCLASS          0x01
#define RF_SUBCLASS                     0x01
#define CUSTOM_SUBCLASS                 0xFF
/* Misc subclasses */
#define MISC_RNDIS_SUBCLASS             0x04

/* Protocols */
#define V25TER_PROTOCOL                 0x01
#define MOUSE_PROTOCOL                  0x02
#define BULK_ONLY_PROTOCOL              0x50
#define DFU_RUNTIME_PROTOCOL            0x01
#define DFU_MODE_PROTOCOL               0x02
#define BLUETOOTH_PROTOCOL              0x01
/* CDC ACM protocols */
#define ACM_VENDOR_PROTOCOL             0xFF
/* Misc protocols */
#define MISC_ETHERNET_PROTOCOL          0x01

#endif /* USB_COMMON_H_ */
