Device mode class driver callbacks are now fired before the control request status...
[pub/USBasp.git] / Demos / Device / ClassDriver / RNDISEthernet / Lib / TCP.h
index 3448245..d842560 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
@@ -38,7 +38,7 @@
 \r
        /* Includes: */\r
                #include <avr/io.h>\r
 \r
        /* Includes: */\r
                #include <avr/io.h>\r
-               #include <stdbool.h>
+               #include <stdbool.h>\r
                \r
                #include "EthernetProtocols.h"\r
                #include "Ethernet.h"\r
                \r
                #include "EthernetProtocols.h"\r
                #include "Ethernet.h"\r
                #define MAX_OPEN_TCP_PORTS              1\r
 \r
                /** Maximum number of TCP connections which can be sustained at the one time */\r
                #define MAX_OPEN_TCP_PORTS              1\r
 \r
                /** Maximum number of TCP connections which can be sustained at the one time */\r
-               #define MAX_TCP_CONNECTIONS             1\r
+               #define MAX_TCP_CONNECTIONS             3\r
 \r
                /** TCP window size, giving the maximum number of bytes which can be buffered at the one time */\r
 \r
                /** TCP window size, giving the maximum number of bytes which can be buffered at the one time */\r
-               #define TCP_WINDOW_SIZE                 1024\r
+               #define TCP_WINDOW_SIZE                 512\r
                \r
                /** Port number for HTTP transmissions */\r
                #define TCP_PORT_HTTP                   SwapEndian_16(80)\r
                \r
                /** Port number for HTTP transmissions */\r
                #define TCP_PORT_HTTP                   SwapEndian_16(80)\r
@@ -89,7 +89,7 @@
                \r
                /** Application macro: Determines if the given application buffer contains a packet received from the host\r
                 *\r
                \r
                /** Application macro: Determines if the given application buffer contains a packet received from the host\r
                 *\r
-                *  \param Buffer  Application buffer to check\r
+                *  \param[in] Buffer  Application buffer to check\r
                 *\r
                 *  \return Boolean true if the buffer contains a packet from the host, false otherwise\r
                 */\r
                 *\r
                 *  \return Boolean true if the buffer contains a packet from the host, false otherwise\r
                 */\r
@@ -97,7 +97,7 @@
 \r
                /** Application macro: Indicates if the application buffer is currently locked by the application for device-to-host transfers.\r
                 *\r
 \r
                /** Application macro: Indicates if the application buffer is currently locked by the application for device-to-host transfers.\r
                 *\r
-                *  \param Buffer  Application buffer to check\r
+                *  \param[in] Buffer  Application buffer to check\r
                 *\r
                 *  \return Boolean true if the buffer has been captured by the application for device-to-host transmissions, false otherwise\r
                 */\r
                 *\r
                 *  \return Boolean true if the buffer has been captured by the application for device-to-host transmissions, false otherwise\r
                 */\r
 \r
                /** Application macro: Indicates if the application can lock the buffer for multiple continued device-to-host transmissions.\r
                 *\r
 \r
                /** Application macro: Indicates if the application can lock the buffer for multiple continued device-to-host transmissions.\r
                 *\r
-                *  \param Buffer  Application buffer to check\r
+                *  \param[in] Buffer  Application buffer to check\r
                 *\r
                 *  \return Boolean true if the buffer may be captured by the application for device-to-host transmissions, false otherwise\r
                 */\r
                 *\r
                 *  \return Boolean true if the buffer may be captured by the application for device-to-host transmissions, false otherwise\r
                 */\r
                 *\r
                 *  \note The application must check that the buffer can be locked first using TCP_APP_CAN_CAPTURE_BUFFER().\r
                 *\r
                 *\r
                 *  \note The application must check that the buffer can be locked first using TCP_APP_CAN_CAPTURE_BUFFER().\r
                 *\r
