Arduino VoiceCall: getvoiceCallStatus()

Hallo,
ich möchte gerne mit dem Arduino und dem GSM Shield einen Sprachanruf
starten. Das klappt auch soweit ohne Probleme.
Jedoch würde ich gerne wenn eine Nummer angerufen wird und nach 5
Sekunden nicht abgenommen wurde, den Anruf beenden. Dazu muss ich ja
irgendwie den Status abfragen.
So habe ich es versucht:

 unsigned long previousMillis = 0;
 unsigned long interval = 5000; 
 previousMillis = millis();   
 vcs.voiceCall(Telefonnummer);
      
 while(vcs.getvoiceCallStatus() == CALLING)
 {          
     Serial.println((millis() - previousMillis));
     if((millis() - previousMillis) > interval)
       {
           vcs.hangCall();
       }
 }

Vorher beim Herstellen der Verbindung zum GSM habe ich den asynchronen Modus aktiviert:

gsmAccess.begin(PINNUMBER,true,false);

Allerdings bleibt das Programm trotz des asynchronen Modus beim Befehl vcs.voiceCall() stehen. Durch das Ausgeben der Millisekunden konnte ich feststellen, das der nachfolgende Code erste nach ca. 30 Sekunden ausgeführt wird. Dies ist sowohl beim synchronen als auch beim asynchronen so.

Hat jemand eine Idee voran das liegen kann?
Bei Bedarf kann ich gerne den kompletten Code posten, welcher jedoch auf den Beispielprogramm 'MakeVoiceCall' basiert.

Ich bin für jede Hilfe dankbar.
Schöne Grüße
Ludwig

Das Problem liegt wohl in der Bibliothek, die Du verwendest - welche ist das (link)?

Möglicherweise hat die für voiceCall() bereits einen Timeout eingebaut, der sich ggf. irgendwie einstellen läßt.

Vielen, vielen Dank DrDiettrich für die Antwort! Das war die Lösung!

Ich verwende die Bibliothek die von der Arduino IDE zur Verfügung gestellt wird.

Link GSM.h

Ich habe ein bisschen recherchiert. Die Datei GSM3VoiceCallService.h (Link GSM3VoiceCallService.h) weißt eine verdächtige Methode auf:

int voiceCall(const char* to, unsigned long timeout=30000);
		
		/** Accept an incoming voice call
			@return In asynchronous mode returns 0 if last command is still executing, 1 success, >1 error
					In synchronous mode returns 1 if the call is answered, 0 if not.
		*/

Dieses Tiemout habe ich jetzt angepasst, sodass ich den Status abfragen kann.

Gruß Ludwig