Reference    Language | Libraries | Comparison | Changes
GSM : GSMVoiceCall class
retrieveCallingNumber()
Description
Retrieves the calling number, and stores it. 
Syntax
voice.retrieveCallingNumber(number, size)
Parameters
- number : char array to hold the number
- size : the size of the array
Returns
int
In asynchronous mode, retrieveCallingNumber() returns 0 if the last command is still executing, 1 if success, and >1 if there is an error. In synchronous mode, it returns 1 if the number is obtained 0 if not.
Example
  #include <GSM.h>
// PIN Number
#define PINNUMBER ""
// initialize the library instance
GSM gsmAccess; // include a 'true' parameter for debug enabled
GSMVoiceCall vcs;
char numtel[20];           // buffer for the incoming call
void setup()
{
  // initialize serial communications
  Serial.begin(9600);
  Serial.println("Receive Voice Call");
  // connection state
  boolean notConnected = true;
  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  // This makes sure the modem notifies correctly incoming events
  vcs.hangCall();
  Serial.println("Waiting Call");
}
void loop()
{
  // Check the status of the voice call
  switch (vcs.getvoiceCallStatus()) 
  {
    case IDLE_CALL: // Nothing is happening
      break;
    case CALLING: // This should never happen, as we are not placing a call
      Serial.println("CALLING");
      break;
    case RECEIVINGCALL: // Yes! Someone is calling us
      Serial.println("RECEIVING CALL");
      // Retrieve the calling number
      vcs.retrieveCallingNumber(numtel, 20);
      // Print the calling number
      Serial.print("Number:");
      Serial.println(numtel);
      // Answer the call, establish the call
      vcs.answerCall();         
      break;
    case TALKING:  // In this case the call would be established
      Serial.println("TALKING. Enter line to interrupt.");
      while(Serial.read()!='\n')
        delay(100);
      vcs.hangCall();
      Serial.println("HANG. Waiting Call.");      
      break;
  }
  delay(1000);
}
 
 
See Also
Reference Home
Corrections, suggestions, and new documentation should be posted to the Forum.
The text of the Arduino reference is licensed under a
Creative Commons Attribution-ShareAlike 3.0 License.  Code samples in the reference are released into the public domain.