How to repeat a non loop void ? [SOLVED]

Try to keep all of the serial reading inside one function. Having one function looking for options 1-3 and another looking for 4 means that most of the time you will be in the wrong one. What if a 4 arrives during the time that the first one is active? It reads the character and discards it because it's not looking for a 4. The second one then doesn't get the opportunity to read the 4.

Think of the program having its own internal state. It remembers what command it was asked to do last. Maybe it keeps doing that command or maybe it finishes the command and stops to wait for another. States like is-running and stopped-waiting-for-4 should not be mixed up with the values received from the serial port.