0569809c80
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>
23 lines
566 B
Plaintext
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
|