Der TCP Stack fuer Mikrocontroller (tcp.c)


Funktionen

void tcp_init (void)
 Hier wird der TCP Initialisiert. Hier wird der TCP-Timeouthandler Registriert beim Timer1. Danach wird die Funktion alle 1000ms aufgerufen und alle Offenen kontrolliert.
void tcp (unsigned int packet_lenght, unsigned char *ethernetbuffer)
 Die TCP-Funktion die aufgerufen wird wenn ein Packet eintrifft. Hier findet die Bearbeitung der eintreffenden Packete statt. Das Packet wird einer Verbindung zugeordnet oder einen offenen Port wenn die in die TCP_PORT Liste eingetragen ist. Danach wird es je nach Flag bearbeitet.
void TCPTimeOutHandler (void)
 Der TCP-Timeouthandler Dieser Handler schaut zyklisch in alle Sockets und verringert den Timeoutwert. Wenn ein Timeoutwert 0 erreicht hat, wird das Socket geschlossen und der Connectionstats richtig gesetz.
unsigned int Getfreesocket (void)
 Holt das naechste freie Socket.
unsigned int GetSocket (unsigned char *ethernetbuffer)
 Ordnet das Packet einen Socket zu.
unsigned int RegisterSocket (unsigned char *ethernetbuffer)
void MakeTCPheader (unsigned int Socket, unsigned char TCP_flags, unsigned int Datalenght, unsigned int Windowsize, unsigned char *ethernetbuffer)
unsigned int CopyTCPdata2socketbuffer (unsigned int Socket, unsigned int Datalenght, unsigned char *ethernetbuffer)
 Kopiert die Daten auf den TCP-packet in den Socketpuffer.
unsigned int RegisterTCPPort (unsigned int Port)
 Registriert einen Port auf den gelauscht wird für einegehende Verbindungen.
void UnRegisterTCPPort (unsigned int Port)
 Traegt einen Port aus der Liste der Port aus auf denen gelauscht werden soll.
unsigned int CheckPortInList (unsigned int Port)
 Holt empfangende Daten bis zum "\r\n" aus den Socketpuffer.
unsigned int CheckPortRequest (unsigned int Port)
 Schaut ob auf einen Port ein Verbindung eingegangen ist.
unsigned int CheckSocketState (unsigned int Socket)
 Gibt den Status des Socket aus.
void CloseTCPSocket (unsigned int Socket)
 Schliesst ein Socket und Beendet die TCP-Verbindung.
void SendData_RPE (unsigned int Socket, unsigned int Datalenght, unsigned char *Sendbuffer, unsigned char Mode)
 Sendet Daten ueber ein Socket aus dem RAM/FLASH/EEPROM.
unsigned int PutSocketData_RPE (unsigned int Socket, unsigned int Datalenght, unsigned char *Sendbuffer, unsigned char Mode)
 Sendet Daten ueber ein Socket aus dem RAM/FLASH/EEPROM.
unsigned int PutSocketData_P (unsigned int Socket, unsigned int Datalenght, const prog_char *Sendbuffer)
 Sendet Daten ueber ein Socket aus dem FLASH.
unsigned int PutSocketData (unsigned int Socket, unsigned int Datalenght, unsigned char *Sendbuffer)
 Sendet Daten ueber ein Socket aus dem RAM.
unsigned int GetSocketNextLine (unsigned int Socket, unsigned int bufferlen, unsigned char *buffer)
 Holt empfangende Daten bis zum "\r\n" aus den Socketpuffer.
unsigned int GetSocketData (unsigned int Socket, unsigned int bufferlen, unsigned char *buffer)
 Holt empfangende Daten aus den Socketpuffer.
unsigned int Connect2IP (unsigned long IP, unsigned int Port)
 Baut eine TCP-Verbindung zu einer IP-Adresse auf.

Variablen

unsigned int TXErrorCounter = 0
unsigned int RXErrorCounter = 0
TCP_SOCKET TCP_sockettable [MAX_TCP_CONNECTIONS]
TCP_PORT TCP_porttable [MAX_LISTEN_PORTS]

Ausführliche Beschreibung

 #include "tcp.h" 
Uebersicht
Der TCP-Stack fuer Mikrocontroller. Behandelt komplett den TCP-Stack mit Verbindungsaufbau, Abbau und halten. Es werden Ereignisse wie bei Timeouts oder Retransmisions behandelt.

Dokumentation der Funktionen

unsigned int CheckPortInList unsigned int  Port  ) 
 

Holt empfangende Daten bis zum "\r\n" aus den Socketpuffer.

Parameter:
Port Der Port der gecheckt werden soll.
Rückgabewerte:
0x0 wenn der Port in der Liste ist und 0xffff wenn er nicht in der Liste ist.

unsigned int CheckPortRequest unsigned int  Port  ) 
 

Schaut ob auf einen Port ein Verbindung eingegangen ist.

Parameter:
Port Der Port der abgefragt wird.
Rückgabe:
Im Erfolgsfall die Socketnummer, im Fehlerfall 0xffff

unsigned int CheckSocketState unsigned int  Socket  ) 
 

Gibt den Status des Socket aus.

Parameter:
Socket Die Socketnummer vom dem der Status zurueckgegeben werden soll.
Rückgabe:
Der Socketstate

void CloseTCPSocket unsigned int  Socket  ) 
 

Schliesst ein Socket und Beendet die TCP-Verbindung.

Parameter:
Socket Die Socketnummer die geschlossen werden soll.

unsigned int Connect2IP unsigned long  IP,
unsigned int  Port
 

Baut eine TCP-Verbindung zu einer IP-Adresse auf.

Parameter:
IP Die IP-Adresse des Zielhost.
Port Ziel-Port des Zielhost.
Rückgabewerte:
Socket Die Socketnummer der aufgebauten verbindung oder 0xffff im Fehlerfall.

unsigned int CopyTCPdata2socketbuffer unsigned int  Socket,
unsigned int  Datalenght,
unsigned char *  ethernetbuffer
 

Kopiert die Daten auf den TCP-packet in den Socketpuffer.

Parameter:
Socket Die Socketnummer die zum versnden benutzt werden soll.
Datalenght Die größe der Daten in Bytes.
ethernetbuffer Zeiger auf den Speicher wo die Daten hin kopiert werden soll.
Rückgabewerte:
0 

unsigned int Getfreesocket void   ) 
 

Holt das naechste freie Socket.

Warnung:
Die Funktion wir in der tcp_init() beim timerinterrupt registiert und fortan zyklisch aufgerufen.
Rückgabewerte:
SOCKET Gibt die Nummer des naechsten Freien SOcket.

unsigned int GetSocket unsigned char *  ethernetbuffer  ) 
 

Ordnet das Packet einen Socket zu.

Parameter:
ethernetbuffer Zeiger auf den Ethernetpuffer.
Rückgabewerte:
Socket Im Erfolgsfall die Socketnummer, im Fehlerfall 0xffff

unsigned int GetSocketData unsigned int  Socket,
unsigned int  bufferlen,
unsigned char *  buffer
 

Holt empfangende Daten aus den Socketpuffer.

Parameter:
Socket Die Socketnummer die zum versnden benutzt werden soll.
bufferlen Die größe des Puffer in den die Daten gespeichert werden sollen.
buffer Zeiger auf den Speicher wo die Daten hin kopiert werden soll.
Rückgabewerte:
Die Anzahl der kopierten Bytes.

unsigned int GetSocketNextLine unsigned int  Socket,
unsigned int  bufferlen,
unsigned char *  buffer
 

Holt empfangende Daten bis zum "\r\n" aus den Socketpuffer.

Parameter:
Socket Die Socketnummer die zum versnden benutzt werden soll.
bufferlen Die größe des Puffer in den die Daten gespeichert werden sollen.
buffer Zeiger auf den Speicher wo die Daten hin kopiert werden soll.
Rückgabewerte:
Die Anzahl der kopiert Bytes.

