VSF Documented
vsf_msg_tree.c File Reference

Macros

#define __VSF_MSG_TREE_CLASS_IMPLEMENT
 
#define vsf_this   (*this_ptr)
 
#define THIS_FSM_STATE   fsm_ptr->state
 
#define RESET_MSGT_HANDLING_FSM()
 
#define THIS_FSM_STATE   this_ptr->BW.state
 
#define RESET_MSGT_BACKWARD_PROPAGATE_MSG_FSM()
 
#define THIS_FSM_STATE   vsf_this.FWPOT.state
 
#define RESET_MSGT_FW_POT_PROPAGATE_MSG_FSM()
 
#define THIS_FSM_STATE   vsf_this.FWDFS.state
 
#define RESET_MSGT_FW_DFS_PROPAGATE_MSG_FSM()
 
#define THIS_FSM_STATE   vsf_this.FWBFS.state
 
#define RESET_MSGT_FW_BFS_PROPAGATE_MSG_FSM()
 

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)
 

Macro Definition Documentation

◆ __VSF_MSG_TREE_CLASS_IMPLEMENT

#define __VSF_MSG_TREE_CLASS_IMPLEMENT

◆ vsf_this

#define vsf_this   (*this_ptr)

◆ THIS_FSM_STATE [1/5]

#define THIS_FSM_STATE   fsm_ptr->state

◆ RESET_MSGT_HANDLING_FSM

#define RESET_MSGT_HANDLING_FSM ( )
Value:
do { THIS_FSM_STATE = 0; } while(0)
#define THIS_FSM_STATE
Definition vsf_msg_tree.c:236

◆ THIS_FSM_STATE [2/5]

#define THIS_FSM_STATE   this_ptr->BW.state

◆ RESET_MSGT_BACKWARD_PROPAGATE_MSG_FSM

#define RESET_MSGT_BACKWARD_PROPAGATE_MSG_FSM ( )
Value:
do { THIS_FSM_STATE = 0; } while(0)

◆ THIS_FSM_STATE [3/5]

#define THIS_FSM_STATE   vsf_this.FWPOT.state

◆ RESET_MSGT_FW_POT_PROPAGATE_MSG_FSM

#define RESET_MSGT_FW_POT_PROPAGATE_MSG_FSM ( )
Value:
do { THIS_FSM_STATE = 0; } while(0)

◆ THIS_FSM_STATE [4/5]

#define THIS_FSM_STATE   vsf_this.FWDFS.state

◆ RESET_MSGT_FW_DFS_PROPAGATE_MSG_FSM

#define RESET_MSGT_FW_DFS_PROPAGATE_MSG_FSM ( )
Value:
do { THIS_FSM_STATE = 0; } while(0)

◆ THIS_FSM_STATE [5/5]

#define THIS_FSM_STATE   vsf_this.FWBFS.state

◆ RESET_MSGT_FW_BFS_PROPAGATE_MSG_FSM

#define RESET_MSGT_FW_BFS_PROPAGATE_MSG_FSM ( )
Value:
do { THIS_FSM_STATE = 0; } while(0)

Function Documentation

◆ implement_vsf_rng_buf()

implement_vsf_rng_buf ( __bfs_node_fifo_t ,
uint16_t ,
NO_RNG_BUF_PROTECT  )

◆ vsf_msgt_get_next_node_within_container()

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

◆ vsf_msgt_shoot_top_node()

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

◆ vsf_msgt_shoot_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

◆ __vsf_msg_handling()

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

◆ vsf_msgt_backward_propagate_msg()

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

◆ vsf_msgt_backward_propagate_msg_get_last_node()

const vsf_msgt_node_t * vsf_msgt_backward_propagate_msg_get_last_node ( vsf_msgt_t * obj_ptr)

◆ VSF_CAL_SECTION() [1/3]

VSF_CAL_SECTION ( ".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal_init" )

◆ VSF_CAL_SECTION() [2/3]

VSF_CAL_SECTION ( ".text.vsf.osa_service.msg_tree" ".vsf_msgt_forward_propagate_msg_pre_order_traversal_setting" )

◆ VSF_CAL_SECTION() [3/3]

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

◆ vsf_msgt_offset_tree_init()

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

◆ vsf_msgt_forward_propagate_msg_dfs_init()

void vsf_msgt_forward_propagate_msg_dfs_init ( vsf_msgt_t * obj_ptr)

◆ vsf_msgt_forward_propagate_msg_dfs()

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

◆ vsf_msgt_forward_propagate_msg_bfs_init()

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 )

◆ vsf_msgt_forward_propagate_msg_bfs_setting()

void vsf_msgt_forward_propagate_msg_bfs_setting ( vsf_msgt_t * obj_ptr,
bool is_support_container_post_handling )

◆ vsf_msgt_forward_propagate_msg_bfs()

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

Generated from commit: vsfteam/vsf@ceb53fd