]> begriffs open source - freertos/blob - 20080217/Demo/ARM7_AT91SAM7X256_Eclipse/RTOSDemo/USB/USBSample.h
Prepare Fujitsu ports for release.
[freertos] / 20080217 / Demo / ARM7_AT91SAM7X256_Eclipse / RTOSDemo / USB / USBSample.h
1 /*\r
2         FreeRTOS.org V4.7.1 - Copyright (C) 2003-2008 Richard Barry.\r
3 \r
4         This file is part of the FreeRTOS.org distribution.\r
5 \r
6         FreeRTOS.org is free software; you can redistribute it and/or modify\r
7         it under the terms of the GNU General Public License as published by\r
8         the Free Software Foundation; either version 2 of the License, or\r
9         (at your option) any later version.\r
10 \r
11         FreeRTOS.org is distributed in the hope that it will be useful,\r
12         but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14         GNU General Public License for more details.\r
15 \r
16         You should have received a copy of the GNU General Public License\r
17         along with FreeRTOS.org; if not, write to the Free Software\r
18         Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
19 \r
20         A special exception to the GPL can be applied should you wish to distribute\r
21         a combined work that includes FreeRTOS.org, without being obliged to provide\r
22         the source code for any proprietary components.  See the licensing section \r
23         of http://www.FreeRTOS.org for full details of how and when the exception\r
24         can be applied.\r
25 \r
26         ***************************************************************************\r
27 \r
28         Please ensure to read the configuration and relevant port sections of the \r
29         online documentation.\r
30 \r
31         +++ http://www.FreeRTOS.org +++\r
32         Documentation, latest information, license and contact details.  \r
33 \r
34         +++ http://www.SafeRTOS.com +++\r
35         A version that is certified for use in safety critical systems.\r
36 \r
37         +++ http://www.OpenRTOS.com +++\r
38         Commercial support, development, porting, licensing and training services.\r
39 \r
40         ***************************************************************************\r
41 */\r
42 \r
43 #ifndef USB_DEMO_H\r
44 #define USB_DEMO_H\r
45 \r
46 \r
47 /*-----------------------------------------------------------*/\r
48 \r
49 #define usbQUEUE_LENGTH                                         ( 0x3 ) /* Must have all bits set! */\r
50 #define usbEND_POINT_0                                          ( 0 )\r
51 #define usbEND_POINT_1                                          ( 1 )\r
52 #define usbRX_COUNT_MASK                                        ( ( unsigned portLONG ) 0x7ff )\r
53 #define AT91C_UDP_STALLSENT                                     AT91C_UDP_ISOERROR\r
54 \r
55 /* Structure used to take a snapshot of the USB status from within the ISR. */\r
56 typedef struct X_ISR_STATUS\r
57 {\r
58         unsigned portLONG ulISR;\r
59         unsigned portLONG ulCSR0;\r
60         unsigned portCHAR ucFifoData[ 8 ];\r
61 } xISRStatus;\r
62 \r
63 /* Macros to manipulate the control and status registers.  These registers \r
64 cannot be accessed using a direct read modify write operation outside of the \r
65 ISR as some bits are left unchanged by writing with a 0, and some are left \r
66 unchanged by writing with a 1. */\r
67 \r
68 #define usbCSR_SET_BIT( pulValueNow, ulBit )                                                                                    \\r
69 {                                                                                                                                                                               \\r
70         /* Set TXCOMP, RX_DATA_BK0, RXSETUP, */                                                                                         \\r
71         /* STALLSENT and RX_DATA_BK1 to 1 so the */                                                                                     \\r
72         /* write has no effect. */                                                                                                                      \\r
73         ( * ( ( unsigned portLONG * ) pulValueNow ) ) |= ( unsigned portLONG ) 0x4f;            \\r
74                                                                                                                                                                                 \\r
75         /* Clear the FORCE_STALL and TXPKTRDY bits */                                                                           \\r
76         /* so the write has no effect. */                                                                                                       \\r
77         ( * ( ( unsigned portLONG * ) pulValueNow ) ) &= ( unsigned portLONG ) 0xffffffcf;      \\r
78                                                                                                                                                                                 \\r
79         /* Set whichever bit we want set. */                                                                                            \\r
80         ( * ( ( unsigned portLONG * ) pulValueNow ) ) |= ( ulBit );                                                     \\r
81 }\r
82 \r
83 /*\r
84  * Creates the queue used to communicate between the USB task and the USB ISR, then\r
85  * createst the task that manages the USB peripheral.\r
86  */\r
87 void vStartUSBTask( unsigned portBASE_TYPE uxPriority );\r
88 \r
89 #endif\r
90 \r