Merge PCB updates
[SCSI2SD.git] / software / SCSI2SD / v4 / SCSI2SD.cydsn / Generated_Source / PSoC5 / USBFS_cls.c
1 /*******************************************************************************
2 * File Name: USBFS_cls.c
3 * Version 2.60
4 *
5 * Description:
6 *  USB Class request handler.
7 *
8 * Note:
9 *
10 ********************************************************************************
11 * Copyright 2008-2013, Cypress Semiconductor Corporation.  All rights reserved.
12 * You may use this file only in accordance with the license, terms, conditions,
13 * disclaimers, and limitations in the end user license agreement accompanying
14 * the software package with which this file was provided.
15 *******************************************************************************/
16
17 #include "USBFS.h"
18
19 #if(USBFS_EXTERN_CLS == USBFS_FALSE)
20
21 #include "USBFS_pvt.h"
22
23
24 /***************************************
25 * User Implemented Class Driver Declarations.
26 ***************************************/
27 /* `#START USER_DEFINED_CLASS_DECLARATIONS` Place your declaration here */
28
29 /* `#END` */
30
31
32 /*******************************************************************************
33 * Function Name: USBFS_DispatchClassRqst
34 ********************************************************************************
35 * Summary:
36 *  This routine dispatches class specific requests depend on interface class.
37 *
38 * Parameters:
39 *  None.
40 *
41 * Return:
42 *  requestHandled.
43 *
44 * Reentrant:
45 *  No.
46 *
47 *******************************************************************************/
48 uint8 USBFS_DispatchClassRqst(void) 
49 {
50     uint8 requestHandled = USBFS_FALSE;
51     uint8 interfaceNumber = 0u;
52
53     switch(CY_GET_REG8(USBFS_bmRequestType) & USBFS_RQST_RCPT_MASK)
54     {
55         case USBFS_RQST_RCPT_IFC:        /* Class-specific request directed to an interface */
56             interfaceNumber = CY_GET_REG8(USBFS_wIndexLo); /* wIndexLo contain Interface number */
57             break;
58         case USBFS_RQST_RCPT_EP:         /* Class-specific request directed to the endpoint */
59             /* Find related interface to the endpoint, wIndexLo contain EP number */
60             interfaceNumber =
61                 USBFS_EP[CY_GET_REG8(USBFS_wIndexLo) & USBFS_DIR_UNUSED].interface;
62             break;
63         default:    /* RequestHandled is initialized as FALSE by default */
64             break;
65     }
66     /* Handle Class request depend on interface type */
67     switch(USBFS_interfaceClass[interfaceNumber])
68     {
69         case USBFS_CLASS_HID:
70             #if defined(USBFS_ENABLE_HID_CLASS)
71                 requestHandled = USBFS_DispatchHIDClassRqst();
72             #endif /* USBFS_ENABLE_HID_CLASS */
73             break;
74         case USBFS_CLASS_AUDIO:
75             #if defined(USBFS_ENABLE_AUDIO_CLASS)
76                 requestHandled = USBFS_DispatchAUDIOClassRqst();
77             #endif /* USBFS_ENABLE_HID_CLASS */
78             break;
79         case USBFS_CLASS_CDC:
80             #if defined(USBFS_ENABLE_CDC_CLASS)
81                 requestHandled = USBFS_DispatchCDCClassRqst();
82             #endif /* USBFS_ENABLE_CDC_CLASS */
83             break;
84         default:    /* requestHandled is initialized as FALSE by default */
85             break;
86     }
87
88     /* `#START USER_DEFINED_CLASS_CODE` Place your Class request here */
89
90     /* `#END` */
91
92     return(requestHandled);
93 }
94
95
96 /*******************************************************************************
97 * Additional user functions supporting Class Specific Requests
98 ********************************************************************************/
99
100 /* `#START CLASS_SPECIFIC_FUNCTIONS` Place any additional functions here */
101
102 /* `#END` */
103
104 #endif /* USBFS_EXTERN_CLS */
105
106
107 /* [] END OF FILE */