📄 tcp.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 + -