Hide the PROGMEM attribute from Doxygen, as it appears to confuse the parser in some...
[pub/USBasp.git] / Demos / Device / LowLevel / RNDISEthernet / Lib / ICMP.c
index 02a401f..7e4be9c 100644 (file)
@@ -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;
@@ -62,12 +63,12 @@ int16_t ICMP_ProcessICMPPacket(void* InDataStart, void* OutDataStart)
                ICMPHeaderOUT->Id       = ICMPHeaderIN->Id;
                ICMPHeaderOUT->Sequence = ICMPHeaderIN->Sequence;
                
                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)));
 
 
                ICMPHeaderOUT->Checksum = Ethernet_Checksum16(ICMPHeaderOUT, (DataSize + sizeof(ICMP_Header_t)));