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

Subversion Repositories plasma

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

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 205 rhoads
#ifndef __TCPIP_H__
13
#define __TCPIP_H__
14 155 rhoads
#define PACKET_SIZE           600
15 164 rhoads
#define FRAME_COUNT           100
16 173 rhoads
#define FRAME_COUNT_WINDOW    50
17
#define FRAME_COUNT_SYNC      50
18
#define FRAME_COUNT_SEND      10
19
#define FRAME_COUNT_RCV       5
20 164 rhoads
#define RETRANSMIT_TIME       3
21 173 rhoads
#define SOCKET_TIMEOUT        12
22 155 rhoads
 
23
typedef enum IPMode_e {
24
   IP_MODE_UDP,
25 208 rhoads
   IP_MODE_TCP,
26
   IP_MODE_PING
27 155 rhoads
} IPMode_e;
28
 
29
typedef enum IPState_e {
30
   IP_LISTEN,
31 208 rhoads
   IP_PING,
32 155 rhoads
   IP_UDP,
33
   IP_SYN,
34
   IP_TCP,
35
   IP_FIN_CLIENT,
36
   IP_FIN_SERVER,
37
   IP_CLOSED
38
} IPState_e;
39
 
40
typedef void (*IPFuncPtr)();
41
 
42
typedef struct IPFrame {
43
   uint8 packet[PACKET_SIZE];
44
   struct IPFrame *next, *prev;
45
   struct IPSocket *socket;
46
   uint32 seqEnd;
47
   uint16 length, timeout;
48
   uint8 state, retryCnt;
49
} IPFrame;
50
 
51
typedef struct IPSocket {
52
   struct IPSocket *next, *prev;
53
   IPState_e state;
54
   uint32 seq;
55
   uint32 seqReceived;
56 164 rhoads
   uint32 seqWindow;
57 155 rhoads
   uint32 ack;
58
   uint32 timeout;
59 230 rhoads
   uint32 timeoutReset;
60 155 rhoads
   uint8 headerSend[38];
61
   uint8 headerRcv[38];
62
   struct IPFrame *frameReadHead;
63
   struct IPFrame *frameReadTail;
64
   int readOffset;
65
   struct IPFrame *frameSend;
66
   int sendOffset;
67
   IPFuncPtr funcPtr;
68
   IPFuncPtr userFunc;
69
   void *userPtr;
70
   uint32 userData;
71
} IPSocket;
72
 
73
//ethernet.c
74
void EthernetSendPacket(const unsigned char *packet, int length);
75
 
76
//tcpip.c
77 208 rhoads
void IPInit(IPFuncPtr frameSendFunction);
78 156 rhoads
IPFrame *IPFrameGet(int freeCount);
79 247 rhoads
int IPProcessEthernetPacket(IPFrame *frameIn, int length);
80 155 rhoads
void IPTick(void);
81
 
82 208 rhoads
IPSocket *IPOpen(IPMode_e mode, uint32 ipAddress, uint32 port, IPFuncPtr funcPtr);
83
void IPWriteFlush(IPSocket *socket);
84
uint32 IPWrite(IPSocket *socket, const uint8 *buf, uint32 length);
85
uint32 IPRead(IPSocket *socket, uint8 *buf, uint32 length);
86
void IPClose(IPSocket *socket);
87
void IPPrintf(IPSocket *socket, char *message);
88 216 rhoads
void IPResolve(char *mame, IPFuncPtr resolvedFunc, void *arg);
89 208 rhoads
uint32 IPAddressSelf(void);
90 155 rhoads
 
91
//http.c
92
#define HTML_LENGTH_CALLBACK  -2
93
#define HTML_LENGTH_LIST_END  -1
94
typedef struct PageEntry_s {
95
   const char *name;
96
   int length;
97
   const char *page;
98
} PageEntry_t;
99
void HttpInit(const PageEntry_t *Pages, int UseFiles);
100
 
101 208 rhoads
//html.c
102
void HtmlInit(int UseFiles);
103
 
104
//netutil.c
105
typedef struct {
106
   char *name;
107
   int mode;
108
   void (*func)();
109
} TelnetFunc_t;
110
void FtpdInit(int UseFiles);
111
IPSocket *FtpTransfer(uint32 ip, char *user, char *passwd,
112
                      char *filename, uint8 *buf, int size,
113
                      int send, void (*callback)(uint8 *data, int size));
114
void TftpdInit(void);
115
IPSocket *TftpTransfer(uint32 ip, char *filename, uint8 *buffer, int size,
116
                       void (*callback)(uint8 *data, int bytes));
117
void TelnetInit(TelnetFunc_t *funcList);
118
void ConsoleInit(void);
119
 
120 205 rhoads
#endif //__TCPIP_H__

powered by: WebSVN 2.1.0

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