Cleanups to RNDIS device demos. Fix issue in RNDIS demos where the memory would becom...
authorDean Camera <dean@fourwalledcubicle.com>
Fri, 7 Aug 2009 06:55:31 +0000 (06:55 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Fri, 7 Aug 2009 06:55:31 +0000 (06:55 +0000)
Revert change to Template_Endpoint_Control_R.c, which broke control stream reads.

Remove uneeded ADC.h include in the class driver AudioOutput demo.

16 files changed:
Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.c
Demos/Device/ClassDriver/RNDISEthernet/Lib/Ethernet.h
Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.c
Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h
Demos/Device/ClassDriver/RNDISEthernet/Lib/TCP.c
Demos/Device/ClassDriver/RNDISEthernet/Lib/UDP.c
Demos/Device/ClassDriver/RNDISEthernet/Lib/UDP.h
Demos/Device/ClassDriver/RNDISEthernet/makefile
Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h
Demos/Device/LowLevel/RNDISEthernet/Lib/ProtocolDecoders.c
Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.h
Demos/Device/LowLevel/RNDISEthernet/Lib/TCP.c
Demos/Device/LowLevel/RNDISEthernet/Lib/UDP.c
Demos/Device/LowLevel/RNDISEthernet/Lib/UDP.h
LUFA/Drivers/USB/LowLevel/Template/Template_Endpoint_Control_R.c

index d31a8e6..bc4c632 100644 (file)
@@ -47,7 +47,6 @@
                #include <LUFA/Version.h>\r
                #include <LUFA/Drivers/Board/LEDs.h>\r
                #include <LUFA/Drivers/Board/Joystick.h>\r
-               #include <LUFA/Drivers/Peripheral/ADC.h>\r
                #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/USB/Class/Audio.h>\r
        \r
index fb6bb1a..70033f5 100644 (file)
@@ -59,7 +59,7 @@ const IP_Address_t  ClientIPAddress     = {CLIENT_IP_ADDRESS};
  */\r
 void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_t* FrameOUT)\r
 {\r
-       DecodeEthernetFrameHeader(FrameIN->FrameData);\r
+       DecodeEthernetFrameHeader(FrameIN);\r
 \r
        /* Cast the incoming Ethernet frame to the Ethernet header type */\r
        Ethernet_Frame_Header_t* FrameINHeader  = (Ethernet_Frame_Header_t*)&FrameIN->FrameData;\r
@@ -69,7 +69,8 @@ void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_
        \r
        /* Ensure frame is addressed to either all (broadcast) or the virtual webserver, and is a type II frame */\r
        if ((MAC_COMPARE(&FrameINHeader->Destination, &ServerMACAddress) ||\r
-            MAC_COMPARE(&FrameINHeader->Destination, &BroadcastMACAddress)))\r
+            MAC_COMPARE(&FrameINHeader->Destination, &BroadcastMACAddress)) &&\r
+                (SwapEndian_16(FrameIN->FrameLength) > ETHERNET_VER2_MINSIZE))\r
        {\r
                /* Process the packet depending on its protocol */\r
                switch (SwapEndian_16(FrameINHeader->EtherType))\r
index a867ff6..1c85d6c 100644 (file)
@@ -53,7 +53,7 @@
                \r
        /* Macros: */\r
                /** Physical MAC address of the USB RNDIS network adapter */\r
-               #define ADAPTER_MAC_ADDRESS              {0x00, 0x02, 0x00, 0x02, 0x00, 0x02}           \r
+               #define ADAPTER_MAC_ADDRESS              {0x02, 0x00, 0x02, 0x00, 0x02, 0x00}\r
 \r
                /** Physical MAC address of the virtual server on the network */\r
                #define SERVER_MAC_ADDRESS               {0x00, 0x01, 0x00, 0x01, 0x00, 0x01}           \r
@@ -70,6 +70,9 @@
                 */\r
                #define MAC_COMPARE(MAC1, MAC2)          (memcmp(MAC1, MAC2, sizeof(MAC_Address_t)) == 0)\r
                \r
+               /** Minimum size of an Ethernet packet in bytes, to conform to the Ethernet V2 packet standard */\r
+               #define ETHERNET_VER2_MINSIZE            0x0600\r
+\r
                /** Return value for all sub protocol handling routines, indicating that no response packet has been generated */\r
                #define NO_RESPONSE                      0              \r
 \r
index aac72ae..d4e2ceb 100644 (file)
  *\r
  *  \param[in] InDataStart  Pointer to the start of an Ethernet frame header\r
  */\r
-void DecodeEthernetFrameHeader(void* InDataStart)\r
+void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* FrameINData)\r
 {\r
        #if !defined(NO_DECODE_ETHERNET)\r
-       Ethernet_Frame_Header_t* FrameHeader = (Ethernet_Frame_Header_t*)InDataStart;\r
+       Ethernet_Frame_Header_t* FrameHeader = (Ethernet_Frame_Header_t*)FrameINData->FrameData;\r
        \r
        printf_P(PSTR("\r\n"));\r
        \r
        printf_P(PSTR("  ETHERNET\r\n"));\r
-       printf_P(PSTR("  + Frame Size: %u\r\n"), FrameIN.FrameLength);\r
+       printf_P(PSTR("  + Frame Size: %u\r\n"), FrameINData->FrameLength);\r
 \r
        if (!(MAC_COMPARE(&FrameHeader->Destination, &ServerMACAddress)) &&\r
            !(MAC_COMPARE(&FrameHeader->Destination, &BroadcastMACAddress)))\r
@@ -84,7 +84,7 @@ void DecodeEthernetFrameHeader(void* InDataStart)
                                                                             FrameHeader->Destination.Octets[4],\r
                                                                             FrameHeader->Destination.Octets[5]);\r
 \r
-       if (SwapEndian_16(FrameIN.FrameLength) > ETHERNET_VER2_MINSIZE)\r
+       if (SwapEndian_16(FrameINData->FrameLength) > ETHERNET_VER2_MINSIZE)\r
          printf_P(PSTR("  + Protocol: 0x%04x\r\n"), SwapEndian_16(FrameHeader->EtherType));\r
        else\r
          printf_P(PSTR("  + Protocol: UNKNOWN E1\r\n"));\r
index fa0a869..a1de406 100644 (file)
        /* Includes: */\r
                #include <avr/io.h>\r
                \r
+               #include <LUFA/Drivers/USB/Class/RNDIS.h>\r
                #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
                \r
                #include "EthernetProtocols.h"\r
                #include "Ethernet.h"\r
                \r
        /* Function Prototypes: */\r
-               void DecodeEthernetFrameHeader(void* InDataStart);\r
+               void DecodeEthernetFrameHeader(Ethernet_Frame_Info_t* FrameINData);\r
                void DecodeARPHeader(void* InDataStart);\r
                void DecodeIPHeader(void* InDataStart);\r
                void DecodeICMPHeader(void* InDataStart);\r
index c94495d..2a626e9 100644 (file)
@@ -58,25 +58,27 @@ TCP_ConnectionState_t  ConnectionStateTable[MAX_TCP_CONNECTIONS];
  */\r
 void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* RNDISInterfaceInfo)\r
 {\r
-       /* Task to hand off TCP packets to and from the listening applications. */\r
-\r
        /* Run each application in sequence, to process incoming and generate outgoing packets */\r
        for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++)\r
        {\r
                /* Find the corresponding port entry in the port table */\r
-               for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)\r
+               for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)\r
                {\r
                        /* Run the application handler for the port */\r
                        if ((PortStateTable[PTableEntry].Port  == ConnectionStateTable[CSTableEntry].Port) && \r
                            (PortStateTable[PTableEntry].State == TCP_Port_Open))\r
                        {\r
-                               PortStateTable[PTableEntry].ApplicationHandler(&ConnectionStateTable[CSTableEntry], &ConnectionStateTable[CSTableEntry].Info.Buffer);\r
+                               PortStateTable[PTableEntry].ApplicationHandler(&ConnectionStateTable[CSTableEntry],\r
+                                                                              &ConnectionStateTable[CSTableEntry].Info.Buffer);\r
                        }\r
                }\r
        }\r
        \r
+       /* Get pointer to the output frame info struct for convenience */\r
+       Ethernet_Frame_Info_t* FrameOUT = (Ethernet_Frame_Info_t*)&RNDISInterfaceInfo->State.FrameOUT;\r
+       \r
        /* Bail out early if there is already a frame waiting to be sent in the Ethernet OUT buffer */\r
-       if (RNDISInterfaceInfo->State.FrameOUT.FrameInBuffer)\r
+       if (FrameOUT->FrameInBuffer)\r
          return;\r
        \r
        /* Send response packets from each application as the TCP packet buffers are filled by the applications */\r
@@ -86,13 +88,13 @@ void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* RNDISInterfaceInfo)
                if ((ConnectionStateTable[CSTableEntry].Info.Buffer.Direction == TCP_PACKETDIR_OUT) &&\r
                    (ConnectionStateTable[CSTableEntry].Info.Buffer.Ready))\r
                {\r
-                       Ethernet_Frame_Header_t* FrameOUTHeader = (Ethernet_Frame_Header_t*)&RNDISInterfaceInfo->State.FrameOUT.FrameData;\r
-                       IP_Header_t*    IPHeaderOUT  = (IP_Header_t*)&RNDISInterfaceInfo->State.FrameOUT.FrameData[sizeof(Ethernet_Frame_Header_t)];\r
-                       TCP_Header_t*   TCPHeaderOUT = (TCP_Header_t*)&RNDISInterfaceInfo->State.FrameOUT.FrameData[sizeof(Ethernet_Frame_Header_t) +\r
-                                                                                                             sizeof(IP_Header_t)];                                             \r
-                       void*           TCPDataOUT     = &RNDISInterfaceInfo->State.FrameOUT.FrameData[sizeof(Ethernet_Frame_Header_t) +\r
-                                                                                                sizeof(IP_Header_t) +\r
-                                                                                                sizeof(TCP_Header_t)];\r
+                       Ethernet_Frame_Header_t* FrameOUTHeader = (Ethernet_Frame_Header_t*)&FrameOUT->FrameData;\r
+                       IP_Header_t*             IPHeaderOUT    = (IP_Header_t*)&FrameOUT->FrameData[sizeof(Ethernet_Frame_Header_t)];\r
+                       TCP_Header_t*            TCPHeaderOUT   = (TCP_Header_t*)&FrameOUT->FrameData[sizeof(Ethernet_Frame_Header_t) +\r
+                                                                                                     sizeof(IP_Header_t)];\r
+                       void*                    TCPDataOUT     = &FrameOUT->FrameData[sizeof(Ethernet_Frame_Header_t) +\r
+                                                                                      sizeof(IP_Header_t) +\r
+                                                                                      sizeof(TCP_Header_t)];\r
 \r
                        uint16_t PacketSize = ConnectionStateTable[CSTableEntry].Info.Buffer.Length;\r
 \r
@@ -145,8 +147,8 @@ void TCP_TCPTask(USB_ClassInfo_RNDIS_Device_t* RNDISInterfaceInfo)
                        PacketSize += sizeof(Ethernet_Frame_Header_t);\r
 \r
                        /* Set the response length in the buffer and indicate that a response is ready to be sent */\r
-                       RNDISInterfaceInfo->State.FrameOUT.FrameLength   = PacketSize;\r
-                       RNDISInterfaceInfo->State.FrameOUT.FrameInBuffer = true;\r
+                       FrameOUT->FrameLength           = PacketSize;\r
+                       FrameOUT->FrameInBuffer         = true;\r
                        \r
                        ConnectionStateTable[CSTableEntry].Info.Buffer.Ready = false;\r
                        \r
@@ -367,11 +369,12 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
                /* Detect RST from host to abort existing connection */\r
                if (TCPHeaderIN->Flags & TCP_FLAG_RST)\r
                {\r
-                       TCPHeaderOUT->Flags = (TCP_FLAG_RST | TCP_FLAG_ACK);                            \r
-                       PacketResponse = true;\r
-                       \r
-                       TCP_SetConnectionState(TCPHeaderIN->DestinationPort, IPHeaderIN->SourceAddress,\r
-                                              TCPHeaderIN->SourcePort, TCP_Connection_Closed);                 \r
+                       if (TCP_SetConnectionState(TCPHeaderIN->DestinationPort, IPHeaderIN->SourceAddress,\r
+                                                  TCPHeaderIN->SourcePort, TCP_Connection_Closed))\r
+                       {\r
+                               TCPHeaderOUT->Flags = (TCP_FLAG_RST | TCP_FLAG_ACK);                            \r
+                               PacketResponse = true;                  \r
+                       }\r
                }\r
                else\r
                {\r
index dbd33d1..ea67951 100644 (file)
@@ -55,12 +55,13 @@ int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart, void* UDPHeaderInStart, void
        \r
        DecodeUDPHeader(UDPHeaderInStart);\r
        \r
-       /* Check to see if the UDP packet is a DHCP packet */\r
-       if (SwapEndian_16(UDPHeaderIN->DestinationPort) == UDP_PORT_DHCP_REQUEST)\r
+       switch (SwapEndian_16(UDPHeaderIN->DestinationPort))\r
        {\r
-               RetSize = DHCP_ProcessDHCPPacket(IPHeaderInStart,\r
-                                                &((uint8_t*)UDPHeaderInStart)[sizeof(UDP_Header_t)],\r
-                                            &((uint8_t*)UDPHeaderOutStart)[sizeof(UDP_Header_t)]);\r
+               case UDP_PORT_DHCP_REQUEST:\r
+                       RetSize = DHCP_ProcessDHCPPacket(IPHeaderInStart,\r
+                                                        &((uint8_t*)UDPHeaderInStart)[sizeof(UDP_Header_t)],\r
+                                                    &((uint8_t*)UDPHeaderOutStart)[sizeof(UDP_Header_t)]);\r
+                       break;\r
        }\r
        \r
        /* Check to see if the protocol processing routine has filled out a response */\r
index 60bbe21..737a6fd 100644 (file)
@@ -42,6 +42,7 @@
                #include "EthernetProtocols.h"\r
                #include "Ethernet.h"\r
                #include "ProtocolDecoders.h"\r
+               #include "DHCP.h"\r
        \r
        /* Macros: */\r
                /** Source UDP port for a DHCP request */\r
@@ -49,7 +50,7 @@
 \r
                /** Destination UDP port for a DHCP reply */\r
                #define UDP_PORT_DHCP_REPLY   68\r
-                       \r
+\r
        /* Type Defines: */\r
                /** Type define for a UDP packet header */\r
                typedef struct\r
index eb03d62..c39703e 100644 (file)
@@ -202,7 +202,8 @@ CSTANDARD = -std=gnu99
 \r
 # Place -D or -U options here for C sources\r
 CDEFS  = -DF_CPU=$(F_CPU)UL -DF_CLOCK=$(F_CLOCK)UL -DBOARD=BOARD_$(BOARD) $(LUFA_OPTS)\r
-CDEFS += -DNO_DECODE_ETHERNET -DNO_DECODE_ARP -DNO_DECODE_ICMP -DNO_DECODE_IP -DNO_DECODE_TCP -DNO_DECODE_UDP -DNO_DECODE_DHCP\r
+CDEFS += -DNO_DECODE_ETHERNET -DNO_DECODE_ARP -DNO_DECODE_ICMP\r
+CDEFS += -DNO_DECODE_IP -DNO_DECODE_TCP -DNO_DECODE_UDP -DNO_DECODE_DHCP -DNO_DECODE_DNS\r
 \r
 \r
 # Place -D or -U options here for ASM sources\r
index b91a56b..5b140a1 100644 (file)
@@ -50,6 +50,9 @@
                #include "IP.h"\r
                \r
        /* Macros: */\r
+               /** Physical MAC address of the USB RNDIS network adapter */\r
+               #define ADAPTER_MAC_ADDRESS              {0x02, 0x00, 0x02, 0x00, 0x02, 0x00}\r
+       \r
                /** Physical MAC address of the virtual server on the network */\r
                #define SERVER_MAC_ADDRESS               {0x00, 0x01, 0x00, 0x01, 0x00, 0x01}           \r
 \r
index aac72ae..53bd8bf 100644 (file)
@@ -275,6 +275,5 @@ void DecodeDHCPHeader(void* InDataStart)
                \r
                DHCPOptions += ((DHCPOptions[0] == DHCP_OPTION_PAD) ? 1 : (DHCPOptions[1] + 2));\r
        }\r
-\r
        #endif\r
 }\r
