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

📄 tcpip.h

📁 优龙LPC1788开发板资料
💻 H
📖 第 1 页 / 共 2 页
字号:
  TCP_SYN_ACK_FRAME,  TCP_FIN_FRAME,  TCP_DATA_FRAME} TLastFrameSent;// constants#ifdef extern                                    // Keil: declarations for modular programmingconst uint16_t MyIP[] =                    // "MYIP1.MYIP2.MYIP3.MYIP4"{  MYIP_1 + (MYIP_2 << 8),                        // use 'unsigned int' to  MYIP_3 + (MYIP_4 << 8)                         // achieve word alignment};const uint16_t SubnetMask[] =              // "SUBMASK1.SUBMASK2.SUBMASK3.SUBMASK4"{  SUBMASK_1 + (SUBMASK_2 << 8),                  // use 'unsigned int' to  SUBMASK_3 + (SUBMASK_4 << 8)                   // achieve word alignment};const uint16_t GatewayIP[] =               // "GWIP1.GWIP2.GWIP3.GWIP4"{  GWIP_1 + (GWIP_2 << 8),                        // use 'unsigned int' to  GWIP_3 + (GWIP_4 << 8)                         // achieve word alignment};#elseextern const uint16_t MyIP[2];             // "MYIP1.MYIP2.MYIP3.MYIP4"extern const uint16_t SubnetMask[2];       // "SUBMASK1.SUBMASK2.SUBMASK3.SUBMASK4"extern const uint16_t GatewayIP[2];        // "GWIP1.GWIP2.GWIP3.GWIP4"extern const uint8_t MyMAC[6];             // "M1-M2-M3-M4-M5-M6"#endif// easyWEB's internal variablesextern TTCPStateMachine TCPStateMachine;         // perhaps the most important var at all ;-)extern TLastFrameSent LastFrameSent;             // retransmission typeextern uint16_t ISNGenHigh;                // upper word of our Initial Sequence Numberextern unsigned long TCPSeqNr;                   // next sequence number to sendextern unsigned long TCPUNASeqNr;                // last unaknowledged sequence number                                                 // incremented AFTER sending dataextern unsigned long TCPAckNr;                   // next seq to receive and ack to send                                                 // incremented AFTER receiving dataextern uint8_t TCPTimer;                   // inc'd each 262msextern uint8_t RetryCounter;               // nr. of retransmissions// properties of the just received frameextern uint16_t RecdFrameLength;           // EMAC reported frame lengthextern uint16_t RecdFrameMAC[3];           // 48 bit MACextern uint16_t RecdFrameIP[2];            // 32 bit IPextern uint16_t RecdIPFrameLength;         // 16 bit IP packet length// the next 3 buffers must be word-aligned!// (here the 'RecdIPFrameLength' above does that)#if defined ( __CC_ARM   )extern uint16_t __align(4) _TxFrame1[(ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE + MAX_TCP_TX_DATA_SIZE)/2];extern uint16_t __align(4) _TxFrame2[(ETH_HEADER_SIZE + MAX_ETH_TX_DATA_SIZE)/2];extern uint16_t __align(4) _RxTCPBuffer[MAX_TCP_RX_DATA_SIZE/2]; // space for incoming TCP-data#elif defined ( __ICCARM__ )#pragma data_alignment=4extern uint16_t _TxFrame1[(ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE + MAX_TCP_TX_DATA_SIZE)/2];#pragma data_alignment=4extern uint16_t _TxFrame2[(ETH_HEADER_SIZE + MAX_ETH_TX_DATA_SIZE)/2];#pragma data_alignment=4extern uint16_t _RxTCPBuffer[MAX_TCP_RX_DATA_SIZE/2]; // space for incoming TCP-data#elif defined   (  __GNUC__  )extern uint16_t __attribute__ ((aligned (4))) _TxFrame1[(ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE + MAX_TCP_TX_DATA_SIZE)/2];extern uint16_t __attribute__ ((aligned (4))) _TxFrame2[(ETH_HEADER_SIZE + MAX_ETH_TX_DATA_SIZE)/2];extern uint16_t __attribute__ ((aligned (4))) _RxTCPBuffer[MAX_TCP_RX_DATA_SIZE/2]; // space for incoming TCP-data#endif#define TxFrame1      ((uint8_t *)_TxFrame1)#define TxFrame2      ((uint8_t *)_TxFrame2)#define RxTCPBuffer   ((uint8_t *)_RxTCPBuffer)extern uint16_t TxFrame1Size;              // bytes to send in TxFrame1extern uint8_t TxFrame2Size;               // bytes to send in TxFrame2extern uint8_t TransmitControl;#define SEND_FRAME1                    0x01#define SEND_FRAME2                    0x02extern uint8_t TCPFlags;#define TCP_ACTIVE_OPEN                0x01      // easyWEB shall initiate a connection#define IP_ADDR_RESOLVED               0x02      // IP sucessfully resolved to MAC#define TCP_TIMER_RUNNING              0x04#define TIMER_TYPE_RETRY               0x08#define TCP_CLOSE_REQUESTED            0x10// prototypesvoid DoNetworkStuff(void);// Handlers for incoming framesvoid ProcessEthBroadcastFrame(void);void ProcessEthIAFrame(void);void ProcessICMPFrame(void);void ProcessTCPFrame(void);// fill TX-buffersvoid PrepareARP_REQUEST(void);void PrepareARP_ANSWER(void);void PrepareICMP_ECHO_REPLY(void);void PrepareTCP_FRAME(uint16_t TCPCode);void PrepareTCP_DATA_FRAME(void);// general help functionsvoid SendFrame1(void);void SendFrame2(void);void TCPStartRetryTimer(void);void TCPStartTimeWaitTimer(void);void TCPRestartTimer(void);void TCPStopTimer(void);void TCPHandleRetransmission(void);void TCPHandleTimeout(void);uint16_t CalcChecksum(void *Start, uint16_t Count, uint8_t IsTCP);// functions to work with big-endian numbersuint16_t SwapBytes(uint16_t Data);void WriteWBE(uint8_t *Add, uint16_t Data);void WriteDWBE(uint8_t *Add, unsigned long Data);// easyWEB-API functionsvoid TCPLowLevelInit(void);                      // setup timer, LAN-controller, flags...void TCPPassiveOpen(void);                       // listen for a connectionvoid TCPActiveOpen(void);                        // open connectionvoid TCPClose(void);                             // close connectionvoid TCPReleaseRxBuffer(void);                   // indicate to discard rec'd packetvoid TCPTransmitTxBuffer(void);                  // initiate transfer after TxBuffer is filled#if defined ( __CC_ARM   ) /*------------------RealView Compiler -----------------*/
