📄 tcpip.i
字号:
__no_init volatile unsigned short TBCCTL5 @ (0x018C);
__no_init volatile unsigned short TBCCTL6 @ (0x018E);
__no_init volatile unsigned short TBR @ (0x0190);
__no_init volatile unsigned short TBCCR0 @ (0x0192);
__no_init volatile unsigned short TBCCR1 @ (0x0194);
__no_init volatile unsigned short TBCCR2 @ (0x0196);
__no_init volatile unsigned short TBCCR3 @ (0x0198);
__no_init volatile unsigned short TBCCR4 @ (0x019A);
__no_init volatile unsigned short TBCCR5 @ (0x019C);
__no_init volatile unsigned short TBCCR6 @ (0x019E);
__no_init volatile unsigned char DCOCTL @ (0x0056);
__no_init volatile unsigned char BCSCTL1 @ (0x0057);
__no_init volatile unsigned char BCSCTL2 @ (0x0058);
__no_init volatile unsigned short FCTL1 @ (0x0128);
__no_init volatile unsigned short FCTL2 @ (0x012A);
__no_init volatile unsigned short FCTL3 @ (0x012C);
__no_init volatile unsigned char CACTL1 @ (0x0059);
__no_init volatile unsigned char CACTL2 @ (0x005A);
__no_init volatile unsigned char CAPD @ (0x005B);
__no_init volatile unsigned short ADC12CTL0 @ (0x01A0);
__no_init volatile unsigned short ADC12CTL1 @ (0x01A2);
__no_init volatile unsigned short ADC12IFG @ (0x01A4);
__no_init volatile unsigned short ADC12IE @ (0x01A6);
__no_init volatile unsigned short ADC12IV @ (0x01A8);
__no_init volatile unsigned short ADC12MEM0 @ (0x0140);
__no_init volatile unsigned short ADC12MEM1 @ (0x0142);
__no_init volatile unsigned short ADC12MEM2 @ (0x0144);
__no_init volatile unsigned short ADC12MEM3 @ (0x0146);
__no_init volatile unsigned short ADC12MEM4 @ (0x0148);
__no_init volatile unsigned short ADC12MEM5 @ (0x014A);
__no_init volatile unsigned short ADC12MEM6 @ (0x014C);
__no_init volatile unsigned short ADC12MEM7 @ (0x014E);
__no_init volatile unsigned short ADC12MEM8 @ (0x0150);
__no_init volatile unsigned short ADC12MEM9 @ (0x0152);
__no_init volatile unsigned short ADC12MEM10 @ (0x0154);
__no_init volatile unsigned short ADC12MEM11 @ (0x0156);
__no_init volatile unsigned short ADC12MEM12 @ (0x0158);
__no_init volatile unsigned short ADC12MEM13 @ (0x015A);
__no_init volatile unsigned short ADC12MEM14 @ (0x015C);
__no_init volatile unsigned short ADC12MEM15 @ (0x015E);
__no_init volatile unsigned char ADC12MCTL0 @ (0x0080);
__no_init volatile unsigned char ADC12MCTL1 @ (0x0081);
__no_init volatile unsigned char ADC12MCTL2 @ (0x0082);
__no_init volatile unsigned char ADC12MCTL3 @ (0x0083);
__no_init volatile unsigned char ADC12MCTL4 @ (0x0084);
__no_init volatile unsigned char ADC12MCTL5 @ (0x0085);
__no_init volatile unsigned char ADC12MCTL6 @ (0x0086);
__no_init volatile unsigned char ADC12MCTL7 @ (0x0087);
__no_init volatile unsigned char ADC12MCTL8 @ (0x0088);
__no_init volatile unsigned char ADC12MCTL9 @ (0x0089);
__no_init volatile unsigned char ADC12MCTL10 @ (0x008A);
__no_init volatile unsigned char ADC12MCTL11 @ (0x008B);
__no_init volatile unsigned char ADC12MCTL12 @ (0x008C);
__no_init volatile unsigned char ADC12MCTL13 @ (0x008D);
__no_init volatile unsigned char ADC12MCTL14 @ (0x008E);
__no_init volatile unsigned char ADC12MCTL15 @ (0x008F);
#pragma language=default
extern void DelayCycles(unsigned int Count);
extern void WriteDWBE(unsigned char *Add, unsigned long Data);
typedef struct
{
unsigned int Addr;
unsigned int Data;
} TInitSeq;
extern const unsigned int MyMAC[];
void Init8900(void);
void Write8900(unsigned char Address, unsigned int Data);
void WriteFrame8900(unsigned int Data);
unsigned int Read8900(unsigned char Address);
unsigned int ReadFrame8900(void);
unsigned int ReadHB1ST8900(unsigned char Address);
unsigned int ReadFrameBE8900(void);
void CopyToFrame8900(void *Source, unsigned int Size);
void CopyFromFrame8900(void *Dest, unsigned int Size);
void DummyReadFrame8900(unsigned int Size);
void RequestSend(unsigned int FrameSize);
unsigned int Rdy4Tx(void);
typedef enum
{
CLOSED,
LISTENING,
SYN_SENT,
SYN_RECD,
ESTABLISHED,
FIN_WAIT_1,
FIN_WAIT_2,
CLOSE_WAIT,
CLOSING,
LAST_ACK,
TIME_WAIT
} TTCPStateMachine;
typedef enum
{
ARP_REQUEST,
TCP_SYN_FRAME,
TCP_SYN_ACK_FRAME,
TCP_FIN_FRAME,
TCP_DATA_FRAME
} TLastFrameSent;
void TCPLowLevelInit(void);
void TCPPassiveOpen(void);
void TCPActiveOpen(void);
void TCPClose(void);
void TCPReleaseRxBuffer(void);
void TCPTransmitTxBuffer(void);
void DoNetworkStuff(void);
extern const unsigned int MyIP[];
extern const unsigned int SubnetMask[];
extern const unsigned int GatewayIP[];
extern unsigned char SocketStatus;
extern unsigned int TCPLocalPort;
extern unsigned int TCPRemotePort;
extern unsigned int RemoteMAC[3];
extern unsigned int RemoteIP[2];
extern unsigned int TCPRxDataCount;
extern unsigned int TCPTxDataCount;
extern unsigned int TxFrame1Mem[];
extern unsigned int RxTCPBufferMem[];
const unsigned int MyIP[] =
{
192 + (unsigned int)(168 << 8),
0 + (unsigned int)(30 << 8)
};
const unsigned int SubnetMask[] =
{
255 + (unsigned int)(255 << 8),
255 + (unsigned int)(0 << 8)
};
const unsigned int GatewayIP[] =
{
192 + (unsigned int)(168 << 8),
0 + (unsigned int)(1 << 8)
};
static TTCPStateMachine TCPStateMachine;
static TLastFrameSent LastFrameSent;
static unsigned int ISNGenHigh;
static unsigned long TCPSeqNr;
static unsigned long TCPUNASeqNr;
static unsigned long TCPAckNr;
static unsigned char TCPTimer;
static unsigned char RetryCounter;
static unsigned int TxFrame1Size;
static unsigned char TxFrame2Size;
static unsigned char TransmitControl;
static unsigned char TCPFlags;
unsigned int TCPRxDataCount;
unsigned int TCPTxDataCount;
unsigned int TCPLocalPort;
unsigned int TCPRemotePort;
unsigned int RemoteMAC[3];
unsigned int RemoteIP[2];
unsigned char SocketStatus;
static unsigned int RecdFrameLength;
static unsigned int RecdFrameMAC[3];
static unsigned int RecdFrameIP[2];
static unsigned int RecdIPFrameLength;
unsigned int TxFrame1Mem[(14 + 20 + 20 +
768 + 1) >> 1];
static unsigned int TxFrame2Mem[(14 + 60 + 1) >> 1];
unsigned int RxTCPBufferMem[(536 + 1) >> 1];
static void ProcessEthBroadcastFrame(void);
static void ProcessEthIAFrame(void);
static void ProcessICMPFrame(void);
static void ProcessTCPFrame(void);
static void PrepareARP_REQUEST(void);
static void PrepareARP_ANSWER(void);
static void PrepareICMP_ECHO_REPLY(void);
static void PrepareTCP_FRAME(unsigned long seqnr, unsigned long acknr,
unsigned int TCPCode);
static void PrepareTCP_DATA_FRAME(void);
static void TCPStartRetryTimer(void);
static void TCPStartFinTimer(void);
static void TCPRestartTimer(void);
static void TCPStopTimer(void);
static void TCPHandleRetransmission(void);
static void TCPHandleTimeout(void);
static unsigned int CalcChecksum(void *Start, unsigned int Count,
unsigned char IsTCP);
void TCPLowLevelInit(void)
{
BCSCTL1 &= ~(0x10);
BCSCTL1 |= (0x20);
TACTL = (3*0x40u) + (1*0x100u) + (2*0x10u) + (0x0002);
Init8900();
TransmitControl = 0;
TCPFlags = 0;
TCPStateMachine = CLOSED;
SocketStatus = 0;
}
void TCPPassiveOpen(void)
{
if (TCPStateMachine == CLOSED)
{
TCPFlags &= ~(0x01);
TCPStateMachine = LISTENING;
SocketStatus = (0x01);
}
}
void TCPActiveOpen(void)
{
if ((TCPStateMachine == CLOSED) || (TCPStateMachine == LISTENING))
{
TCPFlags |= (0x01);
TCPFlags &= ~(0x02);
PrepareARP_REQUEST();
LastFrameSent = ARP_REQUEST;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -