ENVIAR Y RECIBIR SMS CON ARDUINO Y MODEM GPRS

Hola,
Estoy utilizando el siguiente código para que arduino lea y reciba sms. Cuando tenga un sms no leído mandará una señal y un sms a un número determinado.
No sé que es lo que no funciona porque no hace lo que supuestamente debería.
int ledPin = 13; // PIN de test
char temp[58];
byte readByte=' '; // Variable donde leemos del puerto serie

int seleccion;

void setup() {

Serial.begin(9600);
configurarCMC("+34644109030"); // Definir CMC
// configurarCMC("+34607003110") vodafone
messageFormat(true); // Modo TEXTO

}

void configurarCMC(char* CMC){
/*
Configura el CMC a través del cual se van a remitir los SMS
MoviStar +34609090909
Orange +34?????????
Vodafone +34?????????

Ejemplo:

Comando: AT+CSCA=+34609090909
Respuesta: OK

*/
Serial.print("at+csca=");
Serial.println(CMC);
delay(1000);
}

void messageFormat(boolean formato){
/*
Elige el formato con el que vamos a trabajar

Ejemplo:

Comando: AT+CMFG=1
Respuesta: OK

*/
Serial.print("at+cmgf=");
if (formato) {
Serial.println("1"); // Modo texto
}else {
Serial.println("0"); // Modo PDU
}
delay(1000);
}

void loop()
{

/*
Solicita el listado de los SMS que hay en la SIM.
Según "selección" se muestran:
0 Menssajes no leidos
1 Mensajes leidos
2 Mensajes almacenados sin enviar
3 Mensajes almacenados y enviados
4 Todos

Ejemplo 1: Hay SMS almacenados

Comando: AT+CMGL=ALL
Respuesta:
+CMGL: 1,"REC UNREAD","609090909",,"07/04/05,22:03:33+08"
Mensaje de prueba
+CMGL: 2,"REC UNREAD","609090909",,"07/04/05,22:03:35+08"
Mensaje de prueba
+CMGL: 3,"REC UNREAD","609090909",,"07/04/05,22:03:42+08"
Mensaje de prueba
OK

Ejemplo 2: No hay SMS almacenados

Comando: AT+CMGL=ALL
Respuesta: OK

*/
Serial.print("at+cmgl=");
switch (seleccion) {
case 0: Serial.println("REC UNREAD");

Serial.print("AT+CMGS=");
Serial.print(34,BYTE); // send the " char
Serial.print("6+++9"); // send the number change *** by the actual number
Serial.println(34,BYTE);
delay(1500);
Serial.print("Mensaje nuevo recibido");
delay(500);
digitalWrite(13, HIGH); // set the LED on
delay(2000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000);
digitalWrite(13, HIGH); // set the LED off
delay(5000);
Serial.print("at+cmgr=1");
break;
case 1: Serial.println("REC READ");
break;
case 2: Serial.println("STO UNSENT");
break;
case 3: Serial.println("STO SENT");
break;
case 4: Serial.println("ALL");
break;
}
delay(1000);

GRACIAS