First version of the AVR port
diff --git a/contiki-avr/uip/rtl8019.h b/contiki-avr/uip/rtl8019.h
new file mode 100644
index 0000000..240beff
--- /dev/null
+++ b/contiki-avr/uip/rtl8019.h
@@ -0,0 +1,265 @@
+#ifndef __RTL8019_H__
+#define __RTL8019_H__
+
+/*****************************************************************************
+* Module Name: Realtek 8019AS Driver
+*
+* Created By: Louis Beaudoin (www.embedded-creations.com)
+*
+* Original Release: September 21, 2002
+*
+* Module Description:
+* Provides functions to initialize the Realtek 8019AS, and send and retreive
+* packets
+*
+* September 30, 2002 - Louis Beaudoin
+* Receive functions modified to handle errors encountered when receiving a
+* fast data stream. Functions now manually retreive data instead of
+* using the send packet command. Interface improved by checking for
+* overruns and data in the buffer internally.
+* Corrected the overrun function - overrun flag was not reset after overrun
+* Added support for the Imagecraft Compiler
+* Added support to communicate with the NIC using general I/O ports
+*
+*****************************************************************************/
+
+/*#include "delay.h"*/
+
+#include "compiler.h"
+
+
+/*****************************************************************************
+* RTL8019beginPacketSend(unsigned int packetLength)
+* Args: unsigned int - length of the Ethernet frame (see note)
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sets up the NIC to send a packet
+* Notes: The NIC will not send packets less than 60 bytes long (the min
+* Ethernet frame length. The transmit length is automatically
+* increased to 60 bytes if packetLength is < 60
+*****************************************************************************/
+void RTL8019beginPacketSend(unsigned int packetLength);
+
+
+/*****************************************************************************
+* RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length)
+* Args: 1. unsigned char * localBuffer - Pointer to the beginning of
+* the buffer to load into the NIC
+* 2. unsigned char length - number of bytes to copy to
+* the NIC
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Loads length # of bytes from a local buffer to the transmit
+* packet buffer
+* Notes: RTL8019beginPacketSend() must be called before sending
+* any data.
+* Several calls to RTL8019retreivePacketData() may be made to
+* copy packet data from different buffers
+*****************************************************************************/
+void RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length);
+
+
+/*****************************************************************************
+* RTL8019endPacketSend()
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Ends a packet send operation and instructs the NIC to transmit
+* the frame over the network
+*****************************************************************************/
+void RTL8019endPacketSend(void);
+
+
+/*****************************************************************************
+* initRTL8019(void);
+*
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sets up the RTL8019 NIC hardware interface, and initializes
+* the buffers and configuration of the NIC
+*****************************************************************************/
+void initRTL8019(void);
+
+
+/*****************************************************************************
+* processRTL8019Interrupt(void);
+*
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Reads the NIC's ISR register looking for a receive buffer
+* overrun - which is then handled.
+* Notes: The function does not need to be called in response to an
+* interrupt. The function can be polled and the NIC's INT
+* line not used. This function should be called before
+* attempting to retreive a packet from the NIC
+*****************************************************************************/
+void processRTL8019Interrupt(void);
+
+
+/*****************************************************************************
+* unsigned char RTL8019ReceiveEmpty(void);
+*
+* Returns: non-zero (true) if buffer is empty, zero if data in buffer
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Compares the BNRY and CURR receive buffer pointers to see if
+* there is a packet in the receive buffer
+* ** Removed as of version 0.60.1 **
+*****************************************************************************/
+//unsigned char RTL8019ReceiveEmpty(void);
+
+
+/*****************************************************************************
+* unsigned int RTL8019beginPacketRetreive()
+* Returns: unsigned int - length of the Ethernet frame (see note)
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sets up the NIC to retreive a packet
+* Notes: The size returned is the size of all the data in the Ethernet
+* frame minus the Ethernet checksum. This may include unused
+* trailer bytes appended if data is less than the minimum
+* Ethernet frame length (60 bytes). A size of zero indicates
+* there are no packets available.
+* A call to RTL8019beginPacketRetreive() must be followed by a
+* call to RTL8019endPacketRetreive() regardless if data is
+* retreived, unless 0 is returned.
+*****************************************************************************/
+unsigned int RTL8019beginPacketRetreive(void);
+
+
+/*****************************************************************************
+* RTL8019retreivePacketData(unsigned char * localBuffer, unsigned int length)
+* Args: 1. unsigned char * localBuffer - Pointer to the beginning of
+* the buffer to store the ethernet frame.
+* 2. unsigned char length - number of bytes to copy to
+* localBuffer
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Loads length # of bytes from the receive packet buffer to
+* a local buffer
+* Notes: RTL8019beginPacketRetreive() must be called before retreiving
+* any data.
+* Several calls to RTL8019retreivePacketData() may be made to
+* copy packet data to different buffers
+*****************************************************************************/
+void RTL8019retreivePacketData(unsigned char * localBuffer,
+ unsigned int length);
+
+/*****************************************************************************
+* RTL8019endPacketRetreive()
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Ends a packet retreive operation begun by calling
+* RTL8019beginPacketRetreive(). The NIC buffer space used by
+* the retreived packet is freed
+* Notes: A packet may be removed from the buffer without being read
+* by calling RTL8019endPacketRetreive() after
+* RTL8019beginPacketRetreive().
+*****************************************************************************/
+void RTL8019endPacketRetreive(void);
+
+
+/*****************************************************************************
+*
+* AVR hardware setup
+*
+* External SRAM Interface:
+* The five NIC address lines are taken from A8-A12 (uses the
+* non-multiplexed address port so no latch is required)
+*
+* General I/O Interface:
+* Two full ports are required for the address and data buses. Two pins
+* from another port are used to control the read and write lines
+*
+* One output pin is required for hard resetting the NIC
+*
+*****************************************************************************/
+
+// set to 1 to use the External SRAM Interface - 0 for General I/O
+#define MEMORY_MAPPED_NIC 1
+
+#if MEMORY_MAPPED_NIC /*** NIC Interface through External SRAM Interface ****/
+
+// NIC is mapped from address 0x8000 - 0x9F00
+#define MEMORY_MAPPED_RTL8019_OFFSET 0x8300
+
+#else /************ NIC Interface through General I/O *******************/
+
+// RTL8019 address port
+#define RTL8019_ADDRESS_PORT PORTC
+#define RTL8019_ADDRESS_DDR DDRC
+
+// RTL8019 data port
+#define RTL8019_DATA_PORT PORTA
+#define RTL8019_DATA_DDR DDRA
+#define RTL8019_DATA_PIN PINA
+
+// RTL8019 control port
+#define RTL8019_CONTROL_PORT PORTD
+#define RTL8019_CONTROL_DDR DDRD
+#define RTL8019_CONTROL_READPIN PD7
+#define RTL8019_CONTROL_WRITEPIN PD6
+
+
+// macros to control the read and write pins
+#define RTL8019_CLEAR_READ cbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_READPIN)
+#define RTL8019_SET_READ sbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_READPIN)
+#define RTL8019_CLEAR_WRITE cbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_WRITEPIN)
+#define RTL8019_SET_WRITE sbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_WRITEPIN)
+
+#endif /** NIC Interface **/
+
+
+
+// RTL RESET - Port B pin 0
+#define RTL8019_RESET_PORT PORTE
+#define RTL8019_RESET_DDR DDRE
+#define RTL8019_RESET_PIN PORTE0
+
+
+
+
+
+/*****************************************************************************
+*
+* Ethernet constants
+*
+*****************************************************************************/
+#define ETHERNET_MIN_PACKET_LENGTH 0x3C
+#define ETHERNET_HEADER_LENGTH 0x0E
+
+
+
+/*****************************************************************************
+*
+* MAC address assigned to the RTL8019
+*
+*****************************************************************************/
+/*#define MYMAC_0 '0'
+#define MYMAC_1 'F'
+#define MYMAC_2 'F'
+#define MYMAC_3 'I'
+#define MYMAC_4 'C'
+#define MYMAC_5 'E'*/
+
+#define MYMAC_0 0x00
+#define MYMAC_1 0x06
+#define MYMAC_2 0x98
+#define MYMAC_3 0x01
+#define MYMAC_4 0x02
+#define MYMAC_5 0x26
+
+
+
+
+
+
+
+
+
+
+
+#endif /* __RTL8019_H__ */