| /* | |
| * @file: EthDev.h | |
| * @purpose: Ethernet Device Definitions | |
| * @version: V1.10 | |
| * @date: 24. Feb. 2009 | |
| *---------------------------------------------------------------------------- | |
| * | |
| * Copyright (C) 2009 ARM Limited. All rights reserved. | |
| * | |
| * ARM Limited (ARM) is supplying this software for use with Cortex-M3 | |
| * processor based microcontrollers. This file can be freely distributed | |
| * within development tools that are supporting such ARM based processors. | |
| * | |
| * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED | |
| * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF | |
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. | |
| * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR | |
| * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. | |
| * | |
| */ | |
| #ifndef _ETHDEV__H | |
| #define _ETHDEV__H | |
| #ifndef NULL | |
| #define NULL 0 | |
| #endif | |
| /*---------------------------------------------------------------------------- | |
| Ethernet Device Defines | |
| *----------------------------------------------------------------------------*/ | |
| #define EthDev_ADDR_SIZE 6 /*!< Ethernet Address size in bytes */ | |
| #define EthDev_MTU_SIZE 1514 /*!< Maximum Transmission Unit */ | |
| /*---------------------------------------------------------------------------- | |
| Ethernet Device Configuration and Control Command Defines | |
| *----------------------------------------------------------------------------*/ | |
| typedef enum { | |
| EthDev_LINK_DOWN = 0, /*!< Ethernet link not established */ | |
| EthDev_LINK_UP = 1, /*!< Ethernet link established */ | |
| } EthDev_LINK; | |
| typedef enum { | |
| EthDev_SPEED_10M = 0, /*!< 10.0 Mbps link speed */ | |
| EthDev_SPEED_100M = 1, /*!< 100.0 Mbps link speed */ | |
| EthDev_SPEED_1000M = 2, /*!< 1.0 Gbps link speed */ | |
| } EthDev_SPEED; | |
| typedef enum { | |
| EthDev_DUPLEX_HALF = 0, /*!< Link half duplex */ | |
| EthDev_DUPLEX_FULL = 1, /*!< Link full duplex */ | |
| } EthDev_DUPLEX; | |
| typedef enum { | |
| EthDev_MODE_AUTO = 0, | |
| EthDev_MODE_10M_FULL = 1, | |
| EthDev_MODE_10M_HALF = 2, | |
| EthDev_MODE_100M_FULL = 3, | |
| EthDev_MODE_100M_HALF = 4, | |
| EthDev_MODE_1000M_FULL = 5, | |
| EthDev_MODE_1000M_HALF = 6, | |
| } EthDev_MODE; | |
| typedef struct { | |
| EthDev_LINK Link : 1; | |
| EthDev_DUPLEX Duplex : 1; | |
| EthDev_SPEED Speed : 2; | |
| } EthDev_STATUS; | |
| /*---------------------------------------------------------------------------- | |
| Ethernet Device IO Block Structure | |
| *----------------------------------------------------------------------------*/ | |
| typedef struct { | |
| /* Initialized by the user application before call to Init. */ | |
| EthDev_MODE Mode; | |
| unsigned char HwAddr[EthDev_ADDR_SIZE]; | |
| void *(*RxFrame) (int size); | |
| void (*RxFrameReady) (int size); | |
| /* Initialized by Ethernet driver. */ | |
| int (*Init) (void); | |
| int (*UnInit) (void); | |
| int (*SetMCFilter)(int NumHwAddr, unsigned char *pHwAddr); | |
| int (*TxFrame) (void *pData, int size); | |
| void (*Lock) (void); | |
| void (*UnLock) (void); | |
| EthDev_STATUS (*LinkChk) (void); | |
| } EthDev_IOB; | |
| /* | |
| * Look for received data. If data is found then uip_buf is assigned to the | |
| * new data and the length of the data is returned. If no data is found then | |
| * uip_buf is not updated and 0 is returned. | |
| */ | |
| unsigned long ulGetEMACRxData( void ); | |
| /* | |
| * Send usTxDataLen bytes from uip_buf. | |
| */ | |
| void vSendEMACTxData( unsigned short usTxDataLen ); | |
| /* | |
| * Prepare the Ethernet hardware ready for TCP/IP comms. | |
| */ | |
| long lEMACInit(void); | |
| #endif |