b3cd8e33f54ee5a4194576fe682e616824f04e98
[SCSI2SD-V6.git] / software / SCSI2SD / v3 / SCSI2SD.cydsn / Generated_Source / PSoC5 / USBFS_episr.c
1 /*******************************************************************************\r
2 * File Name: USBFS_episr.c\r
3 * Version 2.80\r
4 *\r
5 * Description:\r
6 *  Data endpoint Interrupt Service Routines\r
7 *\r
8 * Note:\r
9 *\r
10 ********************************************************************************\r
11 * Copyright 2008-2014, Cypress Semiconductor Corporation.  All rights reserved.\r
12 * You may use this file only in accordance with the license, terms, conditions,\r
13 * disclaimers, and limitations in the end user license agreement accompanying\r
14 * the software package with which this file was provided.\r
15 *******************************************************************************/\r
16 \r
17 #include "USBFS.h"\r
18 #include "USBFS_pvt.h"\r
19 #if (defined(USBFS_ENABLE_MIDI_STREAMING) && (USBFS_ENABLE_MIDI_API != 0u))\r
20     #include "USBFS_midi.h"\r
21 #endif /* (defined(USBFS_ENABLE_MIDI_STREAMING) && (USBFS_ENABLE_MIDI_API != 0u)) */\r
22 #if ((USBFS_EP_MM == USBFS__EP_DMAAUTO) && (USBFS_EP_DMA_AUTO_OPT == 0u))\r
23     #include "USBFS_EP8_DMA_Done_SR.h"\r
24     #include "USBFS_EP17_DMA_Done_SR.h"\r
25 #endif /* (USBFS_EP_MM == USBFS__EP_DMAAUTO) && (USBFS_EP_DMA_AUTO_OPT == 0u) */\r
26 \r
27 \r
28 /***************************************\r
29 * Custom Declarations\r
30 ***************************************/\r
31 /* `#START CUSTOM_DECLARATIONS` Place your declaration here */\r
32 \r
33 /* `#END` */\r
34 \r
35 \r
36 #if(USBFS_EP1_ISR_REMOVE == 0u)\r
37 \r
38 \r
39     /******************************************************************************\r
40     * Function Name: USBFS_EP_1_ISR\r
41     *******************************************************************************\r
42     *\r
43     * Summary:\r
44     *  Endpoint 1 Interrupt Service Routine\r
45     *\r
46     * Parameters:\r
47     *  None.\r
48     *\r
49     * Return:\r
50     *  None.\r
51     *\r
52     ******************************************************************************/\r
53     CY_ISR(USBFS_EP_1_ISR)\r
54     {\r
55         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT)  && \\r
56                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
57             uint8 int_en;\r
58         #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
59 \r
60         /* `#START EP1_USER_CODE` Place your code here */\r
61 \r
62         /* `#END` */\r
63 \r
64         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
65                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
66             int_en = EA;\r
67             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
68         #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
69 \r
70         CY_GET_REG8(USBFS_SIE_EP1_CR0_PTR); /* Must read the mode reg */\r
71         /* Do not toggle ISOC endpoint */\r
72         if((USBFS_EP[USBFS_EP1].attrib & USBFS_EP_TYPE_MASK) !=\r
73                                                                                     USBFS_EP_TYPE_ISOC)\r
74         {\r
75             USBFS_EP[USBFS_EP1].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
76         }\r
77         USBFS_EP[USBFS_EP1].apiEpState = USBFS_EVENT_PENDING;\r
78         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR) &\r
79                                                                     (uint8)~USBFS_SIE_EP_INT_EP1_MASK);\r
80 \r
81         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
82                      USBFS_ISR_SERVICE_MIDI_OUT)\r
83             if(USBFS_midi_out_ep == USBFS_EP1)\r
84             {\r
85                 USBFS_MIDI_OUT_EP_Service();\r
86             }\r
87         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT */\r
88 \r
89         /* `#START EP1_END_USER_CODE` Place your code here */\r
90 \r
91         /* `#END` */\r
92 \r
93         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
94                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
95             EA = int_en;\r
96         #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
97     }\r
98 \r
99 #endif   /*  USBFS_EP1_ISR_REMOVE */\r
100 \r
101 \r
102 #if(USBFS_EP2_ISR_REMOVE == 0u)\r
103 \r
104     /*******************************************************************************\r
105     * Function Name: USBFS_EP_2_ISR\r
106     ********************************************************************************\r
107     *\r
108     * Summary:\r
109     *  Endpoint 2 Interrupt Service Routine\r
110     *\r
111     * Parameters:\r
112     *  None.\r
113     *\r
114     * Return:\r
115     *  None.\r
116     *\r
117     *******************************************************************************/\r
118     CY_ISR(USBFS_EP_2_ISR)\r
119     {\r
120         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
121                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
122             uint8 int_en;\r
123         #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
124 \r
125         /* `#START EP2_USER_CODE` Place your code here */\r
126 \r
127         /* `#END` */\r
128 \r
129         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
130                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
131             int_en = EA;\r
132             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
133         #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
134 \r
135         CY_GET_REG8(USBFS_SIE_EP2_CR0_PTR); /* Must read the mode reg */\r
136         /* Do not toggle ISOC endpoint */\r
137         if((USBFS_EP[USBFS_EP2].attrib & USBFS_EP_TYPE_MASK) !=\r
138                                                                                     USBFS_EP_TYPE_ISOC)\r
139         {\r
140             USBFS_EP[USBFS_EP2].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
141         }\r
142         USBFS_EP[USBFS_EP2].apiEpState = USBFS_EVENT_PENDING;\r
143         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
144                                                                         & (uint8)~USBFS_SIE_EP_INT_EP2_MASK);\r
145 \r
146         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
147                      USBFS_ISR_SERVICE_MIDI_OUT)\r
148             if(USBFS_midi_out_ep == USBFS_EP2)\r
149             {\r
150                 USBFS_MIDI_OUT_EP_Service();\r
151             }\r
152         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT */\r
153 \r
154         /* `#START EP2_END_USER_CODE` Place your code here */\r
155 \r
156         /* `#END` */\r
157 \r
158         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
159                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
160             EA = int_en;\r
161         #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
162     }\r
163 \r
164 #endif   /*  USBFS_EP2_ISR_REMOVE */\r
165 \r
166 \r
167 #if(USBFS_EP3_ISR_REMOVE == 0u)\r
168 \r
169     /*******************************************************************************\r
170     * Function Name: USBFS_EP_3_ISR\r
171     ********************************************************************************\r
172     *\r
173     * Summary:\r
174     *  Endpoint 3 Interrupt Service Routine\r
175     *\r
176     * Parameters:\r
177     *  None.\r
178     *\r
179     * Return:\r
180     *  None.\r
181     *\r
182     *******************************************************************************/\r
183     CY_ISR(USBFS_EP_3_ISR)\r
184     {\r
185         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
186                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
187             uint8 int_en;\r
188         #endif /* USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3 */\r
189 \r
190         /* `#START EP3_USER_CODE` Place your code here */\r
191 \r
192         /* `#END` */\r
193 \r
194         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
195                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
196             int_en = EA;\r
197             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
198         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
199 \r
200         CY_GET_REG8(USBFS_SIE_EP3_CR0_PTR); /* Must read the mode reg */\r
201         /* Do not toggle ISOC endpoint */\r
202         if((USBFS_EP[USBFS_EP3].attrib & USBFS_EP_TYPE_MASK) !=\r
203                                                                                     USBFS_EP_TYPE_ISOC)\r
204         {\r
205             USBFS_EP[USBFS_EP3].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
206         }\r
207         USBFS_EP[USBFS_EP3].apiEpState = USBFS_EVENT_PENDING;\r
208         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
209                                                                         & (uint8)~USBFS_SIE_EP_INT_EP3_MASK);\r
210 \r
211         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
212                      USBFS_ISR_SERVICE_MIDI_OUT)\r
213             if(USBFS_midi_out_ep == USBFS_EP3)\r
214             {\r
215                 USBFS_MIDI_OUT_EP_Service();\r
216             }\r
217         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT */\r
218 \r
219         /* `#START EP3_END_USER_CODE` Place your code here */\r
220 \r
221         /* `#END` */\r
222 \r
223         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
224                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
225             EA = int_en;\r
226         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
227     }\r
228 \r
229 #endif   /*  USBFS_EP3_ISR_REMOVE */\r
230 \r
231 \r
232 #if(USBFS_EP4_ISR_REMOVE == 0u)\r
233 \r
234     /*******************************************************************************\r
235     * Function Name: USBFS_EP_4_ISR\r
236     ********************************************************************************\r
237     *\r
238     * Summary:\r
239     *  Endpoint 4 Interrupt Service Routine\r
240     *\r
241     * Parameters:\r
242     *  None.\r
243     *\r
244     * Return:\r
245     *  None.\r
246     *\r
247     *******************************************************************************/\r
248     CY_ISR(USBFS_EP_4_ISR)\r
249     {\r
250         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
251                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
252             uint8 int_en;\r
253         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
254 \r
255         /* `#START EP4_USER_CODE` Place your code here */\r
256 \r
257         /* `#END` */\r
258 \r
259         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
260                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
261             int_en = EA;\r
262             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
263         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
264 \r
265         CY_GET_REG8(USBFS_SIE_EP4_CR0_PTR); /* Must read the mode reg */\r
266         /* Do not toggle ISOC endpoint */\r
267         if((USBFS_EP[USBFS_EP4].attrib & USBFS_EP_TYPE_MASK) !=\r
268                                                                                     USBFS_EP_TYPE_ISOC)\r
269         {\r
270             USBFS_EP[USBFS_EP4].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
271         }\r
272         USBFS_EP[USBFS_EP4].apiEpState = USBFS_EVENT_PENDING;\r
273         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
274                                                                         & (uint8)~USBFS_SIE_EP_INT_EP4_MASK);\r
275 \r
276         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
277                      USBFS_ISR_SERVICE_MIDI_OUT)\r
278             if(USBFS_midi_out_ep == USBFS_EP4)\r
279             {\r
280                 USBFS_MIDI_OUT_EP_Service();\r
281             }\r
282         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT */\r
283 \r
284         /* `#START EP4_END_USER_CODE` Place your code here */\r
285 \r
286         /* `#END` */\r
287 \r
288         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
289                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
290             EA = int_en;\r
291         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
292     }\r
293 \r
294 #endif   /*  USBFS_EP4_ISR_REMOVE */\r
295 \r
296 \r
297 #if(USBFS_EP5_ISR_REMOVE == 0u)\r
298 \r
299     /*******************************************************************************\r
300     * Function Name: USBFS_EP_5_ISR\r
301     ********************************************************************************\r
302     *\r
303     * Summary:\r
304     *  Endpoint 5 Interrupt Service Routine\r
305     *\r
306     * Parameters:\r
307     *  None.\r
308     *\r
309     * Return:\r
310     *  None.\r
311     *\r
312     *******************************************************************************/\r
313     CY_ISR(USBFS_EP_5_ISR)\r
314     {\r
315         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
316                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
317             uint8 int_en;\r
318         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
319 \r
320         /* `#START EP5_USER_CODE` Place your code here */\r
321 \r
322         /* `#END` */\r
323 \r
324         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
325                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
326             int_en = EA;\r
327             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
328         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
329 \r
330         CY_GET_REG8(USBFS_SIE_EP5_CR0_PTR); /* Must read the mode reg */\r
331         /* Do not toggle ISOC endpoint */\r
332         if((USBFS_EP[USBFS_EP5].attrib & USBFS_EP_TYPE_MASK) !=\r
333                                                                                     USBFS_EP_TYPE_ISOC)\r
334         {\r
335             USBFS_EP[USBFS_EP5].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
336         }\r
337         USBFS_EP[USBFS_EP5].apiEpState = USBFS_EVENT_PENDING;\r
338         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
339                                                                         & (uint8)~USBFS_SIE_EP_INT_EP5_MASK);\r
340 \r
341         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
342                      USBFS_ISR_SERVICE_MIDI_OUT)\r
343             if(USBFS_midi_out_ep == USBFS_EP5)\r
344             {\r
345                 USBFS_MIDI_OUT_EP_Service();\r
346             }\r
347         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT */\r
348 \r
349         /* `#START EP5_END_USER_CODE` Place your code here */\r
350 \r
351         /* `#END` */\r
352 \r
353         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
354                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
355             EA = int_en;\r
356         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
357     }\r
358 #endif   /*  USBFS_EP5_ISR_REMOVE */\r
359 \r
360 \r
361 #if(USBFS_EP6_ISR_REMOVE == 0u)\r
362 \r
363     /*******************************************************************************\r
364     * Function Name: USBFS_EP_6_ISR\r
365     ********************************************************************************\r
366     *\r
367     * Summary:\r
368     *  Endpoint 6 Interrupt Service Routine\r
369     *\r
370     * Parameters:\r
371     *  None.\r
372     *\r
373     * Return:\r
374     *  None.\r
375     *\r
376     *******************************************************************************/\r
377     CY_ISR(USBFS_EP_6_ISR)\r
378     {\r
379         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
380                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
381             uint8 int_en;\r
382         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
383 \r
384         /* `#START EP6_USER_CODE` Place your code here */\r
385 \r
386         /* `#END` */\r
387 \r
388         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
389                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
390             int_en = EA;\r
391             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
392         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
393 \r
394         CY_GET_REG8(USBFS_SIE_EP6_CR0_PTR); /* Must read the mode reg */\r
395         /* Do not toggle ISOC endpoint */\r
396         if((USBFS_EP[USBFS_EP6].attrib & USBFS_EP_TYPE_MASK) !=\r
397                                                                                     USBFS_EP_TYPE_ISOC)\r
398         {\r
399             USBFS_EP[USBFS_EP6].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
400         }\r
401         USBFS_EP[USBFS_EP6].apiEpState = USBFS_EVENT_PENDING;\r
402         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
403                                                                         & (uint8)~USBFS_SIE_EP_INT_EP6_MASK);\r
404 \r
405         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
406                      USBFS_ISR_SERVICE_MIDI_OUT)\r
407             if(USBFS_midi_out_ep == USBFS_EP6)\r
408             {\r
409                 USBFS_MIDI_OUT_EP_Service();\r
410             }\r
411         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT  */\r
412 \r
413         /* `#START EP6_END_USER_CODE` Place your code here */\r
414 \r
415         /* `#END` */\r
416 \r
417         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
418                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
419             EA = int_en;\r
420         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
421     }\r
422 \r
423 #endif   /*  USBFS_EP6_ISR_REMOVE */\r
424 \r
425 \r
426 #if(USBFS_EP7_ISR_REMOVE == 0u)\r
427 \r
428     /*******************************************************************************\r
429     * Function Name: USBFS_EP_7_ISR\r
430     ********************************************************************************\r
431     *\r
432     * Summary:\r
433     *  Endpoint 7 Interrupt Service Routine\r
434     *\r
435     * Parameters:\r
436     *  None.\r
437     *\r
438     * Return:\r
439     *  None.\r
440     *\r
441     *******************************************************************************/\r
442     CY_ISR(USBFS_EP_7_ISR)\r
443     {\r
444         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
445                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
446             uint8 int_en;\r
447         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
448 \r
449         /* `#START EP7_USER_CODE` Place your code here */\r
450 \r
451         /* `#END` */\r
452 \r
453         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
454                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
455             int_en = EA;\r
456             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
457         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
458 \r
459         CY_GET_REG8(USBFS_SIE_EP7_CR0_PTR); /* Must read the mode reg */\r
460         /* Do not toggle ISOC endpoint */\r
461         if((USBFS_EP[USBFS_EP7].attrib & USBFS_EP_TYPE_MASK) !=\r
462                                                                                     USBFS_EP_TYPE_ISOC)\r
463         {\r
464             USBFS_EP[USBFS_EP7].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
465         }\r
466         USBFS_EP[USBFS_EP7].apiEpState = USBFS_EVENT_PENDING;\r
467         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
468                                                                         & (uint8)~USBFS_SIE_EP_INT_EP7_MASK);\r
469 \r
470         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
471                      USBFS_ISR_SERVICE_MIDI_OUT)\r
472             if(USBFS_midi_out_ep == USBFS_EP7)\r
473             {\r
474                 USBFS_MIDI_OUT_EP_Service();\r
475             }\r
476         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT  */\r
477 \r
478         /* `#START EP7_END_USER_CODE` Place your code here */\r
479 \r
480         /* `#END` */\r
481 \r
482         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
483                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
484             EA = int_en;\r
485         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
486     }\r
487 \r
488 #endif   /*  USBFS_EP7_ISR_REMOVE */\r
489 \r
490 \r
491 #if(USBFS_EP8_ISR_REMOVE == 0u)\r
492 \r
493     /*******************************************************************************\r
494     * Function Name: USBFS_EP_8_ISR\r
495     ********************************************************************************\r
496     *\r
497     * Summary:\r
498     *  Endpoint 8 Interrupt Service Routine\r
499     *\r
500     * Parameters:\r
501     *  None.\r
502     *\r
503     * Return:\r
504     *  None.\r
505     *\r
506     *******************************************************************************/\r
507     CY_ISR(USBFS_EP_8_ISR)\r
508     {\r
509         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
510                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
511             uint8 int_en;\r
512         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
513 \r
514         /* `#START EP8_USER_CODE` Place your code here */\r
515 \r
516         /* `#END` */\r
517 \r
518         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
519                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
520             int_en = EA;\r
521             CyGlobalIntEnable;  /* Make sure nested interrupt is enabled */\r
522         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
523 \r
524         CY_GET_REG8(USBFS_SIE_EP8_CR0_PTR); /* Must read the mode reg */\r
525         /* Do not toggle ISOC endpoint */\r
526         if((USBFS_EP[USBFS_EP8].attrib & USBFS_EP_TYPE_MASK) !=\r
527                                                                                     USBFS_EP_TYPE_ISOC)\r
528         {\r
529             USBFS_EP[USBFS_EP8].epToggle ^= USBFS_EPX_CNT_DATA_TOGGLE;\r
530         }\r
531         USBFS_EP[USBFS_EP8].apiEpState = USBFS_EVENT_PENDING;\r
532         CY_SET_REG8(USBFS_SIE_EP_INT_SR_PTR, CY_GET_REG8(USBFS_SIE_EP_INT_SR_PTR)\r
533                                                                         & (uint8)~USBFS_SIE_EP_INT_EP8_MASK);\r
534 \r
535         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
536                      USBFS_ISR_SERVICE_MIDI_OUT)\r
537             if(USBFS_midi_out_ep == USBFS_EP8)\r
538             {\r
539                 USBFS_MIDI_OUT_EP_Service();\r
540             }\r
541         #endif /*  USBFS_ISR_SERVICE_MIDI_OUT */\r
542 \r
543         /* `#START EP8_END_USER_CODE` Place your code here */\r
544 \r
545         /* `#END` */\r
546 \r
547         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && !defined(USBFS_MAIN_SERVICE_MIDI_OUT) && \\r
548                      USBFS_ISR_SERVICE_MIDI_OUT && CY_PSOC3)\r
549             EA = int_en;\r
550         #endif /* CY_PSOC3 & USBFS_ISR_SERVICE_MIDI_OUT  */\r
551     }\r
552 \r
553 #endif   /*  USBFS_EP8_ISR_REMOVE */\r
554 \r
555 \r
556 /*******************************************************************************\r
557 * Function Name: USBFS_SOF_ISR\r
558 ********************************************************************************\r
559 *\r
560 * Summary:\r
561 *  Start of Frame Interrupt Service Routine\r
562 *\r
563 * Parameters:\r
564 *  None.\r
565 *\r
566 * Return:\r
567 *  None.\r
568 *\r
569 *******************************************************************************/\r
570 CY_ISR(USBFS_SOF_ISR)\r
571 {\r
572     /* `#START SOF_USER_CODE` Place your code here */\r
573 \r
574     /* `#END` */\r
575 }\r
576 \r
577 \r
578 /*******************************************************************************\r
579 * Function Name: USBFS_BUS_RESET_ISR\r
580 ********************************************************************************\r
581 *\r
582 * Summary:\r
583 *  USB Bus Reset Interrupt Service Routine.  Calls _Start with the same\r
584 *  parameters as the last USER call to _Start\r
585 *\r
586 * Parameters:\r
587 *  None.\r
588 *\r
589 * Return:\r
590 *  None.\r
591 *\r
592 *******************************************************************************/\r
593 CY_ISR(USBFS_BUS_RESET_ISR)\r
594 {\r
595     /* `#START BUS_RESET_USER_CODE` Place your code here */\r
596 \r
597     /* `#END` */\r
598 \r
599     USBFS_ReInitComponent();\r
600 }\r
601 \r
602 \r
603 #if((USBFS_EP_MM != USBFS__EP_MANUAL) && (USBFS_ARB_ISR_REMOVE == 0u))\r
604 \r
605 \r
606     /*******************************************************************************\r
607     * Function Name: USBFS_ARB_ISR\r
608     ********************************************************************************\r
609     *\r
610     * Summary:\r
611     *  Arbiter Interrupt Service Routine\r
612     *\r
613     * Parameters:\r
614     *  None.\r
615     *\r
616     * Return:\r
617     *  None.\r
618     *\r
619     * Side effect:\r
620     *  Search for EP8 int_status will be much slower than search for EP1 int_status.\r
621     *\r
622     *******************************************************************************/\r
623     CY_ISR(USBFS_ARB_ISR)\r
624     {\r
625         uint8 int_status;\r
626         uint8 ep_status;\r
627         uint8 ep = USBFS_EP1;\r
628         uint8 ptr = 0u;\r
629 \r
630         /* `#START ARB_BEGIN_USER_CODE` Place your code here */\r
631 \r
632         /* `#END` */\r
633 \r
634         int_status = USBFS_ARB_INT_SR_REG;                   /* read Arbiter Status Register */\r
635         USBFS_ARB_INT_SR_REG = int_status;                   /* Clear Serviced Interrupts */\r
636 \r
637         while(int_status != 0u)\r
638         {\r
639             if((int_status & 1u) != 0u)  /* If EpX interrupt present */\r
640             {   /* read Endpoint Status Register */\r
641                 ep_status  = CY_GET_REG8((reg8 *)(USBFS_ARB_EP1_SR_IND + ptr));\r
642                 /* If In Buffer Full */\r
643                 if((ep_status & USBFS_ARB_EPX_SR_IN_BUF_FULL) != 0u)\r
644                 {\r
645                     if((USBFS_EP[ep].addr & USBFS_DIR_IN) != 0u)\r
646                     {\r
647                         /* Clear Data ready status */\r
648                         *(reg8 *)(USBFS_ARB_EP1_CFG_IND + ptr) &=\r
649                                                                     (uint8)~USBFS_ARB_EPX_CFG_IN_DATA_RDY;\r
650                         #if((USBFS_EP_MM == USBFS__EP_DMAAUTO) && (USBFS_EP_DMA_AUTO_OPT == 0u))\r
651                             /* Setup common area DMA with rest of the data */\r
652                             if(USBFS_inLength[ep] > USBFS_DMA_BYTES_PER_BURST)\r
653                             {\r
654                                 USBFS_LoadNextInEP(ep, 0u);\r
655                             }\r
656                             else\r
657                             {\r
658                                 USBFS_inBufFull[ep] = 1u;\r
659                             }\r
660                         #endif /* ((USBFS_EP_MM == USBFS__EP_DMAAUTO) && (USBFS_EP_DMA_AUTO_OPT == 0u)) */\r
661                         /* Write the Mode register */\r
662                         CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ptr), USBFS_EP[ep].epMode);\r
663                         #if (defined(USBFS_ENABLE_MIDI_STREAMING) && USBFS_ISR_SERVICE_MIDI_IN)\r
664                             if(ep == USBFS_midi_in_ep)\r
665                             {   /* Clear MIDI input pointer */\r
666                                 USBFS_midiInPointer = 0u;\r
667                             }\r
668                         #endif /*  USBFS_ENABLE_MIDI_STREAMING*/\r
669                     }\r
670                 }\r
671                 /* (re)arm Out EP only for mode2 */\r
672                 #if(USBFS_EP_MM != USBFS__EP_DMAAUTO)\r
673                     /* If DMA Grant */\r
674                     if((ep_status & USBFS_ARB_EPX_SR_DMA_GNT) != 0u)\r
675                     {\r
676                         if((USBFS_EP[ep].addr & USBFS_DIR_IN) == 0u)\r
677                         {\r
678                                 USBFS_EP[ep].apiEpState = USBFS_NO_EVENT_PENDING;\r
679                                 /* Write the Mode register */\r
680                                 CY_SET_REG8((reg8 *)(USBFS_SIE_EP1_CR0_IND + ptr),\r
681                                                                                     USBFS_EP[ep].epMode);\r
682                         }\r
683                     }\r
684                 #endif /*  USBFS_EP_MM */\r
685 \r
686                 /* `#START ARB_USER_CODE` Place your code here for handle Buffer Underflow/Overflow */\r
687 \r
688                 /* `#END` */\r
689 \r
690                 CY_SET_REG8((reg8 *)(USBFS_ARB_EP1_SR_IND + ptr), ep_status);   /* Clear Serviced events */\r
691             }\r
692             ptr += USBFS_EPX_CNTX_ADDR_OFFSET;               /* prepare pointer for next EP */\r
693             ep++;\r
694             int_status >>= 1u;\r
695         }\r
696 \r
697         /* `#START ARB_END_USER_CODE` Place your code here */\r
698 \r
699         /* `#END` */\r
700     }\r
701 \r
702 #endif /*  USBFS_EP_MM */\r
703 \r
704 #if ((USBFS_EP_MM == USBFS__EP_DMAAUTO) && (USBFS_EP_DMA_AUTO_OPT == 0u))\r
705     /******************************************************************************\r
706     * Function Name: USBFS_EP_DMA_DONE_ISR\r
707     *******************************************************************************\r
708     *\r
709     * Summary:\r
710     *  Endpoint 1 DMA Done Interrupt Service Routine\r
711     *\r
712     * Parameters:\r
713     *  None.\r
714     *\r
715     * Return:\r
716     *  None.\r
717     *\r
718     ******************************************************************************/\r
719     CY_ISR(USBFS_EP_DMA_DONE_ISR)\r
720     {\r
721         uint8 int8Status;\r
722         uint8 int17Status;\r
723         uint8 ep_status;\r
724         uint8 ep = USBFS_EP1;\r
725         uint8 ptr = 0u;\r
726 \r
727         /* `#START EP_DMA_DONE_BEGIN_USER_CODE` Place your code here */\r
728 \r
729         /* `#END` */\r
730 \r
731         /* Read clear on read status register with the EP source of interrupt */\r
732         int17Status = USBFS_EP17_DMA_Done_SR_Read() & USBFS_EP17_SR_MASK;\r
733         int8Status = USBFS_EP8_DMA_Done_SR_Read() & USBFS_EP8_SR_MASK;\r
734 \r
735         while(int8Status != 0u)\r
736         {\r
737             while(int17Status != 0u)\r
738             {\r
739                 if((int17Status & 1u) != 0u)  /* If EpX interrupt present */\r
740                 {\r
741                     /* Read Endpoint Status Register */\r
742                     ep_status = CY_GET_REG8((reg8 *)(USBFS_ARB_EP1_SR_IND + ptr));\r
743                     if( ((ep_status & USBFS_ARB_EPX_SR_IN_BUF_FULL) == 0u) &&\r
744                         (USBFS_inBufFull[ep] == 0u))\r
745                     {\r
746                         /* `#START EP_DMA_DONE_USER_CODE` Place your code here */\r
747 \r
748                         /* `#END` */\r
749 \r
750                         CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_WA_MSB_IND + ptr), 0x00u);\r
751                         /* repeat 2 last bytes to prefetch endpoint area */\r
752                         CY_SET_REG8((reg8 *)(USBFS_ARB_RW1_WA_IND + ptr),\r
753                                     USBFS_DMA_BYTES_PER_BURST * ep - USBFS_DMA_BYTES_REPEAT);\r
754                         USBFS_LoadNextInEP(ep, 1);\r
755                         /* Set Data ready status, This will generate DMA request */\r
756                         * (reg8 *)(USBFS_ARB_EP1_CFG_IND + ptr) |= USBFS_ARB_EPX_CFG_IN_DATA_RDY;\r
757                     }\r
758                 }\r
759                 ptr += USBFS_EPX_CNTX_ADDR_OFFSET;               /* prepare pointer for next EP */\r
760                 ep++;\r
761                 int17Status >>= 1u;\r
762             }\r
763             int8Status >>= 1u;\r
764             if(int8Status != 0u)\r
765             {\r
766                 /* Prepare pointer for EP8 */\r
767                 ptr = ((USBFS_EP8 - USBFS_EP1) << USBFS_EPX_CNTX_ADDR_SHIFT);\r
768                 ep = USBFS_EP8;\r
769                 int17Status = int8Status & 0x01u;\r
770             }\r
771         }\r
772 \r
773         /* `#START EP_DMA_DONE_END_USER_CODE` Place your code here */\r
774 \r
775         /* `#END` */\r
776     }\r
777 #endif /* ((USBFS_EP_MM == USBFS__EP_DMAAUTO) && (USBFS_EP_DMA_AUTO_OPT == 0u)) */\r
778 \r
779 \r
780 /* [] END OF FILE */\r