VSF Documented
|
Macros | |
#define | __VSF_MSG_TREE_CLASS_IMPLEMENT |
#define | vsf_this (*this_ptr) |
#define | THIS_FSM_STATE fsm_ptr->state |
#define | RESET_MSGT_HANDLING_FSM() do { THIS_FSM_STATE = 0; } while(0) |
#define | THIS_FSM_STATE this_ptr->BW.state |
#define | RESET_MSGT_BACKWARD_PROPAGATE_MSG_FSM() do { THIS_FSM_STATE = 0; } while(0) |
#define | THIS_FSM_STATE vsf_this.FWPOT.state |
#define | RESET_MSGT_FW_POT_PROPAGATE_MSG_FSM() do { THIS_FSM_STATE = 0; } while(0) |
#define | THIS_FSM_STATE vsf_this.FWDFS.state |
#define | RESET_MSGT_FW_DFS_PROPAGATE_MSG_FSM() do { THIS_FSM_STATE = 0; } while(0) |
#define | THIS_FSM_STATE vsf_this.FWBFS.state |
#define | RESET_MSGT_FW_BFS_PROPAGATE_MSG_FSM() do { THIS_FSM_STATE = 0; } while(0) |
Functions | |
implement_vsf_rng_buf (__bfs_node_fifo_t, uint16_t, NO_RNG_BUF_PROTECT) | |
const vsf_msgt_node_t * | vsf_msgt_get_next_node_within_container (const vsf_msgt_node_t *node_ptr) |
const vsf_msgt_node_t * | vsf_msgt_shoot_top_node (vsf_msgt_t *obj_ptr, const vsf_msgt_node_t *root_ptr, uintptr_t bullet_info_ptr) |
const vsf_msgt_node_t * | vsf_msgt_shoot_node (vsf_msgt_t *obj_ptr, const vsf_msgt_node_t *root_ptr, uintptr_t bullet_info_ptr) |
fsm_rt_t | __vsf_msg_handling (__vsf_msgt_msg_handling_fsm_t *fsm_ptr, vsf_msgt_t *obj_ptr, const vsf_msgt_node_t *node_ptr) |
fsm_rt_t | vsf_msgt_backward_propagate_msg (vsf_msgt_t *obj_ptr, const vsf_msgt_node_t *node_ptr, vsf_msgt_msg_t *msg_ptr) |
const vsf_msgt_node_t * | vsf_msgt_backward_propagate_msg_get_last_node (vsf_msgt_t *obj_ptr) |
VSF_CAL_SECTION (".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal_init") | |
VSF_CAL_SECTION (".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal_setting") | |
VSF_CAL_SECTION (".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal") | |
void | vsf_msgt_offset_tree_init (const vsf_msgt_container_t *root_ptr) |
void | vsf_msgt_forward_propagate_msg_dfs_init (vsf_msgt_t *obj_ptr) |
fsm_rt_t | vsf_msgt_forward_propagate_msg_dfs (vsf_msgt_t *obj_ptr, const vsf_msgt_node_t *root_ptr, vsf_msgt_msg_t *msg_ptr) |
void | vsf_msgt_forward_propagate_msg_bfs_init (vsf_msgt_t *obj_ptr, uint16_t *fifo_buffer_ptr, uint_fast16_t buff_size, bool is_support_container_post_handling) |
void | vsf_msgt_forward_propagate_msg_bfs_setting (vsf_msgt_t *obj_ptr, bool is_support_container_post_handling) |
fsm_rt_t | vsf_msgt_forward_propagate_msg_bfs (vsf_msgt_t *obj_ptr, const vsf_msgt_node_t *node_ptr, vsf_msgt_msg_t *msg_ptr, uint_fast8_t status_msk) |
#define __VSF_MSG_TREE_CLASS_IMPLEMENT |
#define vsf_this (*this_ptr) |
#define THIS_FSM_STATE fsm_ptr->state |
#define RESET_MSGT_HANDLING_FSM | ( | ) | do { THIS_FSM_STATE = 0; } while(0) |
#define THIS_FSM_STATE this_ptr->BW.state |
#define RESET_MSGT_BACKWARD_PROPAGATE_MSG_FSM | ( | ) | do { THIS_FSM_STATE = 0; } while(0) |
#define THIS_FSM_STATE vsf_this.FWPOT.state |
#define RESET_MSGT_FW_POT_PROPAGATE_MSG_FSM | ( | ) | do { THIS_FSM_STATE = 0; } while(0) |
#define THIS_FSM_STATE vsf_this.FWDFS.state |
#define RESET_MSGT_FW_DFS_PROPAGATE_MSG_FSM | ( | ) | do { THIS_FSM_STATE = 0; } while(0) |
#define THIS_FSM_STATE vsf_this.FWBFS.state |
#define RESET_MSGT_FW_BFS_PROPAGATE_MSG_FSM | ( | ) | do { THIS_FSM_STATE = 0; } while(0) |
implement_vsf_rng_buf | ( | __bfs_node_fifo_t | , |
uint16_t | , | ||
NO_RNG_BUF_PROTECT | |||
) |
const vsf_msgt_node_t * vsf_msgt_get_next_node_within_container | ( | const vsf_msgt_node_t * | node_ptr | ) |
check offset of next node
< the last node
point to next node with offset
const vsf_msgt_node_t * vsf_msgt_shoot_top_node | ( | vsf_msgt_t * | obj_ptr, |
const vsf_msgt_node_t * | root_ptr, | ||
uintptr_t | bullet_info_ptr | ||
) |
shoot the root item
not in the range
transparent container
not in the range
check nodes in this container
shoot a node
const vsf_msgt_node_t * vsf_msgt_shoot_node | ( | vsf_msgt_t * | obj_ptr, |
const vsf_msgt_node_t * | root_ptr, | ||
uintptr_t | bullet_info_ptr | ||
) |
the same container (we only hit a container)
< the leaf node
fsm_rt_t __vsf_msg_handling | ( | __vsf_msgt_msg_handling_fsm_t * | fsm_ptr, |
vsf_msgt_t * | obj_ptr, | ||
const vsf_msgt_node_t * | node_ptr | ||
) |
illegal Node ID detected, ignore this
not valid or enabled
empty handler
it's not possible to call sub eda
< unknown type
message has been handled
message is not handled
todo add support for subcall
fsm_rt_t vsf_msgt_backward_propagate_msg | ( | vsf_msgt_t * | obj_ptr, |
const vsf_msgt_node_t * | node_ptr, | ||
vsf_msgt_msg_t * | msg_ptr | ||
) |
backward propagate
no parent
const vsf_msgt_node_t * vsf_msgt_backward_propagate_msg_get_last_node | ( | vsf_msgt_t * | obj_ptr | ) |
VSF_CAL_SECTION | ( | ".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal_init" | ) |
VSF_CAL_SECTION | ( | ".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal_setting" | ) |
VSF_CAL_SECTION | ( | ".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal" | ) |
a normal node is visited
a corner case for container post handling
it is the last item in the container, return to previous level
it is the top container / root container, cpl
container post handling
container post handling
void vsf_msgt_offset_tree_init | ( | const vsf_msgt_container_t * | root_ptr | ) |
go deep
this is an empty container
visit node
update parent
update node list pointer
visit node
update parent
visited the entry node
it is the last item in the container
it is the top container
void vsf_msgt_forward_propagate_msg_dfs_init | ( | vsf_msgt_t * | obj_ptr | ) |
fsm_rt_t vsf_msgt_forward_propagate_msg_dfs | ( | vsf_msgt_t * | obj_ptr, |
const vsf_msgt_node_t * | root_ptr, | ||
vsf_msgt_msg_t * | msg_ptr | ||
) |
this is an empty container
visited the entry node
it is the last item in the container
it is the top container
void vsf_msgt_forward_propagate_msg_bfs_init | ( | vsf_msgt_t * | obj_ptr, |
uint16_t * | fifo_buffer_ptr, | ||
uint_fast16_t | buff_size, | ||
bool | is_support_container_post_handling | ||
) |
void vsf_msgt_forward_propagate_msg_bfs_setting | ( | vsf_msgt_t * | obj_ptr, |
bool | is_support_container_post_handling | ||
) |
fsm_rt_t vsf_msgt_forward_propagate_msg_bfs | ( | vsf_msgt_t * | obj_ptr, |
const vsf_msgt_node_t * | node_ptr, | ||
vsf_msgt_msg_t * | msg_ptr, | ||
uint_fast8_t | status_msk | ||
) |
search complete
calculate target item address
check whether the node is visited or not
mark node as visited
add nodes to fifo
put all nodes into fifo
mark child node as unvisited
send the container node again
visit parent is requested