Problema con librería ICMP

Hola, hace ya un largo tiempo que estoy generando proyectos con Arduino, pero hace unos dias tuve la necesidad de reflotar un trabajo que lo habia dejado resuelto hace varios meses y me encontre con la sorpresa de que no puedo ejecutar los codigos que habia generado en ese momento dado que la libreria ICMP no me lo permite.
El proyecto consiste en un arduino uno, una placa ethernet y bluetooth. Por medio de un pequeño programa en android me conecto via BT con el arduino y este atravez del la placa ethernet testea diferentes IP.
No logro hacer que funcione la libreria ICMP, la cual es la encargada de hacer ping a las difernetes IP. He probado reinstalar el soft de arduino, cambiar de PC, cambiar de Windows, probar con Ubuntu, hasta he llegado a formatear una notebook y no pasa nada, la libreria me sigue generando error.

a continuacion copio el codigo que estoy utilizando.

#include <SPI.h>
#include <Ethernet.h>
#include <ICMPPing.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(9, 8); // RX, TX

char cadenaRX[10] = "\0"; // Cadena para guardar los diferentes comandos.
boolean comandoCompleto = false; // Bandera que muestra cuando se termina de
// recibir un comando.
char *ptr; // Punteros auxiliares.
byte NEXT_char=0x00; // Contador de datos entrantes desde la USART.

int A=192;
int B=168;
int C=7;
int D=118;
int E;
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // max address for ethernet shield
byte ip[] = {192,168,7,10}; // ip address for ethernet shield
//IPAddress pingAddr(192,168,7,118); // ip address to ping

SOCKET pingSocket = 0;

char buffer [256];
ICMPPing ping(pingSocket, (uint16_t)random(0, 255));

void setup() {
Ethernet.begin(mac, ip);
Serial.begin(9600);
mySerial.begin(9600);
memset(cadenaRX, 0, sizeof(cadenaRX));
Serial.print("Esperando IP....");
}

void loop() {

serialEvent();
// Parser.
if (comandoCompleto) {
//Serial.println(cadenaRX);
// Extraemos primer comando.
ptr=strtok(cadenaRX,",");
// Formateamos y guardamos el contenido en una variable.
E = atoi(ptr);
Serial.println(E);
ptr=strtok(NULL,",");
// Formateamos y guardamos el contenido en una variable.
A = atoi(ptr);
Serial.println(A);
// Extraemos el segundo comando.
ptr=strtok(NULL,",");
// Formateamos y guardamos el contenido en una variable.
B = atoi(ptr);
Serial.println(B);
// Extraemos el tercer comando.
ptr=strtok(NULL,",");
// Formateamos y guardamos el contenido en una variable.
C = atoi(ptr);
Serial.println(C);
// Extraemos el cuarto comando.
ptr=strtok(NULL,",");
// Formateamos y guardamos el contenido en una variable.
D = atoi(ptr);
Serial.println(D);

// Borramos el contenido del buffer de la USART.
memset(cadenaRX, 0, sizeof(cadenaRX));
// Inicializamos el index de lectura del buffer.
NEXT_char=0x00;
// información procesada..reseteamos la bandera para un nuevo comando.
comandoCompleto = false;
delay(500);
envioIp();
}

}

// Evento de recepción de datos por puerto serie.
void serialEvent() {
int b=0;
while(mySerial.available()){ // Si el puerto está listo para recibir datos..

char inChar = (char)mySerial.read();
Serial.print(inChar);
if(inChar == 0) {
b=1;
Serial.print(" SRAM Libre: "); Serial.println(freeRam());
Serial.print((char)mySerial.read());
}

if (b==1){
cadenaRX[NEXT_char] = inChar;
if(cadenaRX[NEXT_char]!='')NEXT_char++;
if(NEXT_char==30)NEXT_char=0x00;
if(inChar == '
') {
comandoCompleto = true;
}
}

}
}

void envioIp(){
//Serial.println("recepcion para ping");
IPAddress pingAddr(A,B,C,D); // ip address to ping

ICMPEchoReply echoReply = ping(pingAddr, 4);
if (echoReply.status == SUCCESS)
{
sprintf(buffer,
"Reply[%d] from: %d.%d.%d.%d: bytes=%d time=%ldms TTL=%d",
echoReply.data.seq,
echoReply.addr[0],
echoReply.addr[1],
echoReply.addr[2],
echoReply.addr[3],
REQ_DATASIZE,
millis() - echoReply.data.time,
echoReply.ttl);
Serial.print(" SRAM Libre: "); Serial.println(freeRam());
delay(500);
mySerial.println(" OK ");
// mySerial.println(freeRam());
//delay(1000);

}
else
{
sprintf(buffer, "Echo request failed; %d", echoReply.status);
//Serial.print(" SRAM Libre: ");
//mySerial.println("No IP");
}
Serial.println(buffer);
delay(500);

}

int freeRam()
{
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}

Cualquier ayuda o idea se los agradecería.

Saludos
Gabriel

Bueno, no veo que digas:

  1. Que versión de IDE estas usando, ni que versión usaste en su momento si recuerdas.
    Si la librería es vieja yo te recomiendo no pelear con las cosas y simplemente ir a download IDE y descargar la versión que mas se ajuste a su época.
    Arreglas lo que tienes que arreglar y asunto terminado.

  2. Tampoco pones cual es el error que arroja tu IDE actualmente.

  3. Si nada de lo que te digo es, otra posibilidad que se ha comentado es que puede ocurrir que la MAC sugerida sea rechazada por tu router. En ese caso debes usar la misma mac de tu router y cambiar solo los ultimos dos grupos de numeros.

Veamos que respuestas obtienes y seguimos conversando.

NOTA: por favor, lee las normas del foro y luego edita tu post#1 usando tags. Al leerlas entenderás que te pido hacer.