-                *  \param Buffer  Application buffer to lock\r
+                *  \param[in] Buffer  Application buffer to lock\r
                 */\r
                #define TCP_APP_CAPTURE_BUFFER(Buffer)       MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->InUse = true; }MACROE\r
 \r
                /** Application macro: Releases a captured application buffer, allowing for host-to-device packets to be received.\r
                 *\r
                 */\r
                #define TCP_APP_CAPTURE_BUFFER(Buffer)       MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->InUse = true; }MACROE\r
 \r
                /** Application macro: Releases a captured application buffer, allowing for host-to-device packets to be received.\r
                 *\r
-                *  \param Buffer  Application buffer to release\r
+                *  \param[in] Buffer  Application buffer to release\r
                 */\r
                #define TCP_APP_RELEASE_BUFFER(Buffer)       MACROS{ Buffer->InUse = false; }MACROE\r
 \r
                /** Application macro: Sends the contents of the given application buffer to the host.\r
                 *\r
                 */\r
                #define TCP_APP_RELEASE_BUFFER(Buffer)       MACROS{ Buffer->InUse = false; }MACROE\r
 \r
                /** Application macro: Sends the contents of the given application buffer to the host.\r
                 *\r
-                *  \param Buffer  Application buffer to send\r
-                *  \param Len     Length of data contained in the buffer\r
+                *  \param[in] Buffer  Application buffer to send\r
+                *  \param[in] Len     Length of data contained in the buffer\r
                 */\r
                #define TCP_APP_SEND_BUFFER(Buffer, Len)     MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->Length = Len; Buffer->Ready = true; }MACROE\r
 \r
                /** Application macro: Clears the application buffer, ready for a packet to be written to it.\r
                 *\r
                 */\r
                #define TCP_APP_SEND_BUFFER(Buffer, Len)     MACROS{ Buffer->Direction = TCP_PACKETDIR_OUT; Buffer->Length = Len; Buffer->Ready = true; }MACROE\r
 \r
                /** Application macro: Clears the application buffer, ready for a packet to be written to it.\r
                 *\r
-                *  \param Buffer  Application buffer to clear\r
+                *  \param[in] Buffer  Application buffer to clear\r
                 */\r
                #define TCP_APP_CLEAR_BUFFER(Buffer)         MACROS{ Buffer->Ready = false; Buffer->Length = 0; }MACROE\r
                \r
                /** Application macro: Closes an open connection to a host.\r
                 *\r
                 */\r
                #define TCP_APP_CLEAR_BUFFER(Buffer)         MACROS{ Buffer->Ready = false; Buffer->Length = 0; }MACROE\r
                \r
                /** Application macro: Closes an open connection to a host.\r
                 *\r
-                *  \param Connection  Open TCP connection to close\r
+                *  \param[in] Connection  Open TCP connection to close\r
                 */\r
                #define TCP_APP_CLOSECONNECTION(Connection)  MACROS{ Connection->State = TCP_Connection_Closing;  }MACROE\r
 \r
                 */\r
                #define TCP_APP_CLOSECONNECTION(Connection)  MACROS{ Connection->State = TCP_Connection_Closing;  }MACROE\r
 \r
                TCP_PortState_t PortStateTable[MAX_OPEN_TCP_PORTS];\r
 \r
        /* Function Prototypes: */\r
                TCP_PortState_t PortStateTable[MAX_OPEN_TCP_PORTS];\r
 \r
        /* Function Prototypes: */\r
-               void                  TCP_TCPTask(USB_ClassInfo_RNDIS_t* RNDISInterfaceInfo);\r
+               void                  TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* RNDISInterfaceInfo);\r
                void                  TCP_Init(void);\r
                bool                  TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*));\r
                uint8_t               TCP_GetPortState(uint16_t Port);\r
                void                  TCP_Init(void);\r
                bool                  TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*));\r
                uint8_t               TCP_GetPortState(uint16_t Port);\r