73 lines
2.8 KiB
C++
73 lines
2.8 KiB
C++
|
|
/*
|
|
SerialEvent occurs whenever a new data comes in the
|
|
hardware serial RX. This routine is run between each
|
|
time loop() runs, so using delay inside loop can delay
|
|
response. Multiple bytes of data may be available.
|
|
*/
|
|
void serialEvent() {
|
|
while (Serial.available()) {
|
|
// get the new byte:
|
|
char inChar = (char)Serial.read();
|
|
// add it to the inputString:
|
|
inputString += inChar;
|
|
// if the incoming character is a newline, set a flag
|
|
// so the main loop can do something about it:
|
|
if (inChar == '\n') {
|
|
stringComplete = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void setFromSerial (String inputString) {
|
|
//remove newline
|
|
inputString = inputString.substring(0, inputString.length() -1);
|
|
char operation1 = inputString.charAt(0);
|
|
String string = "";
|
|
|
|
if ( operation1 == 'E' ){
|
|
//Echo string like: EV means echo volume
|
|
switch ( inputString.charAt(1) ) {
|
|
case 'V': string = volume; break;
|
|
case 'T': string = title; break;
|
|
case 'A': string = artist; break;
|
|
case 'a': string = album; break;
|
|
case 'r': string = repeat_bool; break;
|
|
case 'z': string = shuffle_bool; break;
|
|
case 'x': string = random_bool; break;
|
|
case 'c': string = consume_bool; break;
|
|
case 'u': string = updating_bool; break;
|
|
case 's': string = single_bool; break;
|
|
case 'p': string = progress; break;
|
|
case 'P': string = playing; break;
|
|
default: string = "!"; break;
|
|
}
|
|
Serial.println(string);
|
|
}
|
|
else if ( operation1 == 'S' ){
|
|
bool success = true;
|
|
string = inputString.substring(2);
|
|
|
|
switch ( inputString.charAt(1) ) {
|
|
case 'V': volume = string.toInt(); break;
|
|
case 'T': title = string; break;
|
|
case 'A': artist = string; break;
|
|
case 'a': album = string; break;
|
|
case 'p': progress = string.toInt(); break;
|
|
case 'P': playing = (string != 0); break;
|
|
case 'r': repeat_bool = (string != 0); break;
|
|
case 'z': shuffle_bool = (string != 0); break;
|
|
case 'x': random_bool = (string != 0); break;
|
|
case 'c': consume_bool = (string != 0); break;
|
|
case 'u': updating_bool = (string != 0); break;
|
|
case 's': single_bool = (string != 0); break;
|
|
//Echo
|
|
case '!': Serial.println(string); break;
|
|
default: success = false; break;
|
|
}
|
|
calcMaxTicks();
|
|
Serial.println(int(success), DEC);
|
|
}
|
|
else Serial.println(-1, DEC);
|
|
}
|