]> begriffs open source - cmsis-freertos/blob - Demo/lwIP_Demo_Rowley_ARM7/EMAC/SAM7_EMAC.h
Update cmsis_os2.c
[cmsis-freertos] / Demo / lwIP_Demo_Rowley_ARM7 / EMAC / SAM7_EMAC.h
1 /*
2     FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
3     All rights reserved
4
5     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
6
7     This file is part of the FreeRTOS distribution.
8
9     FreeRTOS is free software; you can redistribute it and/or modify it under
10     the terms of the GNU General Public License (version 2) as published by the
11     Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.
12
13     ***************************************************************************
14     >>!   NOTE: The modification to the GPL is included to allow you to     !<<
15     >>!   distribute a combined work that includes FreeRTOS without being   !<<
16     >>!   obliged to provide the source code for proprietary components     !<<
17     >>!   outside of the FreeRTOS kernel.                                   !<<
18     ***************************************************************************
19
20     FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
21     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22     FOR A PARTICULAR PURPOSE.  Full license text is available on the following
23     link: http://www.freertos.org/a00114.html
24
25     ***************************************************************************
26      *                                                                       *
27      *    FreeRTOS provides completely free yet professionally developed,    *
28      *    robust, strictly quality controlled, supported, and cross          *
29      *    platform software that is more than just the market leader, it     *
30      *    is the industry's de facto standard.                               *
31      *                                                                       *
32      *    Help yourself get started quickly while simultaneously helping     *
33      *    to support the FreeRTOS project by purchasing a FreeRTOS           *
34      *    tutorial book, reference manual, or both:                          *
35      *    http://www.FreeRTOS.org/Documentation                              *
36      *                                                                       *
37     ***************************************************************************
38
39     http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading
40     the FAQ page "My application does not run, what could be wrong?".  Have you
41     defined configASSERT()?
42
43     http://www.FreeRTOS.org/support - In return for receiving this top quality
44     embedded software for free we request you assist our global community by
45     participating in the support forum.
46
47     http://www.FreeRTOS.org/training - Investing in training allows your team to
48     be as productive as possible as early as possible.  Now you can receive
49     FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
50     Ltd, and the world's leading authority on the world's leading RTOS.
51
52     http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
53     including FreeRTOS+Trace - an indispensable productivity tool, a DOS
54     compatible FAT file system, and our tiny thread aware UDP/IP stack.
55
56     http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
57     Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
58
59     http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
60     Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS
61     licenses offer ticketed support, indemnification and commercial middleware.
62
63     http://www.SafeRTOS.com - High Integrity Systems also provide a safety
64     engineered and independently SIL3 certified version for use in safety and
65     mission critical applications that require provable dependability.
66
67     1 tab == 4 spaces!
68 */
69
70 /*
71 Changes from V3.2.4
72
73         + Modified the default MAC address as the one used previously was not liked
74           by some routers.
75
76 */
77
78 #ifndef SAM_7_EMAC_H
79 #define SAM_7_EMAC_H
80
81 /* MAC address definition.  The MAC address must be unique on the network. */
82 #define emacETHADDR0 0
83 #define emacETHADDR1 0xbd
84 #define emacETHADDR2 0x33
85 #define emacETHADDR3 0x06
86 #define emacETHADDR4 0x68
87 #define emacETHADDR5 0x22
88
89 /* The IP address being used. */
90 #define emacIPADDR0 172
91 #define emacIPADDR1 25
92 #define emacIPADDR2 218
93 #define emacIPADDR3 205
94
95 /* The gateway address being used. */
96 #define emacGATEWAY_ADDR0 172
97 #define emacGATEWAY_ADDR1 25
98 #define emacGATEWAY_ADDR2 218
99 #define emacGATEWAY_ADDR3 3
100
101 /* The network mask being used. */
102 #define emacNET_MASK0 255
103 #define emacNET_MASK1 255
104 #define emacNET_MASK2 0
105 #define emacNET_MASK3 0
106
107 /*
108  * Initialise the EMAC driver.  If successful a semaphore is returned that
109  * is used by the EMAC ISR to indicate that Rx packets have been received.
110  * If the initialisation fails then NULL is returned.
111  */
112 SemaphoreHandle_t xEMACInit( void );
113
114 /*
115  * Send ulLength bytes from pcFrom.  This copies the buffer to one of the
116  * EMAC Tx buffers, then indicates to the EMAC that the buffer is ready.
117  * If lEndOfFrame is true then the data being copied is the end of the frame
118  * and the frame can be transmitted. 
119  */
120 long lEMACSend( char *pcFrom, unsigned long ulLength, long lEndOfFrame );
121
122 /*
123  * Frames can be read from the EMAC in multiple sections.
124  * Read ulSectionLength bytes from the EMAC receive buffers to pcTo.  
125  * ulTotalFrameLength is the size of the entire frame.  Generally vEMACRead
126  * will be repetedly called until the sum of all the ulSectionLenths totals
127  * the value of ulTotalFrameLength.
128  */
129 void vEMACRead( char *pcTo, unsigned long ulSectionLength, unsigned long ulTotalFrameLength );
130
131 /*
132  * The EMAC driver and interrupt service routines are defined in different 
133  * files as the driver is compiled to THUMB, and the ISR to ARM.  This function
134  * simply passes the semaphore used to communicate between the two.
135  */
136 void vPassEMACSemaphore( SemaphoreHandle_t xCreatedSemaphore );
137
138 /* 
139  * Called by the Tx interrupt, this function traverses the buffers used to
140  * hold the frame that has just completed transmission and marks each as
141  * free again.
142  */
143 void vClearEMACTxBuffer( void );
144
145 /*
146  * Suspend on a semaphore waiting either for the semaphore to be obtained 
147  * or a timeout.  The semaphore is used by the EMAC ISR to indicate that
148  * data has been received and is ready for processing.
149  */
150 void vEMACWaitForInput( void );
151
152 /*
153  * Return the length of the next frame in the receive buffers.
154  */
155 unsigned long ulEMACInputLength( void );
156
157 #endif