/* * @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