A Mode State Machine
from enum import Enum, auto
class UM(Enum):
UM_POWERUP = 0
UM_IDLE = auto()
UM_DO_SOMETHING = auto()
current_mode = UM.UM_POWERUP
current_mode_last = -1
#***************************************
#***************************************
#********** OPERATION PROCESS **********
#***************************************
#***************************************
def operation_process():
global current_mode
global current_mode_last
#------------------------------
#----- CHECK FOR NEW MODE -----
#------------------------------
just_entered_new_mode = False;
if current_mode != current_mode_last:
#Flag that we've just entered a new mode
just_entered_new_mode = True;
current_mode_last = current_mode;
#------------------------------------
#------------------------------------
#----- PROCESS THE CURRENT MODE -----
#------------------------------------
#------------------------------------
try:
match (current_mode):
case UM.UM_POWERUP:
#-------------------
#-------------------
#----- POWERUP -----
#-------------------
#-------------------
if just_entered_new_mode:
#----- JUST ENTERED THIS MODE -----
pass
#------------------------
#----- PROCESS MODE -----
#------------------------
#Exit to mode idle
current_mode = UM.UM_IDLE
case UM.UM_IDLE:
#-------------------------------
#-------------------------------
#----- IDLE - DEFAULT MODE -----
#-------------------------------
#-------------------------------
if just_entered_new_mode:
#----- JUST ENTERED THIS MODE -----
pass
#------------------------
#----- PROCESS MODE -----
#------------------------
#<<<<< ADD OTHER MODES HERE
#END OF match (current_mode):
except GeneratorExit:
#match break equivalent exit point (use: raise GeneratorExit("") )
pass
