MakingThings
  • Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

SAM7_EMAC.h

00001 /*
00002   FreeRTOS.org V4.1.0 - Copyright (C) 2003-2006 Richard Barry.
00003 
00004   This file is part of the FreeRTOS.org distribution.
00005 
00006   FreeRTOS.org is free software; you can redistribute it and/or modify
00007   it under the terms of the GNU General Public License as published by
00008   the Free Software Foundation; either version 2 of the License, or
00009   (at your option) any later version.
00010 
00011   FreeRTOS.org is distributed in the hope that it will be useful,
00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014   GNU General Public License for more details.
00015 
00016   You should have received a copy of the GNU General Public License
00017   along with FreeRTOS.org; if not, write to the Free Software
00018   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020   A special exception to the GPL can be applied should you wish to distribute
00021   a combined work that includes FreeRTOS.org, without being obliged to provide
00022   the source code for any proprietary components.  See the licensing section
00023   of http://www.FreeRTOS.org for full details of how and when the exception
00024   can be applied.
00025 
00026   ***************************************************************************
00027   See http://www.FreeRTOS.org for documentation, latest information, license
00028   and contact details.  Please ensure to read the configuration and relevant
00029   port sections of the online documentation.
00030   ***************************************************************************
00031 */
00032 
00033 /*
00034 Changes from V3.2.4
00035 
00036   + Modified the default MAC address as the one used previously was not liked
00037     by some routers.
00038 
00039 */
00040 
00041 
00042 #ifndef SAM_7_EMAC_H
00043 #define SAM_7_EMAC_H
00044 
00045 /* MAC address definition.  The MAC address must be unique on the network. */
00046 /* MakingThings: Changed to ints so they can be changed. */
00047 extern char emacETHADDR0;
00048 extern char emacETHADDR1;
00049 extern char emacETHADDR2;
00050 extern char emacETHADDR3;
00051 extern char emacETHADDR4;
00052 extern char emacETHADDR5;
00053 
00054 /* The IP address being used. */
00055 // #define emacIPADDR0 192
00056 // #define emacIPADDR1 168
00057 // #define emacIPADDR2 0
00058 // #define emacIPADDR3 200
00059 
00060 /* The gateway address being used. */
00061 // #define emacGATEWAY_ADDR0 192
00062 // #define emacGATEWAY_ADDR1 168
00063 // #define emacGATEWAY_ADDR2 0
00064 // #define emacGATEWAY_ADDR3 1
00065 // #define emacGATEWAY_ADDR0 172
00066 // #define emacGATEWAY_ADDR1 16
00067 // #define emacGATEWAY_ADDR2 0
00068 // #define emacGATEWAY_ADDR3 1
00069 
00070 /* The network mask being used. */
00071 // #define emacNET_MASK0 255
00072 // #define emacNET_MASK1 255
00073 #define emacNET_MASK2 255
00074 #define emacNET_MASK3 0
00075 
00076 /*
00077  * Initialise the EMAC driver.  If successful a semaphore is returned that
00078  * is used by the EMAC ISR to indicate that Rx packets have been received.
00079  * If the initialisation fails then NULL is returned.
00080  */
00081 xSemaphoreHandle xEMACInit( void );
00082 
00083 /*
00084  * Send ulLength bytes from pcFrom.  This copies the buffer to one of the
00085  * EMAC Tx buffers, then indicates to the EMAC that the buffer is ready.
00086  * If lEndOfFrame is true then the data being copied is the end of the frame
00087  * and the frame can be transmitted. 
00088  */
00089 portLONG lEMACSend( portCHAR *pcFrom, unsigned portLONG ulLength, portLONG lEndOfFrame );
00090 
00091 /*
00092  * Frames can be read from the EMAC in multiple sections.
00093  * Read ulSectionLength bytes from the EMAC receive buffers to pcTo.  
00094  * ulTotalFrameLength is the size of the entire frame.  Generally vEMACRead
00095  * will be repetedly called until the sum of all the ulSectionLenths totals
00096  * the value of ulTotalFrameLength.
00097  */
00098 void vEMACRead( portCHAR *pcTo, unsigned portLONG ulSectionLength, unsigned portLONG ulTotalFrameLength );
00099 
00100 /*
00101  * The EMAC driver and interrupt service routines are defined in different 
00102  * files as the driver is compiled to THUMB, and the ISR to ARM.  This function
00103  * simply passes the semaphore used to communicate between the two.
00104  */
00105 void vPassEMACSemaphore( xSemaphoreHandle xCreatedSemaphore );
00106 
00107 /* 
00108  * Called by the Tx interrupt, this function traverses the buffers used to
00109  * hold the frame that has just completed transmission and marks each as
00110  * free again.
00111  */
00112 void vClearEMACTxBuffer( void );
00113 
00114 /*
00115  * Suspend on a semaphore waiting either for the semaphore to be obtained 
00116  * or a timeout.  The semaphore is used by the EMAC ISR to indicate that
00117  * data has been received and is ready for processing.
00118  */
00119 void vEMACWaitForInput( void );
00120 
00121 /*
00122  * Return the length of the next frame in the receive buffers.
00123  */
00124 unsigned portLONG ulEMACInputLength( void );
00125 
00126 #endif

The Make Controller Kit is an open source project maintained by MakingThings.
MakingThings code is released under the Apache 2.0 license.
Bug tracker, development wiki and status can be found at http://dev.makingthings.com.
This document was last updated on 18 May 2009.