Removed 'loop' avoidance

Cleans up the code slightly. If the compiler is smart, the functions are
inlined regardless.
This commit is contained in:
David Madison 2017-05-05 09:05:47 -04:00
parent 0e16794589
commit e9092c39fe
1 changed files with 20 additions and 29 deletions

View File

@ -117,39 +117,35 @@ void setup(){
#endif
Serial.begin(SerialSpeed);
Serial.print("Ada\n"); // Send ACK string to host
lastByteTime = lastAckTime = millis(); // Set initial counters
}
void loop(){
adalight();
}
void adalight(){
Serial.print("Ada\n"); // Send ACK string to host
// Implementation is a simple finite-state machine.
// Regardless of mode, check for serial input each time:
t = millis();
lastByteTime = lastAckTime = millis();
if((c = Serial.read()) >= 0){
lastByteTime = lastAckTime = t; // Reset timeout counters
// loop() is avoided as even that small bit of function overhead
// has a measurable impact on this code's overall throughput.
for(;;) {
// Implementation is a simple finite-state machine.
// Regardless of mode, check for serial input each time:
t = millis();
if((c = Serial.read()) >= 0){
lastByteTime = lastAckTime = t; // Reset timeout counters
switch(mode) {
case MODE_HEADER:
headerMode();
break;
case MODE_DATA:
dataMode();
break;
}
}
else {
timeouts();
switch(mode) {
case MODE_HEADER:
headerMode();
break;
case MODE_DATA:
dataMode();
break;
}
}
else {
timeouts();
}
}
void headerMode(){
@ -231,8 +227,3 @@ void timeouts(){
}
}
}
void loop(){
// loop() is avoided as even that small bit of function overhead
// has a measurable impact on this code's overall throughput.
}