void TCPClockHandler(void) __irq ;
#else
void TCPClockHandler(void) ;
#endif// easyWEB-API global vars and flagsextern uint16_t TCPRxDataCount;            // nr. of bytes rec'dextern uint16_t TCPTxDataCount;            // nr. of bytes to sendextern uint16_t TCPLocalPort;              // TCP portsextern uint16_t TCPRemotePort;extern uint16_t RemoteMAC[3];              // MAC and IP of current TCP-sessionextern uint16_t RemoteIP[2];extern uint8_t SocketStatus;#define SOCK_ACTIVE                    0x01      // state machine NOT closed#define SOCK_CONNECTED                 0x02      // user may send & receive data#define SOCK_DATA_AVAILABLE            0x04      // new data available#define SOCK_TX_BUF_RELEASED           0x08      // user may fill buffer#define SOCK_ERROR_MASK                0xF0      // bit-mask to check for errors#define SOCK_ERR_OK                    0x00      // no error#define SOCK_ERR_ARP_TIMEOUT           0x10      // timeout waiting for an ARP-REPLY#define SOCK_ERR_TCP_TIMEOUT           0x20      // timeout waiting for an ACK#define SOCK_ERR_CONN_RESET            0x30      // connection was reset by the other TCP#define SOCK_ERR_REMOTE                0x40      // remote TCP caused fatal error#define SOCK_ERR_ETHERNET              0x50      // network interface error (timeout)// easyWEB-API buffer-pointers#define TCP_TX_BUF      ((uint8_t *)TxFrame1 + ETH_HEADER_SIZE + IP_HEADER_SIZE + TCP_HEADER_SIZE)#define TCP_RX_BUF      ((uint8_t *)RxTCPBuffer)#endif

⌨️ 快捷键说明

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