index 104cac7..72f9f5f 100644 (file)
@@ -45,9 +45,6 @@
                #include "Ethernet.h"\r
 \r
        /* Macros: */\r
-               /** Physical MAC Address of the USB network adapter */\r
-               #define ADAPTER_MAC_ADDRESS                   {0x02, 0x00, 0x02, 0x00, 0x02, 0x00}\r
-       \r
                /** Implemented RNDIS Version Major */\r
                #define REMOTE_NDIS_VERSION_MAJOR             0x01\r
 \r
index 57b3f3a..2537286 100644 (file)
@@ -58,19 +58,18 @@ TCP_ConnectionState_t  ConnectionStateTable[MAX_TCP_CONNECTIONS];
  */\r
 void TCP_Task(void)\r
 {\r
-       /* Task to hand off TCP packets to and from the listening applications. */\r
-\r
        /* Run each application in sequence, to process incoming and generate outgoing packets */\r
        for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++)\r
        {\r
                /* Find the corresponding port entry in the port table */\r
-               for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)\r
+               for (uint8_t PTableEntry = 0; PTableEntry < MAX_OPEN_TCP_PORTS; PTableEntry++)\r
                {\r
                        /* Run the application handler for the port */\r
                        if ((PortStateTable[PTableEntry].Port  == ConnectionStateTable[CSTableEntry].Port) && \r
                            (PortStateTable[PTableEntry].State == TCP_Port_Open))\r
                        {\r
-                               PortStateTable[PTableEntry].ApplicationHandler(&ConnectionStateTable[CSTableEntry], &ConnectionStateTable[CSTableEntry].Info.Buffer);\r
+                               PortStateTable[PTableEntry].ApplicationHandler(&ConnectionStateTable[CSTableEntry],\r
+                                                                              &ConnectionStateTable[CSTableEntry].Info.Buffer);\r
                        }\r
                }\r
        }\r
