X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/fc92f9969c1fcc2f952f0bd6d09a309a9b3ce02f..8e20e8697ff88d38ac01d62198dbdd552449e4aa:/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h b/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h index dcfc8407c..e49433af9 100644 --- a/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h +++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.h @@ -1,21 +1,21 @@ /* LUFA Library - Copyright (C) Dean Camera, 2010. - + Copyright (C) Dean Camera, 2012. + dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com + www.lufa-lib.org */ /* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -39,11 +39,11 @@ /* Includes: */ #include #include - + #include "EthernetProtocols.h" #include "Ethernet.h" #include "ProtocolDecoders.h" - + /* Macros: */ /** Maximum number of TCP ports which can be open at the one time. */ #define MAX_OPEN_TCP_PORTS 1 @@ -53,16 +53,16 @@ /** TCP window size, giving the maximum number of bytes which can be buffered at the one time. */ #define TCP_WINDOW_SIZE 512 - + /** Port number for HTTP transmissions. */ #define TCP_PORT_HTTP SwapEndian_16(80) - + /** Data direction indicator for a TCP application buffer, indicating data from host-to-device. */ #define TCP_PACKETDIR_IN false /** Data direction indicator for a TCP application buffer, indicating data from device-to-host. */ #define TCP_PACKETDIR_OUT true - + /** Congestion Window Reduced TCP flag mask. */ #define TCP_FLAG_CWR (1 << 7) @@ -86,7 +86,7 @@ /** Connection Finalize TCP flag mask. */ #define TCP_FLAG_FIN (1 << 0) - + /** Application macro: Determines if the given application buffer contains a packet received from the host * * \param[in] Buffer Application buffer to check @@ -115,7 +115,7 @@ /** Application macro: Captures the application buffer, locking it for device-to-host transmissions only. This should be * performed when the application needs to transmit several packets worth of data in succession with no interruptions from the host. * - * \note The application must check that the buffer can be locked first using TCP_APP_CAN_CAPTURE_BUFFER(). + * \pre The application must check that the buffer can be locked first using TCP_APP_CAN_CAPTURE_BUFFER(). * * \param[in] Buffer Application buffer to lock */ @@ -139,7 +139,7 @@ * \param[in] Buffer Application buffer to clear */ #define TCP_APP_CLEAR_BUFFER(Buffer) MACROS{ Buffer->Ready = false; Buffer->Length = 0; }MACROE - + /** Application macro: Closes an open connection to a host. * * \param[in] Connection Open TCP connection to close @@ -153,7 +153,7 @@ TCP_Port_Closed = 0, /**< TCP port closed, no connections to a host may be made on this port. */ TCP_Port_Open = 1, /**< TCP port open, connections to a host may be made on this port. */ }; - + /** Enum for possible TCP connection states. */ enum TCP_ConnectionStates_t { @@ -167,9 +167,9 @@ TCP_Connection_Closing = 7, /**< Unused */ TCP_Connection_LastACK = 8, /**< Unused */ TCP_Connection_TimeWait = 9, /**< Unused */ - TCP_Connection_Closed = 10, /**< Connection closed in both directions */ + TCP_Connection_Closed = 10, /**< Connection closed in both directions */ }; - + /* Type Defines: */ /** Type define for a TCP connection buffer structure, including size, data and direction. */ typedef struct @@ -186,7 +186,7 @@ /** Type define for a TCP connection information structure. */ typedef struct { - uint32_t SequenceNumberIn; /**< Current TCP sequence number for host-to-device */ + uint32_t SequenceNumberIn; /**< Current TCP sequence number for host-to-device */ uint32_t SequenceNumberOut; /**< Current TCP sequence number for device-to-host */ TCP_ConnectionBuffer_t Buffer; /**< Connection application data buffer */ } TCP_ConnectionInfo_t; @@ -198,14 +198,14 @@ uint16_t RemotePort; /**< Connection port number on the host */ IP_Address_t RemoteAddress; /**< Connection protocol IP address of the host */ TCP_ConnectionInfo_t Info; /**< Connection information, including application buffer */ - uint8_t State; /**< Current connection state, a value from the TCP_ConnectionStates_t enum */ + uint8_t State; /**< Current connection state, a value from the \ref TCP_ConnectionStates_t enum */ } TCP_ConnectionState_t; /** Type define for a TCP port state. */ typedef struct { uint16_t Port; /**< TCP port number on the device */ - uint8_t State; /**< Current port state, a value from the TCP_PortStates_t enum */ + uint8_t State; /**< Current port state, a value from the \ref TCP_PortStates_t enum */ void (*ApplicationHandler) (TCP_ConnectionState_t* ConnectionState, TCP_ConnectionBuffer_t* Buffer); /**< Port application handler */ } TCP_PortState_t; @@ -215,15 +215,15 @@ { uint16_t SourcePort; /**< Source port of the TCP packet */ uint16_t DestinationPort; /**< Destination port of the TCP packet */ - + uint32_t SequenceNumber; /**< Data sequence number of the packet */ uint32_t AcknowledgmentNumber; /**< Data acknowledgment number of the packet */ - - unsigned char Reserved : 4; /**< Reserved, must be all 0 */ - unsigned char DataOffset : 4; /**< Offset of the data from the start of the header, in 4 byte chunks */ + + unsigned Reserved : 4; /**< Reserved, must be all 0 */ + unsigned DataOffset : 4; /**< Offset of the data from the start of the header, in 4 byte chunks */ uint8_t Flags; /**< TCP packet flags */ uint16_t WindowSize; /**< Current data window size (bytes remaining in reception buffer) */ - + uint16_t Checksum; /**< TCP checksum */ uint16_t UrgentPointer; /**< Urgent data pointer */ } TCP_Header_t; @@ -231,16 +231,30 @@ /* Function Prototypes: */ void TCP_Init(void); void TCP_Task(void); - bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*)); - uint8_t TCP_GetPortState(uint16_t Port); - bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort, uint8_t State); - uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort); - TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort); - int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void* TCPHeaderOutStart); + bool TCP_SetPortState(const uint16_t Port, + const uint8_t State, + void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*)); + uint8_t TCP_GetPortState(const uint16_t Port); + bool TCP_SetConnectionState(const uint16_t Port, + const IP_Address_t RemoteAddress, + const uint16_t RemotePort, + const uint8_t State); + uint8_t TCP_GetConnectionState(const uint16_t Port, + const IP_Address_t RemoteAddress, + const uint16_t RemotePort); + TCP_ConnectionInfo_t* TCP_GetConnectionInfo(const uint16_t Port, + const IP_Address_t RemoteAddress, + const uint16_t RemotePort); + int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, + void* TCPHeaderInStart, + void* TCPHeaderOutStart); #if defined(INCLUDE_FROM_TCP_C) - static uint16_t TCP_Checksum16(void* TCPHeaderOutStart, IP_Address_t SourceAddress, - IP_Address_t DestinationAddress, uint16_t TCPOutSize); + static uint16_t TCP_Checksum16(void* TCPHeaderOutStart, + const IP_Address_t SourceAddress, + const IP_Address_t DestinationAddress, + uint16_t TCPOutSize); #endif #endif +