Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / Demos / Device / LowLevel / RNDISEthernet / Lib / ICMP.c
index 02a401f..179c56c 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2011.
+
   dean [at] fourwalledcubicle [dot] com
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  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
   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
   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
   software without specific, written prior permission.
 
   The author disclaim all warranties with regard to this
@@ -34,7 +34,7 @@
  *  Echo requests from the host, to indicate a successful network connection between the host
  *  and the virtual server.
  */
  *  Echo requests from the host, to indicate a successful network connection between the host
  *  and the virtual server.
  */
+
 #include "ICMP.h"
 
 /** Processes an ICMP packet inside an Ethernet frame, and writes the appropriate response
 #include "ICMP.h"
 
 /** Processes an ICMP packet inside an Ethernet frame, and writes the appropriate response
@@ -45,7 +45,8 @@
  *
  *  \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
  */
  *
  *  \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
  */
-int16_t ICMP_ProcessICMPPacket(void* InDataStart, void* OutDataStart)
+int16_t ICMP_ProcessICMPPacket(void* InDataStart,
+                               void* OutDataStart)
 {
        ICMP_Header_t* ICMPHeaderIN  = (ICMP_Header_t*)InDataStart;
        ICMP_Header_t* ICMPHeaderOUT = (ICMP_Header_t*)OutDataStart;
 {
        ICMP_Header_t* ICMPHeaderIN  = (ICMP_Header_t*)InDataStart;
        ICMP_Header_t* ICMPHeaderOUT = (ICMP_Header_t*)OutDataStart;
@@ -61,19 +62,20 @@ int16_t ICMP_ProcessICMPPacket(void* InDataStart, void* OutDataStart)
                ICMPHeaderOUT->Checksum = 0;
                ICMPHeaderOUT->Id       = ICMPHeaderIN->Id;
                ICMPHeaderOUT->Sequence = ICMPHeaderIN->Sequence;
                ICMPHeaderOUT->Checksum = 0;
                ICMPHeaderOUT->Id       = ICMPHeaderIN->Id;
                ICMPHeaderOUT->Sequence = ICMPHeaderIN->Sequence;
-               
-               uint16_t DataSize = FrameIN.FrameLength - ((((uint16_t)InDataStart + sizeof(ICMP_Header_t)) - (uint16_t)FrameIN.FrameData));
-               
+
+               intptr_t DataSize = FrameIN.FrameLength - ((((intptr_t)InDataStart + sizeof(ICMP_Header_t)) - (intptr_t)FrameIN.FrameData));
+
                /* Copy the remaining payload to the response - echo requests should echo back any sent data */
                /* Copy the remaining payload to the response - echo requests should echo back any sent data */
-               memcpy(&((uint8_t*)OutDataStart)[sizeof(ICMP_Header_t)],
-                      &((uint8_t*)InDataStart)[sizeof(ICMP_Header_t)],
-                          DataSize);
+               memmove(&((uint8_t*)OutDataStart)[sizeof(ICMP_Header_t)],
+                       &((uint8_t*)InDataStart)[sizeof(ICMP_Header_t)],
+                           DataSize);
 
                ICMPHeaderOUT->Checksum = Ethernet_Checksum16(ICMPHeaderOUT, (DataSize + sizeof(ICMP_Header_t)));
 
                /* Return the size of the response so far */
                return (DataSize + sizeof(ICMP_Header_t));
        }
 
                ICMPHeaderOUT->Checksum = Ethernet_Checksum16(ICMPHeaderOUT, (DataSize + sizeof(ICMP_Header_t)));
 
                /* Return the size of the response so far */
                return (DataSize + sizeof(ICMP_Header_t));
        }
-       
+
        return NO_RESPONSE;
 }
        return NO_RESPONSE;
 }
+