state_machine – State Machine¶
State Machine - lightweight task scheduler and state machine framework.
- 
class codeair.state_machine.State(state_machine, handler)[source]¶
- Represents a state in the state machine. - Initializes a State instance. (Used by StateMachine - not usually used directly by end-user code) - Parameters
- state_machine (StateMachine) – The state machine this state belongs to. 
- handler (function) – The function that handles state events. 
 
 
- 
class codeair.state_machine.StateMachine[source]¶
- A simple state machine framework with task scheduling capabilities. - Initializes a StateMachine instance. - 
add_state(state_func)[source]¶
- Adds a state to the state machine. state_func must be a callable that takes four arguments: - def func(state_machine, event_type, event_data, st_time): pass - The state_func() will be called on every next_state transition, with the event_type set to “enter” or “exit”. 
- It will also be called when event() is called, with event_type set to the event type passed to event(). 
- The st_time argument is the elapsed time since the state was entered, in seconds. 
 - Parameters
- state_func (function) – The function that handles the state. 
 
 - 
add_task(callback, interval, args=None)[source]¶
- Adds a task to be run periodically at a specified interval. 
 - 
enable_debug(do_debug, log_func=<built-in function print>)[source]¶
- Enables or disables debug logging. - Parameters
- do_debug (bool) – If True, enables debug logging. 
- log_func (function) – The function to use for logging. Defaults to print. 
 
 
 - 
event(event_type, event_data=None)[source]¶
- Injects an event into the state machine, handled by the current state. - Parameters
- event_type (str) – The type of event. 
- event_data (any, optional) – The data associated with the event. 
 
 
 - 
next_state(next_state_func, sched_delay=None)[source]¶
- Transitions to a new state. - Parameters
- next_state_func (function) – The function that handles the next state. 
- sched_delay (float) – Optional schedule delay (seconds) before transition. Use 0 to schedule ASAP and break recursion. 
 
 
 - 
remove_task(callback)[source]¶
- Removes a task from the task list. - Parameters
- callback (function) – The function to be removed. 
 
 - 
start(first_state=None)[source]¶
- Starts or re-starts the state machine. - Parameters
- first_state (function, optional) – The function that handles the initial state. Defaults to the first state added. 
 
 - 
sync_task(callback, ns_sync=None)[source]¶
- Set task periodic interval to align with ns_sync as basis. Default to now (time.monotonic_ns()) - Parameters
- callback (function) – The function to be synced. 
- ns_sync (int, optional) – The time in nanoseconds to sync to. Defaults to None, which uses the current time. 
 
 
 
-