Zephyr Project API 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
smf.h File Reference

State Machine Framework header file. More...

#include <zephyr/sys/util.h>
#include <zephyr/kernel.h>

Go to the source code of this file.

Data Structures

struct  smf_hooks
 Collection of optional instrumentation hooks. More...
struct  smf_state
 General state that can be used in multiple state machines. More...
struct  smf_ctx
 Defines the current context of the state machine. More...

Macros

#define SMF_CREATE_STATE(_entry, _run, _exit, _parent, _initial)
 Macro to create a hierarchical state with initial transitions.
#define SMF_CTX(o)
 Macro to cast user defined object to state machine context.
#define SMF_ERR_NULL_TRANSITION   1
 Error codes reported via the instrumentation error hook.
#define SMF_ERR_TRANSITION_IN_EXIT   2
 smf_set_state called in exit action

Typedefs

typedef void(* smf_transition_hook) (struct smf_ctx *ctx, const struct smf_state *source, const struct smf_state *dest)
 Called after the current state pointer is updated, before entry actions of the new state execute.
typedef void(* smf_action_hook) (struct smf_ctx *ctx, const struct smf_state *state, enum smf_action_type action_type)
 Called before a state action (entry/run/exit) is invoked.
typedef void(* smf_error_hook) (struct smf_ctx *ctx, int error_code)
 Called when an invalid operation is detected.
typedef void(* state_method) (void *obj)
 Function pointer that implements a entry and exit actions of a state.
typedef enum smf_state_result(* state_execution) (void *obj)
 Function pointer that implements a the run action of a state.

Enumerations

enum  smf_state_result { SMF_EVENT_HANDLED , SMF_EVENT_PROPAGATE }
 enum for the return value of a state_execution function More...
enum  smf_action_type { SMF_ACTION_ENTRY , SMF_ACTION_RUN , SMF_ACTION_EXIT }
 Enum identifying which action type is being executed. More...

Functions

void smf_set_initial (struct smf_ctx *ctx, const struct smf_state *init_state)
 Initializes the state machine and sets its initial state.
void smf_set_state (struct smf_ctx *ctx, const struct smf_state *new_state)
 Changes a state machines state.
void smf_set_terminate (struct smf_ctx *ctx, int32_t val)
 Terminate a state machine.
int32_t smf_run_state (struct smf_ctx *ctx)
 Runs one iteration of a state machine (including any parent states)
static const struct smf_statesmf_get_current_leaf_state (const struct smf_ctx *const ctx)
 Get the current leaf state.
static const struct smf_statesmf_get_current_executing_state (const struct smf_ctx *const ctx)
 Get the state that is currently executing.

Detailed Description

State Machine Framework header file.