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

📄 tcp.h

📁 本附件为嵌入式Web的相关资料
💻 H
字号:
/*********************************************************************
 *
 *                  TCP Module Defs for Microchip TCP/IP Stack
 *
 *********************************************************************
 * FileName:        TCP.h
 * Dependencies:    StackTsk.h
 * Processor:       PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F
 * Complier:        Microchip C18 v3.02 or higher
 *					Microchip C30 v2.01 or higher
 * Company:         Microchip Technology, Inc.
 *
 * Software License Agreement
 *
 * This software is owned by Microchip Technology Inc. ("Microchip") 
 * and is supplied to you for use exclusively as described in the 
 * associated software agreement.  This software is protected by 
 * software and other intellectual property laws.  Any use in 
 * violation of the software license may subject the user to criminal 
 * sanctions as well as civil liability.  Copyright 2006 Microchip
 * Technology Inc.  All rights reserved.
 *
 * This software is provided "AS IS."  MICROCHIP DISCLAIMS ALL 
 * WARRANTIES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, NOT LIMITED 
 * TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND 
 * INFRINGEMENT.  Microchip shall in no event be liable for special, 
 * incidental, or consequential damages.
 *
 *
 * Author               Date    	Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Nilesh Rajbharti     5/8/01  	Original        (Rev 1.0)
 * Howard Schlunder		11/30/06	See "TCPIP Stack Version.txt" file
 ********************************************************************/
#ifndef __TCP_H
#define __TCP_H

#include "mchp_tcp_ip\tcpip.h"

typedef BYTE TCP_SOCKET;

#define INVALID_SOCKET      (0xFE)
#define UNKNOWN_SOCKET      (0xFF)

// TCP States as defined by RFC 793
typedef enum _TCP_STATE
{
    TCP_LISTEN = 0,
    TCP_SYN_SENT,
    TCP_SYN_RECEIVED,
    TCP_ESTABLISHED,
    TCP_FIN_WAIT_1,
    TCP_FIN_WAIT_2,
    TCP_CLOSING,
    TCP_TIME_WAIT,
	TCP_CLOSE_WAIT,
    TCP_LAST_ACK,
    TCP_CLOSED,
} TCP_STATE;

// TCP Control Block (TCB) Information
// Stubs are stored in local PIC RAM
// Current size is 22 bytes
typedef struct _TCB_STUB
{
    TCP_STATE smState;
	WORD_VAL remoteHash;	// Hash consists of remoteIP, remotePort, localPort for connected sockets.  It is a localPort number only for listening server sockets.
	WORD bufferTxStart;		// TCB is located sizeof(TCB) bytes before this address
	WORD bufferRxStart;
	WORD bufferEnd;
	WORD txHead;
	WORD txTail;
	WORD rxHead;
	WORD rxTail;
    TICK eventTime;
    struct
    {
        unsigned char bServer		: 1;
		unsigned char bTimerEnabled	: 1;
    } __attribute__((packed)) Flags;
} __attribute__((packed)) TCB_STUB;

// The rest of the TCB is stored in Ethernet buffer RAM
// Current size is 31 bytes
typedef struct _TCB
{
	NODE_INFO remote;
    WORD_VAL remotePort;
    WORD_VAL localPort;

	WORD txUnackedTail;
	WORD remoteWindow;
	DWORD MySEQ;
	DWORD RemoteSEQ;
	BYTE retryCount;
	TICK retryInterval;
} __attribute__((packed)) TCB;

typedef struct _SOCKET_INFO
{
	NODE_INFO remote;
	WORD_VAL remotePort;
} __attribute__((packed)) SOCKET_INFO;

#define RESERVED_TCP_MEMORY	((DWORD)MAX_TCP_SOCKETS*((DWORD)(TCP_TX_FIFO_SIZE+1)+(DWORD)TCP_RX_FIFO_SIZE+(DWORD)sizeof(TCB)))

#if !defined(__TCP_C)
extern TCB_STUB TCBStubs[MAX_TCP_SOCKETS];
#endif


void TCPInit(void);
SOCKET_INFO* TCPGetRemoteInfo(TCP_SOCKET hTCP);
TCP_SOCKET TCPListen(WORD port);
TCP_SOCKET TCPConnect(NODE_INFO *remote, WORD port);
BOOL TCPIsConnected(TCP_SOCKET hTCP);
void TCPDisconnect(TCP_SOCKET hTCP);
WORD TCPIsPutReady(TCP_SOCKET hTCP);
BOOL TCPPut(TCP_SOCKET hTCP, BYTE byte);
WORD TCPPutArray(TCP_SOCKET hTCP, BYTE *Data, WORD Len);
WORD TCPPutROMArray(TCP_SOCKET hTCP, ROM BYTE *Data, WORD Len);
WORD TCPPutString(TCP_SOCKET hTCP, BYTE *Data);
WORD TCPPutROMString(TCP_SOCKET hTCP, ROM BYTE *Data);
WORD TCPIsGetReady(TCP_SOCKET hTCP);
BOOL TCPGet(TCP_SOCKET hTCP, BYTE *byte);
WORD TCPGetArray(TCP_SOCKET hTCP, BYTE *buffer, WORD count);
void TCPDiscard(TCP_SOCKET hTCP);
BOOL TCPProcess(NODE_INFO *remote, IP_ADDR *localIP, WORD len);
void TCPTick(void);
void TCPFlush(TCP_SOCKET hTCP);



#endif

⌨️ 快捷键说明

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