OpenCores
URL https://opencores.org/ocsvn/plasma/plasma/trunk

Subversion Repositories plasma

[/] [plasma/] [trunk/] [kernel/] [tcpip.h] - Blame information for rev 155

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 155 rhoads
/*--------------------------------------------------------------------
2
 * TITLE: Plasma TCP/IP Protocol Stack
3
 * AUTHOR: Steve Rhoads (rhoadss@yahoo.com)
4
 * DATE CREATED: 4/22/06
5
 * FILENAME: tcpip.h
6
 * PROJECT: Plasma CPU core
7
 * COPYRIGHT: Software placed into the public domain by the author.
8
 *    Software 'as is' without warranty.  Author liable for nothing.
9
 * DESCRIPTION:
10
 *    Plasma TCP/IP Protocol Stack
11
 *--------------------------------------------------------------------*/
12
#define PACKET_SIZE           600
13
#define FRAME_COUNT           50
14
#define FRAME_MIN_COUNT       5
15
#define RETRANSMIT_TIME       4
16
#define SOCKET_TIMEOUT        20
17
 
18
typedef enum IPMode_e {
19
   IP_MODE_UDP,
20
   IP_MODE_TCP
21
} IPMode_e;
22
 
23
typedef enum IPState_e {
24
   IP_LISTEN,
25
   IP_UDP,
26
   IP_SYN,
27
   IP_TCP,
28
   IP_FIN_CLIENT,
29
   IP_FIN_SERVER,
30
   IP_CLOSED
31
} IPState_e;
32
 
33
typedef void (*IPFuncPtr)();
34
 
35
typedef struct IPFrame {
36
   uint8 packet[PACKET_SIZE];
37
   struct IPFrame *next, *prev;
38
   struct IPSocket *socket;
39
   uint32 seqEnd;
40
   uint16 length, timeout;
41
   uint8 state, retryCnt;
42
} IPFrame;
43
 
44
typedef struct IPSocket {
45
   struct IPSocket *next, *prev;
46
   IPState_e state;
47
   uint32 seq;
48
   uint32 seqReceived;
49
   uint32 ack;
50
   uint32 timeout;
51
   uint8 headerSend[38];
52
   uint8 headerRcv[38];
53
   struct IPFrame *frameReadHead;
54
   struct IPFrame *frameReadTail;
55
   int readOffset;
56
   struct IPFrame *frameSend;
57
   int sendOffset;
58
   IPFuncPtr funcPtr;
59
   IPFuncPtr userFunc;
60
   void *userPtr;
61
   uint32 userData;
62
} IPSocket;
63
 
64
//ethernet.c
65
void EthernetSendPacket(const unsigned char *packet, int length);
66
 
67
//tcpip.c
68
void IPInit(IPFuncPtr FrameSendFunction);
69
IPFrame *IPFrameGet(int freeCount, int pend);
70
int IPProcessEthernetPacket(IPFrame *frameIn);
71
void IPTick(void);
72
 
73
IPSocket *IPOpen(IPMode_e Mode, uint32 IPAddress, uint32 Port, IPFuncPtr funcPtr);
74
void IPWriteFlush(IPSocket *Socket);
75
uint32 IPWrite(IPSocket *Socket, const uint8 *Buf, uint32 Length);
76
uint32 IPRead(IPSocket *Socket, uint8 *Buf, uint32 Length);
77
void IPClose(IPSocket *Socket);
78
uint32 IPResolve(char *Name, IPFuncPtr resolvedFunc);
79
 
80
//http.c
81
#define HTML_LENGTH_CALLBACK  -2
82
#define HTML_LENGTH_LIST_END  -1
83
typedef struct PageEntry_s {
84
   const char *name;
85
   int length;
86
   const char *page;
87
} PageEntry_t;
88
void HttpInit(const PageEntry_t *Pages, int UseFiles);
89
 
90
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.