unsigned int PutSocketData unsigned int  Socket,
unsigned int  Datalenght,
unsigned char *  Sendbuffer
 

Sendet Daten ueber ein Socket aus dem RAM.

Parameter:
Socket Die Socketnummer die zum versnden benutzt werden soll.
Datalenght Die Datenlaenge in Bytes die sersendet werden soll.
Sendbuffer Zeiger auf die Dten im RAM der versendet werden soll.
Rückgabe:
NONE

unsigned int PutSocketData_P unsigned int  Socket,
unsigned int  Datalenght,
const prog_char *  Sendbuffer
 

Sendet Daten ueber ein Socket aus dem FLASH.

Parameter:
Socket Die Socketnummer die zum versnden benutzt werden soll.
Datalenght Die Datenlaenge in Bytes die sersendet werden soll.
Sendbuffer Zeiger auf die Daten im FLASH der versendet werden soll.
Rückgabe:
NONE

unsigned int PutSocketData_RPE unsigned int  Socket,
unsigned int  Datalenght,
unsigned char *  Sendbuffer,
unsigned char  Mode
 

Sendet Daten ueber ein Socket aus dem RAM/FLASH/EEPROM.

Parameter:
Socket Die Socketnummer die zum versnden benutzt werden soll.
Datalenght Die Datenlaenge in Bytes die sersendet werden soll.
Sendbuffer Zeiger auf die Daten im FLASH der versendet werden soll.
Mode Wie der Zeiger interpretiert werden soll, als RAM/FLASH/EEPROM.
Rückgabe:
NONE

unsigned int RegisterTCPPort unsigned int  Port  ) 
 

Registriert einen Port auf den gelauscht wird für einegehende Verbindungen.

Parameter:
Port Der Port auf den Gelauscht werden soll
Rückgabewerte:
Im Erfolgsfall 0, im Fehlerfall 0xffff

void SendData_RPE unsigned int  Socket,
unsigned int  Datalenght,
unsigned char *  Sendbuffer,
unsigned char  Mode
 

Sendet Daten ueber ein Socket aus dem RAM/FLASH/EEPROM.

Parameter:
Socket Die Socketnummer die zum versnden benutzt werden soll.
Datalenght Die Datenlaenge in Bytes die sersendet werden soll.
Sendbuffer Zeiger auf die Dten im RAM der versendet werden soll.
Mode Art des Zeigers (RAM/FLASH/EEPROM).
Rückgabe:
NONE

void tcp unsigned int  packet_lenght,
unsigned char *  ethernetbuffer
 

Die TCP-Funktion die aufgerufen wird wenn ein Packet eintrifft. Hier findet die Bearbeitung der eintreffenden Packete statt. Das Packet wird einer Verbindung zugeordnet oder einen offenen Port wenn die in die TCP_PORT Liste eingetragen ist. Danach wird es je nach Flag bearbeitet.

 #include "test.h"
 void main( void)
Parameter:
packet_lenght Groesse des Packetes.
ethernetbuffer Zeiger auf den Ethernetbuffer, dieser enthaelt noch die kompletten Header aller Layer.
Rückgabewerte:
NONE 

void TCPTimeOutHandler void   ) 
 

Der TCP-Timeouthandler Dieser Handler schaut zyklisch in alle Sockets und verringert den Timeoutwert. Wenn ein Timeoutwert 0 erreicht hat, wird das Socket geschlossen und der Connectionstats richtig gesetz.

Warnung:
Die Funktion wir in der tcp_init() beim timerinterrupt registiert und fortan zyklisch aufgerufen.
Rückgabewerte:
NONE 

void UnRegisterTCPPort unsigned int  Port  ) 
 

Traegt einen Port aus der Liste der Port aus auf denen gelauscht werden soll.

Parameter:
Port Der Port auf den Gelauscht werden soll
Rückgabe:
Im Erfolgsfall 0, im Fehlerfall 0xffff


Erzeugt am Thu Oct 12 16:41:58 2006 für MikroEthernetBoard von  doxygen 1.4.6