La logica è esattamente come la si descriverebbe in italiano:
Quando sono in attesa (ONIDLE)
se comando attivo -> avvia gonfiaggio -> INFLATE
Quando sto gonfiando (INFLATE)
se pressione massima -> ferma gonfiaggio e
annota tempo attuale -> PAUSE
Quando sono in pausa (PAUSE)
se trascorsi N secondi -> avvia sgonfiaggio -> DEFLATE
altrimenti se pressione bassa -> avvia gonfiaggio -> REFILL
Quando sto rabboccando (REFILL)
se trascorsi N secondi -> avvia sgonfiaggio -> DEFLATE
altrimenti se pressione massima -> ferma gonfiaggio -> PAUSE
Quando sto sgonfiando (DEFLATE)
se pressione minima -> ferma sgonfiaggio -> WAIT_NO_COMMAND
Quando sto attendendo nessun comando (WAIT_NO_COMMAND)
se comando disattivo -> ONIDLE
Poi questa è una logica di partenza, su un sistema reale io vorrei poter interrompere il processo in qualsiasi momento, e far fronte ai guasti della sonda pressione (ad esempio aggiungendo dei timeout). Ma queste modifiche sono solo altre semplici righe descrittive da aggiungere ai "quando" (gli stati/situazioni), o altre situazioni, ad esempio uno stato ERROR.