#include <SoftwareSerial.h>
const int RX_PIN = 2;
const int TX_PIN = 3;
const int BuzzerPin = 8;
const int ManualReset = 11;
const int CallPin = 10;
SoftwareSerial mySerial(RX_PIN,TX_PIN);
char CommandChar;
String message;
int Lock;

void setup() {
  // put your setup code here, to run once:

  mySerial.begin(9600);
  Serial.begin(9600);
  pinMode(13,OUTPUT); //Red LED incoming Call
  pinMode(12,OUTPUT); //Yellow LED Normal
  pinMode(BuzzerPin,OUTPUT);
  digitalWrite(BuzzerPin,LOW);
  pinMode(ManualReset,INPUT);
  pinMode(CallPin,INPUT);
  //                                                                            noTone(BuzzerPin);
  Lock = 0;

}

void loop() {
  // put your main code here, to run repeatedly:

if(mySerial.available())
{
 //delay(10);
   CommandChar = (char)mySerial.read();
   if(CommandChar != "\n")
   {
    Serial.print(CommandChar);
    if ((String)CommandChar == "P")
    {
      Lock = 1;
       pinMode(BuzzerPin,OUTPUT);
      digitalWrite(12,LOW);
      digitalWrite(13,HIGH);
      digitalWrite(BuzzerPin,HIGH);
      //Serial.println("Received P");
    }
    if (((String)CommandChar =="R") )
    {
      Lock = 0;
      digitalWrite(13, LOW);
      digitalWrite(12,HIGH);
      digitalWrite(BuzzerPin,LOW);
         }
     if ((String)CommandChar == "C")
     {
      mySerial.print("Call*");
     }
    }
  else
    {
    Serial.println(CommandChar);
     }
}//End of mySerial loop

if ((digitalRead(ManualReset) == 1) && (digitalRead(12)==HIGH))
{
//      Lock = 0;
//      digitalWrite(13, LOW);
//      digitalWrite(12,HIGH);
//      pinMode(BuzzerPin,INPUT);
        mySerial.print("Call*");
        Serial.println("called from box");
}

if ((digitalRead(ManualReset) == 1) && (digitalRead(12)==LOW))
{
      Lock = 0;
      digitalWrite(13, LOW);
      digitalWrite(12,HIGH);
      pinMode(BuzzerPin,INPUT);
        mySerial.print("Reset*");
        Serial.println("Reset from box");
}

if (digitalRead(CallPin) ==1)
{
  mySerial.print("Call*");
}

if (Lock == 1)
  {
    digitalWrite(13,HIGH);
    digitalWrite(BuzzerPin,HIGH);
    delay(300);
    digitalWrite(13,LOW);
    digitalWrite(BuzzerPin,LOW);
   // noTone(BuzzerPin);
    delay(300);
  }
  

if (Lock == 0)
{
  digitalWrite(13,LOW);
  digitalWrite(12,HIGH);
  pinMode(BuzzerPin,INPUT);
}
Serial.println(digitalRead(ManualReset));
mySerial.print("Hello*");
//mySerial.println();

delay(2000);

}

      


 
