⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp.h

📁 在S3C2440上运行的"电子日历“(支持平年,闰年,星期自动调整). 开发环境是RVDS2.2
💻 H
字号:
/**---------------------版权 (c)----------------------------------------------------------***
***                     作者:颜章健                                                      ***
***                     邮件:jenkinyan@163.com                                           ***
***                                                                                       ***
***---------------------File Info---------------------------------------------------------***
*** 创 建 人:          颜章健                                                            ***
*** 创建日期:          2008-03-27                                                        ***
*** 创建版本:                                                                            ***
*** 文件描述:                                                                            ***
***---------------------------------------------------------------------------------------***
*** 修 订 人:                                                                            ***
*** 修订日期:                                                                            ***
*** 修订版本:                                                                            ***
*** 修订描述:                                                                            ***
***---------------------------------------------------------------------------------------**/
#ifndef	__tcp_h_
#define	__tcp_h_

//#define			USE_TCP_DEBUGER



// TCP协议配置
#define			MAX_TCP_SOCKETS		1		// 用户需要建立的TCP接口数目
#define			TCP_RXWINDOW_SIZE	0
#define			TCP_TXWINDOW_SIZE	1024
//#define			USE_TCP_RX_WINDOW
#define			MAX_TCP_SEND_FAIL	10

#define			NET_TICK_COUNTER	T0TC			
#define			NET_TICK_LIMITED	300000

// TCP错误
#define			TCP_ERR_USER		0
#define			TCP_ERR_NONE		1

// TCP控制标志位,不可修改
#define			TCPFLAG_URG			0x20	
#define			TCPFLAG_ACK			0x10
#define			TCPFLAG_PSH			0x08
#define			TCPFLAG_RST			0x04
#define			TCPFLAG_SYN			0x02
#define			TCPFLAG_FIN			0x01
#define			TCPFLAG_NONE		0x00

// 接口状态
#define			SOCKS_CLOSED		0x00
#define			SOCKS_CONNREQ		0x01
#define			SOCKS_TXSYN			0x02
#define			SOCKS_SYNACK		0x03
#define			SOCKS_OPENED		0x04
#define			SOCKS_SENDREQ		0x05
#define			SOCKS_SENDSTART		0x06
#define			SOCKS_SENDING		0x07
#define			SOCKS_SENDACK		0x08
#define			SOCKS_CLOSEREQ		0x09
#define			SOCKS_TXFIN			0x0a
#define			SOCKS_FINACK		0x0b
#define			SOCKS_RSTREQ		0x0c
#define			SOCKS_RXSYN			0x0d
#define			SOCKS_RXFIN			0x0e
#define			SOCKS_RESET			0x0f
#define			SOCKS_RESTART		0x10	

#define			UREQ_NONE			0x00
#define			UREQ_CLOSE			0x01
#define			UREQ_CONN			0x02
#define			UREQ_RESET			0x03
#define			UREQ_SEND			0x04

typedef	struct	_TCP_WINDOW
{
	uint8		*Start;
	uint8		*End;
	uint16		BufLen;
	
	uint8		*In;
	uint8		*Out;
	volatile	
	uint16		DatLen;
	uint16		Size;
}TCP_WINDOW;

typedef	struct	_TCP_SOCKET
{
//	struct	_TCP_SOCKET	*This;
	struct	_TCP_SOCKET	*Next;

//	uint8		*RxWinBuffer;
//	uint8		*TxWinBuffer;
	#if			TCP_RXWINDOW_SIZE > 0
	TCP_WINDOW	RxWindow;
	#endif
	TCP_WINDOW	TxWindow;

	uint8		RXS;
	uint8		TXS;
	uint8		UREQ;
	
	uint32		Time;
	uint8		TOT;
	uint32		RTT;			// 数据包往返时间RTT(单位:ms)
	uint32		SampRTT;		// 用于采样RTT
	int32		DEV;			// 平均方差
	uint32		Timeout;
	
	uint8		DestAddr[4];	// 对方地址
	uint16		DestPort;		// 对方端口
	uint16		LocalPort;		// 本地端口
	
	uint16		MTU;			// 最大发送单元,创建连接时记录对方最大接收单元
	uint16		MRU;			// 最大接收单元,创建连接时告诉对方最大接收单元
	uint16		DestSize;		// 对方接收窗口大小
	uint32		Seq;			// 本地序列号,创建连接时本地随机生成
	uint32		Ack;			// 本地确认号,创建连接时根据对方序列号生成
	uint32		LastRcvSeq;
	uint32		LastRcvAck;
	
	uint8		*Rxd;			// Added by Yan Zhangjian(C) @ 2008-04-14
	uint16		Rxl;			// Added by Yan Zhangjian(C) @ 2008-04-14
//	uint16		(*send)		(struct	_TCP_SOCKET	*/*This*/,uint8 */*src*/,uint16 /*len*/);
//	uint16		(*recv)		(struct	_TCP_SOCKET	*/*This*/,uint8 */*dst*/,uint16 /*len*/);
//	void		(*connect)	(struct	_TCP_SOCKET	*/*This*/);
//	void		(*close)	(struct	_TCP_SOCKET	*/*This*/);
	void		(*hook)		(struct	_TCP_SOCKET	*/*This*/);
}TCP_SOCKET;


#if				MAX_TCP_SOCKETS >	0
//TCP_SOCKET	*TcpSocketCreate
uint8	TcpSocketCreate
(	TCP_SOCKET	*/*Socket*/,
	uint8	*/*DestAddr*/,	uint16	/*DestPort*/,	
	uint16	/*LocalPort*/,	void	(*/*RecvHook*/)(TCP_SOCKET *)
);
void	TcpSocketDelete(TCP_SOCKET	*/*Socket*/);
uint16	TcpSocketSend(TCP_SOCKET	*/*This*/,uint8 */*src*/,uint16 /*len*/);
uint16	TcpSocketRecv(TCP_SOCKET	*/*This*/,uint8 */*dst*/,uint16 /*len*/);
void	TcpSocketConnect(TCP_SOCKET	*/*This*/);
void	TcpSocketClose(TCP_SOCKET	*/*This*/);
void	TcpSocketReset(TCP_SOCKET	*/*Socket*/);
#endif

void	TcpReceiveTask(void);
void	TcpFsmTask(void);
void	TcpInitial(void);


#endif
/********************************************************************************************
***                     文件结束                                                          ***	
********************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -