I am looking at this, for a similar project. It seems light and simple enough that you could have a quick trial. Converting those functions to threads shouldn't be too time consuming.
Once every activity is implemented as thread, you could use semaphores to hold them blocked and then create a state machine which controls them through the semaphores.