Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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);
- }
- }
- //Enable dtmf
- theGSM3ShieldV1ModemCore.genericCommand_rqc("AT+QTONEDET=1", true); // Send command
- delay(1000); // Wait for response
- bool resp;
- theGSM3ShieldV1ModemCore.genericParse_rsp(resp);
- if(resp){
- Serial.println("DTMF Enabled");
- }else{
- Serial.println("DTMF NOT Enabled");
- }
- // 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.");
- const char* strSearch = "QTONEDET:";
- int len = strlen(strSearch);
- int sum=0;
- while(Serial.read()!='\n'){
- char c = theGSM3ShieldV1ModemCore.theBuffer().read();
- sum = (c==strSearch[sum]) ? sum+1 : 0;
- if(sum == len){
- sum=0;
- int n;
- n = atoi(theGSM3ShieldV1ModemCore.theBuffer().read());
- Serial.print("Tone found:");
- Serial.println(n);
- break;
- }
- delay(100);
- }
- vcs.hangCall();
- Serial.println("HANG. Waiting Call.");
- break;
- }
- delay(1000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement