arduino-mpduino/serial.ino

71 lines
2.6 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 = 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': 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);
}