String data_In;
String DT[10];
int i;
boolean flag_parse = false;


//LED PORT
int LED1 = 23;
int LED2 = 22;
int flag_Led1, flag_Led2;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Parsing Data Ready!");
  data_In;
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available()>0){
    char inputChar = (char) Serial.read();
    data_In += inputChar;
    if(inputChar == '\n'){
      flag_parse = true; // marking progress
    }
  }
  if(flag_parse){
    parsing_Data();
    flag_parse = false;
    data_In=""; // reset string buffer
  }
  led(LED1, flag_Led1);
  led(LED2, flag_Led2);

}

void parsing_Data(){
  int j = 0;
  // Read data input from serial
  Serial.print("Isi data In: "); Serial.println(data_In);
  // Clearing Inisial Data
  DT[j] = "";
  //Basic Algorithm for parsing data
  for(i = 0; i < data_In.length(); i++){
    //checking sparator data frame in csv format --> data1; data2; data3
    if(data_In[i] == ' ' || data_In[i] == '=' || data_In[i] == '\n'){
      j++;
      DT[j] = ""; //Inisialisasi array DT[j]
    }else{
      DT[j] = DT[j] + data_In[i];
    }

  }
  
  // Serial.print("Data 0= ");Serial.println(DT[0].toInt());
  // Serial.print("Data 1= ");Serial.println(DT[1].toInt());
  /*
  PARAM LED1=1

  SET LED1=1

  RUN ALL
  KILL

  ETC

  flag_Led1 = DT[0].toInt();
  flag_Led2 = DT[1].toInt();
  */
  if(DT[0] == "PARAM"){
    Serial.println("Param True!");
    if(DT[1] == "LED1"){
      Serial.println("LED1 Sellected!");
      flag_Led1 = DT[2].toInt();
      Serial.print("Data LED1:");Serial.println(flag_Led1);
    }if(DT[1] == "LED2"){
      Serial.println("LED1 Sellected!");
      flag_Led2 = DT[2].toInt();
      Serial.print("Data LED2:");Serial.println(flag_Led2);
    }else{
      Serial.println("Another LED!");
    }
  }if(DT[0] == "RUN"){
    Serial.println("Running");
    if(DT[1] == "ALL"){
      flag_Led1 = 1;
      flag_Led2 = 1;
      Serial.println("All");
    }else{
      Serial.println("Stop!");
    }
  }if(DT[0] == "KILL"){
    Serial.println("KILLED");
    if(DT[1] == "ALL"){
      flag_Led1 = 0;
      flag_Led2 = 0;
      Serial.println("All");
    }else{
      Serial.println("RUNNING!");
    }
  }else{
    Serial.println("Another Command!");
  }


  
}

void led(int ch, int state){
  if(state == 0){
    digitalWrite(ch, HIGH);
  }
  if(state == 1){
    digitalWrite(ch, LOW);
  }
}