]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/EthDev.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_LPC1768_GCC_RedSuite / src / webserver / EthDev.h
1 /*\r
2  * @file:    EthDev.h\r
3  * @purpose: Ethernet Device Definitions\r
4  * @version: V1.10\r
5  * @date:    24. Feb. 2009\r
6  *----------------------------------------------------------------------------\r
7  *\r
8  * Copyright (C) 2009 ARM Limited. All rights reserved.\r
9  *\r
10  * ARM Limited (ARM) is supplying this software for use with Cortex-M3\r
11  * processor based microcontrollers.  This file can be freely distributed\r
12  * within development tools that are supporting such ARM based processors.\r
13  *\r
14  * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
15  * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
16  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
17  * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
18  * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
19  *\r
20  */\r
21 \r
22 #ifndef _ETHDEV__H\r
23 #define _ETHDEV__H\r
24 \r
25 #ifndef NULL\r
26  #define NULL   0\r
27 #endif\r
28 \r
29 /*----------------------------------------------------------------------------\r
30   Ethernet Device Defines\r
31  *----------------------------------------------------------------------------*/\r
32 #define EthDev_ADDR_SIZE        6                      /*!< Ethernet Address size in bytes */\r
33 #define EthDev_MTU_SIZE         1514                   /*!< Maximum Transmission Unit      */\r
34 \r
35 \r
36 /*----------------------------------------------------------------------------\r
37   Ethernet Device Configuration and Control Command Defines\r
38  *----------------------------------------------------------------------------*/\r
39 typedef enum {\r
40   EthDev_LINK_DOWN              = 0,                   /*!< Ethernet link not established */\r
41   EthDev_LINK_UP                = 1,                   /*!< Ethernet link established */\r
42 } EthDev_LINK;\r
43 \r
44 typedef enum {\r
45   EthDev_SPEED_10M              = 0,                   /*!< 10.0 Mbps link speed  */\r
46   EthDev_SPEED_100M             = 1,                   /*!< 100.0 Mbps link speed */\r
47   EthDev_SPEED_1000M            = 2,                   /*!< 1.0 Gbps link speed   */\r
48 } EthDev_SPEED;\r
49 \r
50 typedef enum {\r
51   EthDev_DUPLEX_HALF            = 0,                   /*!< Link half duplex */\r
52   EthDev_DUPLEX_FULL            = 1,                   /*!< Link full duplex */\r
53 } EthDev_DUPLEX;\r
54 \r
55 typedef enum {\r
56   EthDev_MODE_AUTO              = 0,\r
57   EthDev_MODE_10M_FULL          = 1,\r
58   EthDev_MODE_10M_HALF          = 2,\r
59   EthDev_MODE_100M_FULL         = 3,\r
60   EthDev_MODE_100M_HALF         = 4,\r
61   EthDev_MODE_1000M_FULL        = 5,\r
62   EthDev_MODE_1000M_HALF        = 6,\r
63 } EthDev_MODE;\r
64 \r
65 typedef struct {\r
66   EthDev_LINK   Link   : 1;\r
67   EthDev_DUPLEX Duplex : 1;\r
68   EthDev_SPEED  Speed  : 2;\r
69 } EthDev_STATUS;\r
70 \r
71 \r
72 /*----------------------------------------------------------------------------\r
73   Ethernet Device IO Block Structure\r
74  *----------------------------------------------------------------------------*/\r
75 typedef struct {\r
76 \r
77    /* Initialized by the user application before call to Init. */\r
78    EthDev_MODE   Mode;\r
79    unsigned char HwAddr[EthDev_ADDR_SIZE];\r
80    void         *(*RxFrame)      (int size);\r
81    void          (*RxFrameReady) (int size);\r
82 \r
83    /* Initialized by Ethernet driver. */\r
84    int           (*Init)       (void);\r
85    int           (*UnInit)     (void);\r
86    int           (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr);\r
87    int           (*TxFrame)    (void *pData, int size);\r
88    void          (*Lock)       (void);\r
89    void          (*UnLock)     (void);\r
90    EthDev_STATUS (*LinkChk)    (void);\r
91 } EthDev_IOB;\r
92 \r
93 \r
94 /*\r
95  * Look for received data.  If data is found then uip_buf is assigned to the\r
96  * new data and the length of the data is returned.  If no data is found then\r
97  * uip_buf is not updated and 0 is returned.\r
98  */\r
99 unsigned long   ulGetEMACRxData( void );\r
100 \r
101 /*\r
102  * Send usTxDataLen bytes from uip_buf.\r
103  */\r
104 void vSendEMACTxData( unsigned short usTxDataLen );\r
105 \r
106 /*\r
107  * Prepare the Ethernet hardware ready for TCP/IP comms.\r
108  */\r
109 long lEMACInit(void);\r
110 \r
111 #endif\r