rtl8019dev.c
00001 #include "net/uip.h"
00002 #include "dev/rtl8019dev.h"
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #define IP_TCP_HEADER_LENGTH 40
00027 #define TOTAL_HEADER_LENGTH (IP_TCP_HEADER_LENGTH+ETHERNET_HEADER_LENGTH)
00028
00029
00030
00031 void RTL8019dev_init(void)
00032 {
00033 initRTL8019();
00034 }
00035
00036
00037 void RTL8019dev_send(void)
00038 {
00039 RTL8019beginPacketSend(uip_len);
00040
00041
00042 if( uip_len <= TOTAL_HEADER_LENGTH ) {
00043 RTL8019sendPacketData(uip_buf, uip_len);
00044 } else {
00045 uip_len -= TOTAL_HEADER_LENGTH;
00046 RTL8019sendPacketData(uip_buf, TOTAL_HEADER_LENGTH);
00047 RTL8019sendPacketData((unsigned char *)uip_appdata, uip_len);
00048 }
00049
00050 RTL8019endPacketSend();
00051 }
00052
00053
00054
00055 unsigned int RTL8019dev_poll(void)
00056 {
00057 unsigned int packetLength;
00058
00059 packetLength = RTL8019beginPacketRetreive();
00060
00061
00062 if( !packetLength )
00063 return 0;
00064
00065
00066 if( packetLength > UIP_BUFSIZE )
00067 {
00068 RTL8019endPacketRetreive();
00069 return 0;
00070 }
00071
00072
00073 RTL8019retreivePacketData( uip_buf, packetLength );
00074 RTL8019endPacketRetreive();
00075
00076 return packetLength;
00077 }
00078
00079
00080 void RTL8019dev_exit(void)
00081 {
00082 }