Introducing a state machine is a very good idea ! This will finally make it possible to distinguish between the first start (after the route was loaded and/or changed) from a pause. Question is what transitions will lead to the paused state. You could try:
- speed below a certain value for a certain amount of time, or
- input via the start/stop button (long or short as suggested in a previous post in this thread)
Conversely, the transition from paused to running:
- speed above a certain limit (like suggested here), or
- start/stop button pressed
I think that this would allow for a great improvement of the user experience.