#include "LEDandButtonClass.h"
#define LED1 15     //A0
#define LED2 19     //A5
#define BUTTON1 12  //12 
#define BUTTON2 9   //9
#define BUTTON3 22  //SCL


LEDTimer ledCallPerson1(LED1,4000); // pin number and milli second delay for light's On time 
LEDTimer ledTextPerson1(LED2,4000);

class CallButton : public Button7600 {
  public:
  char aux_string[20];
  CallButton(int pin, const char* c) : Button7600(pin) {
    sprintf(aux_string,"ATD%s;", c);
  }
  void onPressUp( ) override{
    /*--------------------
    for call 
      Serial1.println(aux_string);
      delay(15000);
      Serial1.println("AT+CHUP");      
    --------------------*/
    int check1 = sendATcommand(aux_string,"OK",1000);
    if (check1) {ledCallPerson1.turnOn();/*global*/}
    delay(15000);
    Serial1.println("AT+CHUP");   
  }
};

class TextButton : public Button7600 {
  public:
  char mymsg[5];
  char aux_string[30];
  TextButton(int pin, const char* pn, const char* c) : Button7600(pin) {
    memcpy(mymsg,c,5);
    sprintf(aux_string,"AT+CMGS=\"%s\"", pn);
  }
  void onPressUp( ) override {
    /*--------------------
    for text 
      Serial1.println("AT+CMGF=1");
      Serial1.println(aux_string);
      Serial1.println(mymsg);
      Serial1.write(0x1A);       
    --------------------*/
    int check1 = sendATcommand("AT+CMGF=1","OK",1000);
    int check2 = sendATcommand(aux_string,">",1000);
    if (check2) {ledTextPerson1.turnOn();/*global*/}
    Serial1.println(mymsg);
    Serial1.write(0x1A); 
  }
};

CallButton callPerson1(BUTTON1,"person_1_number");
CallButton callPerson2(BUTTON3,"person_2_number"); //
TextButton textPerson1(BUTTON2,"person_1_number","ping"); // msg can only be length 4 from char mymsg[5];

#define BAUD 9600

void setup()
{
  Serial1.begin(BAUD);
  // Serial.begin(BAUD);
  pinMode(BUTTON1, INPUT_PULLUP); 
  pinMode(BUTTON2, INPUT_PULLUP); 
  pinMode(BUTTON3, INPUT_PULLUP); 
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  digitalWrite(LED1, LOW); 
  digitalWrite(LED2, LOW);
}

void loop()
{
  textPerson1.listen();
  callPerson1.listen();
  callPerson2.listen();
  ledCallPerson1.listen();
  ledTextPerson1.listen();
  delay(50);
}


/*
///////////////////////////////////////////////////////////////////
Talk to the waveshare 7600 with the serial monitor
Set right drop down to Both NL & CR
for SMS example
  > AT+CMGF=1
  > AT+CMGS="your_number"
  > > your message
  > *
///////////////////////////////////////////////////////////////////
#define BAUD 9600
void setup()
{
  Serial.begin(BAUD);
  Serial1.begin(BAUD);
  Serial.print("Ready @ ");
  Serial.print(BAUD);
  Serial.println(" baud");
}
void loop()
{
  while (Serial.available() > 0)
  {
    char c = Serial.read();
    if (c == '*')
        Serial1.write(0x1A);  
      else
        Serial1.write(c);
  }
  while (Serial1.available() > 0)Serial.write(Serial1.read());
}
*/
