firmware/usbdefs_std_dsc.h
author root@rika
Thu, 23 Apr 2009 19:10:12 +0200
changeset 30 7fd00015f62f
parent 2 2f55e5dd591d
permissions -rw-r--r--
several changes..
slime@2
     1
/*********************************************************************
slime@2
     2
 *
slime@2
     3
 *                Microchip USB C18 Firmware Version 1.0
slime@2
     4
 *
slime@2
     5
 *********************************************************************
slime@2
     6
 * FileName:        usbdefs_std_dsc.h
slime@2
     7
 * Dependencies:    See INCLUDES section below
slime@2
     8
 * Processor:       PIC18
slime@2
     9
 * Compiler:        C18 2.30.01+
slime@2
    10
 * Company:         Microchip Technology, Inc.
slime@2
    11
 *
slime@2
    12
 * Software License Agreement
slime@2
    13
 *
slime@2
    14
 * The software supplied herewith by Microchip Technology Incorporated
slime@2
    15
 * (the “Company”) for its PICmicro® Microcontroller is intended and
slime@2
    16
 * supplied to you, the Company’s customer, for use solely and
slime@2
    17
 * exclusively on Microchip PICmicro Microcontroller products. The
slime@2
    18
 * software is owned by the Company and/or its supplier, and is
slime@2
    19
 * protected under applicable copyright laws. All rights are reserved.
slime@2
    20
 * Any use in violation of the foregoing restrictions may subject the
slime@2
    21
 * user to criminal sanctions under applicable laws, as well as to
slime@2
    22
 * civil liability for the breach of the terms and conditions of this
slime@2
    23
 * license.
slime@2
    24
 *
slime@2
    25
 * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
slime@2
    26
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
slime@2
    27
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
slime@2
    28
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
slime@2
    29
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
slime@2
    30
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
slime@2
    31
 *
slime@2
    32
 * Author               Date        Comment
slime@2
    33
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
slime@2
    34
 * Rawin Rojvanit       11/19/04    Original.
slime@2
    35
 ********************************************************************/
slime@2
    36
slime@2
    37
/******************************************************************************
slime@2
    38
 * USB Definitions: Standard Descriptors
slime@2
    39
 *****************************************************************************/
slime@2
    40
#ifndef USBDEFS_STD_DSC_H
slime@2
    41
#define USBDEFS_STD_DSC_H
slime@2
    42
slime@2
    43
/** I N C L U D E S **********************************************************/
slime@2
    44
#include "typedefs.h"
slime@2
    45
slime@2
    46
/** D E F I N I T I O N S ****************************************************/
slime@2
    47
slime@2
    48
/* Descriptor Types */
slime@2
    49
#define DSC_DEV     0x01
slime@2
    50
#define DSC_CFG     0x02
slime@2
    51
#define DSC_STR     0x03
slime@2
    52
#define DSC_INTF    0x04
slime@2
    53
#define DSC_EP      0x05
slime@2
    54
slime@2
    55
/******************************************************************************
slime@2
    56
 * USB Endpoint Definitions
slime@2
    57
 * USB Standard EP Address Format: DIR:X:X:X:EP3:EP2:EP1:EP0
slime@2
    58
 * This is used in the descriptors. See autofiles\usbdsc.c
slime@2
    59
 * 
slime@2
    60
 * NOTE: Do not use these values for checking against USTAT.
slime@2
    61
 * To check against USTAT, use values defined in "system\usb\usbdrv\usbdrv.h"
slime@2
    62
 *****************************************************************************/
slime@2
    63
#define _EP01_OUT   0x01
slime@2
    64
#define _EP01_IN    0x81
slime@2
    65
#define _EP02_OUT   0x02
slime@2
    66
#define _EP02_IN    0x82
slime@2
    67
#define _EP03_OUT   0x03
slime@2
    68
#define _EP03_IN    0x83
slime@2
    69
#define _EP04_OUT   0x04
slime@2
    70
#define _EP04_IN    0x84
slime@2
    71
#define _EP05_OUT   0x05
slime@2
    72
#define _EP05_IN    0x85
slime@2
    73
#define _EP06_OUT   0x06
slime@2
    74
#define _EP06_IN    0x86
slime@2
    75
#define _EP07_OUT   0x07
slime@2
    76
#define _EP07_IN    0x87
slime@2
    77
#define _EP08_OUT   0x08
slime@2
    78
#define _EP08_IN    0x88
slime@2
    79
#define _EP09_OUT   0x09
slime@2
    80
#define _EP09_IN    0x89
slime@2
    81
#define _EP10_OUT   0x0A
slime@2
    82
#define _EP10_IN    0x8A
slime@2
    83
#define _EP11_OUT   0x0B
slime@2
    84
#define _EP11_IN    0x8B
slime@2
    85
#define _EP12_OUT   0x0C
slime@2
    86
#define _EP12_IN    0x8C
slime@2
    87
#define _EP13_OUT   0x0D
slime@2
    88
#define _EP13_IN    0x8D
slime@2
    89
#define _EP14_OUT   0x0E
slime@2
    90
#define _EP14_IN    0x8E
slime@2
    91
#define _EP15_OUT   0x0F
slime@2
    92
#define _EP15_IN    0x8F
slime@2
    93
slime@2
    94
/* Configuration Attributes */
slime@2
    95
#define _DEFAULT    0x01<<7         //Default Value (Bit 7 is set)
slime@2
    96
#define _SELF       0x01<<6         //Self-powered (Supports if set)
slime@2
    97
#define _RWU        0x01<<5         //Remote Wakeup (Supports if set)
slime@2
    98
slime@2
    99
/* Endpoint Transfer Type */
slime@2
   100
#define _CTRL       0x00            //Control Transfer
slime@2
   101
#define _ISO        0x01            //Isochronous Transfer
slime@2
   102
#define _BULK       0x02            //Bulk Transfer
slime@2
   103
#define _INT        0x03            //Interrupt Transfer
slime@2
   104
slime@2
   105
/* Isochronous Endpoint Synchronization Type */
slime@2
   106
#define _NS         0x00<<2         //No Synchronization
slime@2
   107
#define _AS         0x01<<2         //Asynchronous
slime@2
   108
#define _AD         0x02<<2         //Adaptive
slime@2
   109
#define _SY         0x03<<2         //Synchronous
slime@2
   110
slime@2
   111
/* Isochronous Endpoint Usage Type */
slime@2
   112
#define _DE         0x00<<4         //Data endpoint
slime@2
   113
#define _FE         0x01<<4         //Feedback endpoint
slime@2
   114
#define _IE         0x02<<4         //Implicit feedback Data endpoint
slime@2
   115
slime@2
   116
slime@2
   117
/** S T R U C T U R E ********************************************************/
slime@2
   118
slime@2
   119
/******************************************************************************
slime@2
   120
 * USB Device Descriptor Structure
slime@2
   121
 *****************************************************************************/
slime@2
   122
typedef struct _USB_DEV_DSC
slime@2
   123
{
slime@2
   124
    byte bLength;       byte bDscType;      word bcdUSB;
slime@2
   125
    byte bDevCls;       byte bDevSubCls;    byte bDevProtocol;
slime@2
   126
    byte bMaxPktSize0;  word idVendor;      word idProduct;
slime@2
   127
    word bcdDevice;     byte iMFR;          byte iProduct;
slime@2
   128
    byte iSerialNum;    byte bNumCfg;
slime@2
   129
} USB_DEV_DSC;
slime@2
   130
slime@2
   131
/******************************************************************************
slime@2
   132
 * USB Configuration Descriptor Structure
slime@2
   133
 *****************************************************************************/
slime@2
   134
typedef struct _USB_CFG_DSC
slime@2
   135
{
slime@2
   136
    byte bLength;       byte bDscType;      word wTotalLength;
slime@2
   137
    byte bNumIntf;      byte bCfgValue;     byte iCfg;
slime@2
   138
    byte bmAttributes;  byte bMaxPower;
slime@2
   139
} USB_CFG_DSC;
slime@2
   140
slime@2
   141
/******************************************************************************
slime@2
   142
 * USB Interface Descriptor Structure
slime@2
   143
 *****************************************************************************/
slime@2
   144
typedef struct _USB_INTF_DSC
slime@2
   145
{
slime@2
   146
    byte bLength;       byte bDscType;      byte bIntfNum;
slime@2
   147
    byte bAltSetting;   byte bNumEPs;       byte bIntfCls;
slime@2
   148
    byte bIntfSubCls;   byte bIntfProtocol; byte iIntf;
slime@2
   149
} USB_INTF_DSC;
slime@2
   150
slime@2
   151
/******************************************************************************
slime@2
   152
 * USB Endpoint Descriptor Structure
slime@2
   153
 *****************************************************************************/
slime@2
   154
typedef struct _USB_EP_DSC
slime@2
   155
{
slime@2
   156
    byte bLength;       byte bDscType;      byte bEPAdr;
slime@2
   157
    byte bmAttributes;  word wMaxPktSize;   byte bInterval;
slime@2
   158
} USB_EP_DSC;
slime@2
   159
slime@2
   160
#endif //USBDEFS_STD_DSC_H