I want listen for calls and make an action

void loop() {
	
  mySerial.println("RING");
    //Detect incomming call
    if (answer == 1)
    {
        Serial.println("Incoming call");          
          
          if ( flag == 0){
            
              for (int i=0; i<19; i++){
               // read the incoming byte:
               while (mySerial.available() == 0)
               {                 
                 delay (50);
               }
               //Stores phone number
               number[i] = mySerial.read();  
               
              }
              Serial.flush();
              flag = 1; 
          }          
          //Stores phone calling number
          for (int i=0; i<=14; i++){
            if(number[i]== '"'){
              i++;
              realnumber[0]=number[i];
              i++;
              realnumber[1]=number[i];
              i++;
              realnumber[2]=number[i];
              i++;
              realnumber[3]=number[i];
              i++;
              realnumber[4]=number[i];
              i++;
              realnumber[5]=number[i];
              i++;
              realnumber[6]=number[i];
              i++;
              realnumber[7]=number[i];
              i++;
              realnumber[8]=number[i];
			  i++;
              realnumber[9]=number[i];
              break;
            }            
    }
    //Check phone number
    for (int i=0;i<10;i++){ 
      if (realnumber[i] == mynumber[i]){
          a++;       
          if( a==9){  
             Serial.println("Correct number");
             mySerial.println("ATH");
               if(b==1){
                  b=0;
                }else{                  
                  b=1;
                  c=1;
                    }
                    break;
                  }
                }else{             
                  Serial.println("Wrong number");
                  break;
                 }
              }          
     a=0;
     answer=0;
     flag = 0;     
}

I don’t get any feedback when I run the code. My setup function and other functions are correct. Where am I wrong?

My setup function and other functions are correct

I guess we're just going to have to take your word for that.

Your code is clearly incomplete (at the very least, there's a whole bunch of missing comments), so how are we expected to know how it should behave?

#include <SoftwareSerial.h>
#include <String.h>
#define DEBUG true
SoftwareSerial mySerial(7,8); 

int8_t answer;
int Powerkey= 9;
char aux_string[30];
int flag = 0;
char number [20];
char realnumber[10];
char mynumber[10];
int a=0;
int b=0;
int c=0;
//Your phone number
char phone_number[]="020585379";  

char data[100];
int data_size;

char aux_str[30];
char aux;
int x = 0;
char N_S,W_E;

char url[] = "eyramm.azurewebsites.net";
char frame[200];

char latitude[15];
char longitude[15];
char altitude[6];
char date[16];
char time[7];
char satellites[3];
char speedOTG[10];
char course[10];



void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  pinMode(Powerkey, OUTPUT);
  power_on();
  delay(5000);
  network_connect();

  mynumber[0]='0';
    mynumber[1]='1';
    mynumber[2]='2';
    mynumber[3]='3';
    mynumber[4]='4';
    mynumber[5]='5';
    mynumber[6]='6';
    mynumber[7]='7';
    mynumber[8]='8';
  mynumber[9]='9';
  
 while ( start_GPS() == 0);
 Serial.println("I am here");
}


void loop() {

//("AT+CGPSSTATUS?,\"2D Fix\"")
 
  mySerial.println("RING");
    //Detect incomming call
    if (answer == 1)
    {
        Serial.println("Incoming call");          
          
          if ( flag == 0){
            
              for (int i=0; i<19; i++){
               // read the incoming byte:
               while (mySerial.available() == 0)
               {                 
                 delay (50);
               }
               //Stores phone number
               number[i] = mySerial.read();  
               
              }
              Serial.flush();
              flag = 1; 
          }          
          //Stores phone calling number
          for (int i=0; i<=14; i++){
            if(number[i]== '"'){
              i++;
              realnumber[0]=number[i];
              i++;
              realnumber[1]=number[i];
              i++;
              realnumber[2]=number[i];
              i++;
              realnumber[3]=number[i];
              i++;
              realnumber[4]=number[i];
              i++;
              realnumber[5]=number[i];
              i++;
              realnumber[6]=number[i];
              i++;
              realnumber[7]=number[i];
              i++;
              realnumber[8]=number[i];
  i++;
              realnumber[9]=number[i];
              break;
            }            
    }
    //Check phone number
    for (int i=0;i<10;i++){ 
      if (realnumber[i] == mynumber[i]){
          a++;       
          if( a==9){  
             Serial.println("Correct number");
             mySerial.println("ATH");
               if(b==1){
                  b=0;
                }else{                  
                  b=1;
                  c=1;
                    }
                    break;
                  }
                }else{             
                  Serial.println("Wrong number");
                  break;
                 }
              }          
     a=0;
     answer=0;
     flag = 0;     
}

/*
//Send SMS once and position to HTTP                   
if (b==1){
     //get_GPS();
    // send_HTTP();
     delay(500);                                       
    if (c==1){
      //sendSMS();
      delay(100);
      c=0;                   
      }               
     }

*/
}

void power_on(){
 
  digitalWrite(Powerkey, HIGH); //ON
  Serial.println("Powering On");
  delay(10000);
  Serial.println("Powered On");
}

void network_connect(){
 
 mySerial.println("AT+CPIN?");
 delay(100);
 ShowSerialData();
 
 
 
 mySerial.println("AT+COPS?");
 ShowSerialData();
 delay(1000);
 

 mySerial.println("AT+CREG?");
 ShowSerialData();
 delay(1000);
 
 
 mySerial.println("AT+CLIP=1");
 ShowSerialData();
 delay(1000);
 
 
 mySerial.println("AT+SAPBR=1,1");
 ShowSerialData();
 delay(1000);
 
 
 mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"");
 ShowSerialData();
 delay(1000);
 
 
 
 //mySerial.println("+CREG: 0,1");
 //delay(100);
 //ShowSerialData();
}

void ShowSerialData()
{
while(mySerial.available()!=0)
Serial.write(mySerial.read());
}

int8_t start_GPS(){
 
 unsigned long previous;

    previous = millis();
    // starts the GPS
    mySerial.println("AT+CGPSPWR=1");
 delay(100);
 ShowSerialData();
    mySerial.println("AT+CGPSRST=0");
 delay(100);
 ShowSerialData();
 delay(10000);

    // waits for fix GPS
 
 mySerial.println("AT+CGPSSTATUS?");
 ShowSerialData();
 
 (millis() - (previous) < 90000);

    if ((millis() - previous) < 90000)
    {
        return 1;
    }
    else
    {
        return 0;    
 }

}

This is the complete code

deekson:
This is the complete code

And the comments . . ?
Observations?
Prints?

You know, anything you feel you want to share.

I have an issue with the incoming call loop. I’m supposed to make it detect an incoming call and then perform the corresponding actions.

I'm supposed to make it

And how's that going?

I have an issue with the incoming call loop

And that issue is . . ?

:frowning:

I need assistance with the correct code please. There's something wrong with it and I don't know. The code needs to detect and incoming call and perform the set of actions.

I think the problem is from this section

answer =  mySerial.println("+CLIP:,\"\"");
    //Detect incomming call
    if (answer == 1)
    {
        Serial.println("Incoming call");

  }

But I can't figure it out. What should I do?

Are you getting any responses for the commands sent from arduino to the module?

Yes, I am. When it gets to where it's supposed to detect the call in the loop, it gets stuck.