VSF Documented
Macros | Functions
delegate.c File Reference
#include "./delegate.h"

Macros

#define __VSF_DELEGATE_CLASS_IMPLEMENT
 
#define EVENT_RT_UNREGISTER   4
 
#define vsf_this   (*this_ptr)
 
#define RAISE_EVENT_START   0
 
#define RAISE_EVENT_CHECK_HANDLER   1
 
#define RAISE_EVENT_RUN_HANDLER   2
 
#define RAISE_EVENT_RESET_FSM()   do { vsf_this.chState = 0; } while (0)
 

Functions

delegate_t * delegate_init (delegate_t *event_ptr)
 initialize event !
 
delegate_handler_t * delegate_handler_init (delegate_handler_t *handler_ptr, delegate_handler_func_t *routine_fn, void *arg_ptr)
 initialize event handler item !
 
vsf_err_t register_delegate_handler (delegate_t *event_ptr, delegate_handler_t *handler_ptr)
 register event handler to specified event !
 
vsf_err_t unregister_delegate_handler (delegate_t *event_ptr, delegate_handler_t *handler_ptr)
 unregister a specified event handler !
 
fsm_rt_t invoke_delegate (delegate_t *event_ptr, void *param_ptr)
 raise target event !
 

Macro Definition Documentation

◆ __VSF_DELEGATE_CLASS_IMPLEMENT

#define __VSF_DELEGATE_CLASS_IMPLEMENT

◆ EVENT_RT_UNREGISTER

#define EVENT_RT_UNREGISTER   4

◆ vsf_this

#define vsf_this   (*this_ptr)

◆ RAISE_EVENT_START

#define RAISE_EVENT_START   0

◆ RAISE_EVENT_CHECK_HANDLER

#define RAISE_EVENT_CHECK_HANDLER   1

◆ RAISE_EVENT_RUN_HANDLER

#define RAISE_EVENT_RUN_HANDLER   2

◆ RAISE_EVENT_RESET_FSM

#define RAISE_EVENT_RESET_FSM ( )    do { vsf_this.chState = 0; } while (0)

Function Documentation

◆ delegate_init()

delegate_t * delegate_init ( delegate_t *  event_ptr)

initialize event !

Parameters
event_ptrtarget event !
Returns
the address of event item

◆ delegate_handler_init()

delegate_handler_t * delegate_handler_init ( delegate_handler_t *  handler_ptr,
delegate_handler_func_t routine_fn,
void *  arg_ptr 
)

initialize event handler item !

Parameters
handler_ptrthe target event handler item !
routine_fnevent handler routine !
arg_ptrhandler extra arguments !
Returns
the address of event handler item

◆ register_delegate_handler()

vsf_err_t register_delegate_handler ( delegate_t *  event_ptr,
delegate_handler_t *  handler_ptr 
)

register event handler to specified event !

Parameters
event_ptrtarget event !
handler_ptrtarget event handler !
Returns
access result

search ready list

safe to remove

add handler to the ready list

◆ unregister_delegate_handler()

vsf_err_t unregister_delegate_handler ( delegate_t *  event_ptr,
delegate_handler_t *  handler_ptr 
)

unregister a specified event handler !

Parameters
event_ptrtarget event !
handler_ptrtarget event handler !
Returns
access result

search ready list

safe to remove

search ready list

safe to remove

◆ invoke_delegate()

fsm_rt_t invoke_delegate ( delegate_t *  event_ptr,
void *  param_ptr 
)

raise target event !

Parameters
event_ptrthe target event !
param_ptrevent parameter !
Returns
access result

nothing to do

initialize state

finish visiting the ready list

complete

run the event handler

< get next item

return EVENT_RT_UNREGISTER means event handler could be removed