/*
Trieda "ArduinoAnswear" - uplatňuej sa procese hlavného meracieho vlákna ThreadM,
kde zodpovedá za správne vyhodnotenie odpovede zardiadenia Arduino, ktoré
indikuje pripravenosť zariadenia vykonať meranie ...
Trieda zachytí správu, z Arduina, rozkúskuje ju, a následne prechádza, s účelom
nájdenia odpovedajúcehu sledu znakov ANSOK ...
 */

package measurementThread;

import CommunicationAndSaving.serialCommunication;

import java.io.IOException;

public class ArduinoAnswear {

    serialCommunication serial;
    String string = "";
    final int TIME_OUT = 30;

    public ArduinoAnswear(serialCommunication serial){
        this.serial = serial;
    }

    public boolean findAnswear() {
        boolean flag = false;
        int counter = 0;

        while(!flag){
            try {
                string += serial.serialRead();
            } catch (IOException e) {
                e.printStackTrace();
            }
            while(!string.endsWith(serial.SPLIT_CHAR_SEPARATOR)){
                try {
                    string += serial.serialRead();
                    System.out.print(string);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                counter++;
                if(counter == TIME_OUT){
                    return flag;
                }
            }
            String[] splitString = string.split(serial.SPLIT_CHAR_SEPARATOR);
            System.out.println(splitString);

            for(String s: splitString){
                if(s.equalsIgnoreCase(serial.ARDUINO_READY)){
                    flag = true;
                    break;
                }
            }
        }
        return flag;
    }

    public void setDataFromArduino(String string){
        this.string = string;
    }

    public String getDataFromArduino(){
        return string;
    }

}
