zephyr/lib/smf/Kconfig
Glenn Andrews 0569809c80 Lib: SMF: Add initial transition and smf_set_handled()
Brings SMF framework closer into alignment with accepted Hierarchical State
Machine operation by:
1. Allowing 'programming by difference' by having some child states handle
   events and prevent propagation up to the parent run actions while others
   propagate events up to a common handler in a parent state.
2. Optionally allow initial transitions within a parent state to determine
   the most nested child state to transition to.
3. Adding a test case for `CONFIG_SMF_INITIAL_TRANSITION` and
   `smf_set_handled()`
4. Updating documentation for the new API (and fixing some references)

There was discussion in https://github.com/zephyrproject-rtos/zephyr/issues/55344
about not making the initial transition a Kconfig option, but I'm not sure
of any way else of doing it without permanently adding a pointer to each
`smf_state` entry, which is a problem for resource-constrained devices.

This does not fix https://github.com/zephyrproject-rtos/zephyr/issues/66341
but documentation has been updated to warn users of the issue.

Signed-off-by: Glenn Andrews <glenn.andrews.42@gmail.com>
2024-03-04 22:16:40 +01:00

23 lines
566 B
Plaintext

# Copyright 2021 The Chromium OS Authors
# SPDX-License-Identifier: Apache-2.0
config SMF
bool "Hierarchical State Machine"
help
This option enables the Hierarchical State Machine library
if SMF
config SMF_ANCESTOR_SUPPORT
bool "States to have 1 or more ancestors"
help
If y, then the state machine framework includes ancestor state support
config SMF_INITIAL_TRANSITION
depends on SMF_ANCESTOR_SUPPORT
bool "Support initial transitions for ancestor states"
help
If y, then each state can have an initial transition to a sub-state
endif # SMF