@@ -89,7 +88,7 @@ void TCP_Task(void)
                        Ethernet_Frame_Header_t* FrameOUTHeader = (Ethernet_Frame_Header_t*)&FrameOUT.FrameData;\r
                        IP_Header_t*             IPHeaderOUT    = (IP_Header_t*)&FrameOUT.FrameData[sizeof(Ethernet_Frame_Header_t)];\r
                        TCP_Header_t*            TCPHeaderOUT   = (TCP_Header_t*)&FrameOUT.FrameData[sizeof(Ethernet_Frame_Header_t) +\r
-                                                                                                    sizeof(IP_Header_t)];                                              \r
+                                                                                                    sizeof(IP_Header_t)];\r
                        void*                    TCPDataOUT     = &FrameOUT.FrameData[sizeof(Ethernet_Frame_Header_t) +\r
                                                                                      sizeof(IP_Header_t) +\r
                                                                                      sizeof(TCP_Header_t)];\r
@@ -367,11 +366,12 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
                /* Detect RST from host to abort existing connection */\r
                if (TCPHeaderIN->Flags & TCP_FLAG_RST)\r
                {\r
-                       TCPHeaderOUT->Flags = (TCP_FLAG_RST | TCP_FLAG_ACK);                            \r
-                       PacketResponse = true;\r
-                       \r
-                       TCP_SetConnectionState(TCPHeaderIN->DestinationPort, IPHeaderIN->SourceAddress,\r
-                                              TCPHeaderIN->SourcePort, TCP_Connection_Closed);                 \r
+                       if (TCP_SetConnectionState(TCPHeaderIN->DestinationPort, IPHeaderIN->SourceAddress,\r
+                                                  TCPHeaderIN->SourcePort, TCP_Connection_Closed))\r
+                       {\r
+                               TCPHeaderOUT->Flags = (TCP_FLAG_RST | TCP_FLAG_ACK);                            \r
+                               PacketResponse = true;                  \r
+                       }\r
                }\r
                else\r
                {\r
@@ -584,10 +584,10 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
 /** Calculates the appropriate TCP checksum, consisting of the addition of the one's compliment of each word,\r
  *  complimented.\r
  *\r
- *  \param[in] TCPHeaderOutStart  Pointer to the start of the packet's outgoing TCP header\r
- *  \param[in] SourceAddress      Source protocol IP address of the outgoing IP header\r
- *  \param[in] DestinationAddress Destination protocol IP address of the outgoing IP header\r
- *  \param[in] TCPOutSize         Size in bytes of the TCP data header and payload\r
+ *  \param[in] TCPHeaderOutStart   Pointer to the start of the packet's outgoing TCP header\r
+ *  \param[in] SourceAddress       Source protocol IP address of the outgoing IP header\r
+ *  \param[in] DestinationAddress  Destination protocol IP address of the outgoing IP header\r
+ *  \param[in] TCPOutSize          Size in bytes of the TCP data header and payload\r
  *\r
  *  \return A 16-bit TCP checksum value\r
  */\r
index dbd33d1..ea67951 100644 (file)
@@ -55,12 +55,13 @@ int16_t UDP_ProcessUDPPacket(void* IPHeaderInStart, void* UDPHeaderInStart, void
        \r
        DecodeUDPHeader(UDPHeaderInStart);\r
        \r
-       /* Check to see if the UDP packet is a DHCP packet */\r
-       if (SwapEndian_16(UDPHeaderIN->DestinationPort) == UDP_PORT_DHCP_REQUEST)\r
+       switch (SwapEndian_16(UDPHeaderIN->DestinationPort))\r
        {\r
-               RetSize = DHCP_ProcessDHCPPacket(IPHeaderInStart,\r
-                                                &((uint8_t*)UDPHeaderInStart)[sizeof(UDP_Header_t)],\r
-                                            &((uint8_t*)UDPHeaderOutStart)[sizeof(UDP_Header_t)]);\r
+               case UDP_PORT_DHCP_REQUEST:\r
+                       RetSize = DHCP_ProcessDHCPPacket(IPHeaderInStart,\r
+                                                        &((uint8_t*)UDPHeaderInStart)[sizeof(UDP_Header_t)],\r
+                                                    &((uint8_t*)UDPHeaderOutStart)[sizeof(UDP_Header_t)]);\r
+                       break;\r
        }\r
        \r
        /* Check to see if the protocol processing routine has filled out a response */\r
index 60bbe21..e3e75a0 100644 (file)
@@ -42,6 +42,7 @@
                #include "EthernetProtocols.h"\r
                #include "Ethernet.h"\r
                #include "ProtocolDecoders.h"\r
+               #include "DHCP.h"\r
        \r
        /* Macros: */\r
                /** Source UDP port for a DHCP request */\r
 \r
                /** Destination UDP port for a DHCP reply */\r
                #define UDP_PORT_DHCP_REPLY   68\r
-                       \r
+\r
+               /** Source UDP port for a DNS request/response */\r
+               #define UDP_PORT_DNS          53\r
+\r
        /* Type Defines: */\r
                /** Type define for a UDP packet header */\r
                typedef struct\r
index f6afb69..a2a0c3b 100644 (file)
@@ -1,12 +1,8 @@
 uint8_t TEMPLATE_FUNC_NAME (void* Buffer, uint16_t Length)\r
 {\r
-       uint8_t* DataStream     = (uint8_t*)(Buffer + TEMPLATE_BUFFER_OFFSET(Length));\r
-       bool     LastPacketFull = false;\r
+       uint8_t* DataStream = (uint8_t*)(Buffer + TEMPLATE_BUFFER_OFFSET(Length));\r
        \r
-       if (Length > USB_ControlRequest.wLength)\r
-         Length = USB_ControlRequest.wLength;\r
-\r
-       while (Length || LastPacketFull)\r
+       while (Length)\r
        {\r
                if (Endpoint_IsSETUPReceived())\r
                  return ENDPOINT_RWCSTREAM_HostAborted;\r
@@ -16,8 +12,6 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer, uint16_t Length)
                  \r
                if (Endpoint_IsOUTReceived())\r
                {\r
-                       LastPacketFull = (Endpoint_BytesInEndpoint() == USB_ControlEndpointSize);\r
-               \r
                        while (Length && Endpoint_BytesInEndpoint())\r
                        {\r
                                TEMPLATE_TRANSFER_BYTE(DataStream);\r
@@ -25,9 +19,6 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer, uint16_t Length)
                        }\r
                        \r
                        Endpoint_ClearOUT();\r
-                       \r
-                       if (!(LastPacketFull))\r
-                         Length = 0;\r
                }                 \r
        }\r
        \r