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>
16 lines
339 B
C
16 lines
339 B
C
/*
|
|
* Copyright 2021 The Chromium OS Authors
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_TEST_LIB_SMF_H_
|
|
#define ZEPHYR_TEST_LIB_SMF_H_
|
|
|
|
void test_smf_flat(void);
|
|
void test_smf_hierarchical(void);
|
|
void test_smf_hierarchical_5_ancestors(void);
|
|
void test_smf_initial_transitions(void);
|
|
|
|
#endif /* ZEPHYR_TEST_LIB_SMF_H_ */
|