Accendi led con chiamata e SMS sim800l

Salve sto utilizzando questo sketch per accendere e spegnere il led sul pin 13 di arduino utilizzando un modulo sim800l:

#include <gprs.h>
#include <SoftwareSerial.h>
 
#define TIMEOUT    5000
int led=13;
 
bool ledStatus;
GPRS gprs;

void setup() {
  Serial.begin(9600);
  while(!Serial);
  pinMode(led, OUTPUT); //inizializza pin 13 come uscita
  Serial.println("Starting SIM800 SMS Command Processor");
  gprs.preInit();
  delay(1000);
 
  while(0 != gprs.init()) {
      delay(1000);
      Serial.print("init error\r\n");
  } 
 
  //Set SMS mode to ASCII
  if(0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT)) {
    ERROR("ERROR:CNMI");
    return;
  }
  
  //Start listening to New SMS Message Indications
  if(0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT)) {
    ERROR("ERROR:CNMI");
    return;
  }
   Serial.println("Init success");
}
//Variable to hold last line of serial output from SIM800
char currentLine[500] = "";
int currentLineIndex = 0;
//Boolean to be set to true if message notificaion was found and next
//line of serial output is the actual SMS message content
bool nextLineIsMessage = false;
 
void loop() {
  
 
  //Write current status to LED pin
  digitalWrite(led, ledStatus);
  
  //If there is serial output from SIM800
  if(gprs.serialSIM800.available()){
    char lastCharRead = gprs.serialSIM800.read();
    //Read each character from serial output until \r or \n is reached (which denotes end of line)
    if(lastCharRead == '\r' || lastCharRead == '\n'){
        String lastLine = String(currentLine);
        
         //If last line read +CMT, New SMS Message Indications was received.
         //Hence, next line is the message content.
        if(lastLine.startsWith("+CMT:")){
           
          Serial.println(lastLine);
          nextLineIsMessage = true;
           
        } else if (lastLine.length() > 0) {
           
          if(nextLineIsMessage) {
            Serial.println(lastLine);
            //Read message content and set status according to SMS content
            if(lastLine.indexOf("LED ON") >= 0){
              ledStatus = 1;
            } else if(lastLine.indexOf("LED OFF") >= 0) {
              ledStatus = 0;
            }
             
            nextLineIsMessage = false;
          }
           
        }
         
        //Clear char array for next line of read
        for( int i = 0; i < sizeof(currentLine);  ++i ) {
         currentLine[i] = (char)0;
        }
        currentLineIndex = 0;
    } else {
      currentLine[currentLineIndex++] = lastCharRead;
    }
  }
}

Adesso vorrei accendere il led quando riceve la chiamata da un determinato numero aggiungendo un comando del genere:

if(ricevi una chiamata dal numero “1234567890”)
{
ledStatus = 1;//accende il led
gprs.sendCmd (“ATH\r\n”);// chiude la telefonata
}

Come dovrei scriverlo questo if?

Ok mi rispondo da solo, almeno in parte, questo è il mio if:

if(lastLine.startsWith("RING")){
Serial.println(lastLine);
Serial.println(F("CHIAMATA IN ARRIVO"));
ledStatus = 1;//accende il led
gprs.sendCmd ("ATH\r\n");// chiude la telefonata
}

Cosi funziona ma non riesco a leggere il numero chiamante, sapete dirmi come faccio vederlo?

Gli devi inviare il comando AT+CLIP=1\r\n
Così quando arriva la chiamata ti appare, dopo il RING

+CLIP: “+39xxxxxxxxxx”,145, etc etc
dove

+CLIP: ,, etc etc

String type (string should be included in quotation marks) phone number of calling address in format specified by .

Type of address octet in integer format;
129 Unknown type
161 National number type
145 International number type
177 Network specific number

Ho scritto questa riga:

gprs.sendCmd(“CLIP=1\r\n”);

e questo è il risultato

RING

+CLIP:"f�����Ċ�I� I j
CLIP=1
ATH

Ok risolto, dovevo mettere gprs.sendCmd("CLIP=1\r\n"); dentro void setup() e non all'interno del loop.
Ciao e sempre mille grazie.