VSF Documented
vsf_fsm.h File Reference

Go to the source code of this file.

Macros

#define VSF_KERNEL_CFG_EDA_SUPPORT_SIMPLE_FSM   DISABLED
 
#define vsf_this   (*vsf_pthis)
 
#define def_states(...)
 
#define def_params(...)
 
#define vsf_args(...)
 
#define vsf_fsm(__name)
 
#define __def_fsm(__fsm_type, ...)
 
#define def_fsm(__name, ...)
 
#define def_simple_fsm(__name, ...)
 
#define end_def_simple_fsm(...)
 
#define __declare_fsm(__name)
 
#define declare_vsf_fsm(__name)
 
#define __extern_fsm_initialiser(__name, ...)
 extern fsm initialisation function and provide function prototype as <__name>_fn, E.g extern_vsf_fsm_initialiser( demo_fsm ); we extern a function called: extern fsm_demo_fsm_t *demo_fsm_init( fsm_demo_fsm_t *fsm_ptr ); and a prototype definition: typedef fsm_demo_fsm_t *demo_fsm_init_fn( fsm_demo_fsm_t *fsm_ptr ); We can then use demo_fsm_init_fn to define function pointer
 
#define extern_vsf_fsm_initialiser(__name, ...)
 
#define call_vsf_fsm(__name, __fsm)
 
#define ____state(__state, ...)
 
#define vsf_state(__state, ...)
 
#define on_start(...)
 
#define reset_vsf_fsm()
 
#define vsf_fsm_cpl()
 
#define vsf_fsm_report(__ERROR)
 
#define vsf_fsm_wait_for_obj()
 
#define vsf_fsm_on_going()
 
#define update_state_to(__state)
 fsm_continue is deprecated, should not be used anymore
 
#define transfer_to(__state)
 
#define __fsm_initialiser(__name, ...)
 
#define vsf_fsm_initialiser(__name, ...)
 
#define abort_vsf_fsm_init()
 
#define vsf_fsm_init_body(...)
 
#define init_vsf_fsm(__name, __fsm, ...)
 
#define init_simple_fsm(__name, __fsm, ...)
 
#define start_vsf_fsm(__name, __fsm, __pri, ...)
 
#define start_simple_fsm(__name, __fsm, __pri, ...)
 
#define __implement_fsm_ex(__name, __type)
 
#define __body(...)
 
#define vsf_fsm_body(...)
 
#define vsf_fsm_begin()
 
#define vsf_fsm_end()
 
#define implement_fsm_ex(__name, __type)
 
#define __implement_fsm(__name)
 
#define implement_vsf_fsm(__name, ...)
 
#define __privilege_state(__state, ...)
 
#define privilege_state(__state, ...)
 
#define privilege_group(...)
 
#define privilege_body(...)
 
#define __FSM_RT_TYPE__
 
#define __extern_fsm_implementation_ex(__name, __type)
 extern fsm task function and provide function prototype as <__name>_fn, E.g extern_vsf_fsm_implementation( demo_fsm ); we extern a function called: fsm_rt_t demo_fsm( fsm_demo_fsm_t *fsm_ptr ) and a prototype definition: typedef fsm_rt_t demo_fsm_fn (fsm_demo_fsm_t *fsm_ptr); We can then use demo_fsm_fn to define function pointer
 
#define declare_vsf_fsm_implementation_ex(__name, __type)
 
#define extern_vsf_fsm_implementation_ex(__name, __type)
 
#define extern_vsf_fsm_implementation(__name)
 
#define declare_vsf_fsm_implementation(__name)
 

Enumerations

finit vsf_state machine vsf_state
enum  fsm_rt_t {
  fsm_rt_err = -1 ,
  fsm_rt_cpl = 0 ,
  fsm_rt_on_going = 1 ,
  fsm_rt_wait_for_obj = 2 ,
  fsm_rt_asyn = 3
}
 

Macro Definition Documentation

◆ VSF_KERNEL_CFG_EDA_SUPPORT_SIMPLE_FSM

#define VSF_KERNEL_CFG_EDA_SUPPORT_SIMPLE_FSM   DISABLED

◆ vsf_this

#define vsf_this   (*vsf_pthis)

◆ def_states

#define def_states ( ...)
Value:
enum { \
START = 0, \
__VA_ARGS__ \
};

◆ def_params

#define def_params ( ...)
Value:
__VA_ARGS__

◆ vsf_args

#define vsf_args ( ...)
Value:
,__VA_ARGS__

◆ vsf_fsm

#define vsf_fsm ( __name)
Value:
#define __name
Definition hci_transport_aic8800.c:555
#define vsf_task(__name)
Definition vsf_task.h:43

◆ __def_fsm

#define __def_fsm ( __fsm_type,
... )
Value:
def_vsf_task(__fsm_type, \
__VA_ARGS__);
#define def_vsf_task(__name,...)
Definition vsf_task.h:108

◆ def_fsm

#define def_fsm ( __name,
... )
Value:
__def_fsm(__name, __VA_ARGS__)
#define __def_fsm(__fsm_type,...)
Definition vsf_fsm.h:83

◆ def_simple_fsm

#define def_simple_fsm ( __name,
... )
Value:
__def_fsm(__name, __VA_ARGS__)
#define __declare_fsm(__name)
Definition vsf_fsm.h:108

◆ end_def_simple_fsm

#define end_def_simple_fsm ( ...)

◆ __declare_fsm

#define __declare_fsm ( __name)
Value:
#define declare_vsf_task(__name)
Definition vsf_task.h:117

◆ declare_vsf_fsm

#define declare_vsf_fsm ( __name)

◆ __extern_fsm_initialiser

#define __extern_fsm_initialiser ( __name,
... )
Value:
vsf_fsm(__name) *__name##_init(vsf_fsm(__name) *fsm_ptr __VA_ARGS__); \
typedef vsf_fsm(__name) *__name##_init_fn(vsf_fsm(__name) *fsm_ptr __VA_ARGS__);
void _init()
Definition init.c:12
#define vsf_fsm(__name)
Definition vsf_fsm.h:81

extern fsm initialisation function and provide function prototype as <__name>_fn, E.g extern_vsf_fsm_initialiser( demo_fsm ); we extern a function called: extern fsm_demo_fsm_t *demo_fsm_init( fsm_demo_fsm_t *fsm_ptr ); and a prototype definition: typedef fsm_demo_fsm_t *demo_fsm_init_fn( fsm_demo_fsm_t *fsm_ptr ); We can then use demo_fsm_init_fn to define function pointer

◆ extern_vsf_fsm_initialiser

#define extern_vsf_fsm_initialiser ( __name,
... )
Value:
#define __extern_fsm_initialiser(__name,...)
extern fsm initialisation function and provide function prototype as <__name>_fn, E....
Definition vsf_fsm.h:122

◆ __extern_fsm_implementation_ex

#define __extern_fsm_implementation_ex ( __name,
__type )
Value:
fsm_rt_t __name(fsm(__type) *vsf_pthis, vsf_evt_t evt); \
typedef fsm_rt_t __name##_fn( vsf_fsm(__type) *vsf_pthis, vsf_evt_t evt );
#define __type
Definition hci_transport_aic8800.c:556
int16_t vsf_evt_t
Definition vsf_eda.h:654
fsm_rt_t
Definition vsf_fsm.h:315

extern fsm task function and provide function prototype as <__name>_fn, E.g extern_vsf_fsm_implementation( demo_fsm ); we extern a function called: fsm_rt_t demo_fsm( fsm_demo_fsm_t *fsm_ptr ) and a prototype definition: typedef fsm_rt_t demo_fsm_fn (fsm_demo_fsm_t *fsm_ptr); We can then use demo_fsm_fn to define function pointer

◆ declare_vsf_fsm_implementation_ex

#define declare_vsf_fsm_implementation_ex ( __name,
__type )
Value:
#define __extern_fsm_implementation_ex(__name, __type)
extern fsm task function and provide function prototype as <__name>_fn, E.g extern_vsf_fsm_implementa...
Definition vsf_fsm.h:139

◆ extern_vsf_fsm_implementation_ex

#define extern_vsf_fsm_implementation_ex ( __name,
__type )

◆ extern_vsf_fsm_implementation

#define extern_vsf_fsm_implementation ( __name)

◆ declare_vsf_fsm_implementation

#define declare_vsf_fsm_implementation ( __name)

◆ call_vsf_fsm

#define call_vsf_fsm ( __name,
__fsm )
Value:
#define vsf_task_call_task(__name, __target,...)
Definition vsf_task.h:159

◆ ____state

#define ____state ( __state,
... )
Value:
case __state: \
__state_entry_##__state:{ \
__VA_ARGS__; \
};

◆ vsf_state

#define vsf_state ( __state,
... )
Value:
break; ____state(__state, __VA_ARGS__)
#define ____state(__state,...)
Definition vsf_fsm.h:159

◆ on_start

#define on_start ( ...)
Value:
{__VA_ARGS__;}

◆ reset_vsf_fsm

#define reset_vsf_fsm ( )
Value:
do { vsf_this.fsm_state = 0; } while(0);
#define vsf_this
Definition vsf_fsm.h:60

◆ vsf_fsm_cpl

#define vsf_fsm_cpl ( )
Value:
do {reset_vsf_fsm(); return fsm_rt_cpl;} while(0);
#define reset_vsf_fsm()
Definition vsf_fsm.h:170
@ fsm_rt_cpl
fsm complete
Definition vsf_fsm.h:317

◆ vsf_fsm_report

#define vsf_fsm_report ( __ERROR)
Value:
do {reset_vsf_fsm(); return (fsm_rt_t)(__ERROR); } while(0);

◆ vsf_fsm_wait_for_obj

#define vsf_fsm_wait_for_obj ( )
Value:
@ fsm_rt_wait_for_obj
fsm wait for object
Definition vsf_fsm.h:319

◆ vsf_fsm_on_going

#define vsf_fsm_on_going ( )
Value:
@ fsm_rt_on_going
fsm on-going
Definition vsf_fsm.h:318

◆ update_state_to

#define update_state_to ( __state)
Value:
{ vsf_this.fsm_state = (__state); goto __state_entry_##__state;}

fsm_continue is deprecated, should not be used anymore

◆ transfer_to

#define transfer_to ( __state)
Value:
{ vsf_this.fsm_state = (__state); vsf_fsm_on_going() }
#define vsf_fsm_on_going()
Definition vsf_fsm.h:174

◆ __fsm_initialiser

#define __fsm_initialiser ( __name,
... )
Value:
vsf_fsm(__name) *__name##_init(vsf_fsm(__name) *vsf_pthis __VA_ARGS__) \
{ \
VSF_KERNEL_ASSERT (NULL != vsf_pthis); \
vsf_this.fsm_state = 0;
#define NULL
Definition lvgl.h:26

◆ vsf_fsm_initialiser

#define vsf_fsm_initialiser ( __name,
... )
Value:
__fsm_initialiser(__name, __VA_ARGS__)
#define __fsm_initialiser(__name,...)
Definition vsf_fsm.h:187

◆ abort_vsf_fsm_init

#define abort_vsf_fsm_init ( )
Value:
return NULL;

◆ vsf_fsm_init_body

#define vsf_fsm_init_body ( ...)
Value:
__VA_ARGS__ \
return &vsf_this; \
}

◆ init_vsf_fsm

#define init_vsf_fsm ( __name,
__fsm,
... )
Value:
__name##_init(__fsm __VA_ARGS__)

◆ init_simple_fsm

#define init_simple_fsm ( __name,
__fsm,
... )
Value:
init_vsf_fsm(__fsm __VA_ARGS__)
#define init_vsf_fsm(__name, __fsm,...)
Definition vsf_fsm.h:205

◆ start_vsf_fsm

#define start_vsf_fsm ( __name,
__fsm,
__pri,
... )
Value:
init_vsf_task(__name, (__fsm), (__pri), __VA_ARGS__)
#define init_vsf_task(__name, __task, __pri,...)
Definition vsf_task.h:154

◆ start_simple_fsm

#define start_simple_fsm ( __name,
__fsm,
__pri,
... )
Value:
start_vsf_fsm(__name, (__fsm), (__pri), __VA_ARGS__)
#define start_vsf_fsm(__name, __fsm, __pri,...)
Definition vsf_fsm.h:211

◆ __implement_fsm_ex

#define __implement_fsm_ex ( __name,
__type )
Value:
{ \
vsf_task_begin(); \
if (NULL == vsf_pthis) { \
return fsm_rt_err; \
}
@ fsm_rt_err
fsm error, error code can be get from other interface
Definition vsf_fsm.h:316
#define implement_vsf_task(__name)
Definition vsf_task.h:73

◆ __body

#define __body ( ...)
Value:
switch (vsf_this.fsm_state) { \
case 0: \
vsf_this.fsm_state++; \
__VA_ARGS__ \
break; \
default: \
return fsm_rt_err; \
} \
\
vsf_task_end(); \
}

◆ vsf_fsm_body

#define vsf_fsm_body ( ...)
Value:
__body(__VA_ARGS__)
#define __body(...)
Definition vsf_fsm.h:225

◆ vsf_fsm_begin

#define vsf_fsm_begin ( )
Value:
switch (vsf_this.fsm_state) { \
case 0: \
vsf_this.fsm_state++;

◆ vsf_fsm_end

#define vsf_fsm_end ( )
Value:
break; \
default: \
return fsm_rt_err; \
} \
#define vsf_task_end()
Definition vsf_task.h:56

◆ implement_fsm_ex

#define implement_fsm_ex ( __name,
__type )
Value:
#define __implement_fsm_ex(__name, __type)
Definition vsf_fsm.h:217
Note
Debug Support: You can use body_begin() together with body_end() ! to enable debug, this means you are ale to set break ! points and single-step into those states. ! ! Example:
  vsf_fsm_begin()
      vsf_state(xxxxx,
the range no debug is allowed )

vsf_state(xxxxx){ the range you can debug with }

vsf_fsm_end()

◆ __implement_fsm

#define __implement_fsm ( __name)
Value:
#define implement_fsm_ex(__name, __type)
Definition vsf_fsm.h:272

◆ implement_vsf_fsm

#define implement_vsf_fsm ( __name,
... )
Value:
#define __implement_fsm(__name)
Definition vsf_fsm.h:275

◆ __privilege_state

#define __privilege_state ( __state,
... )
Value:
break;do { \
do { \
____state(__state, __VA_ARGS__) \
} while(0); /* add extra while(0) to catch the fsm_continue()*/ \
if (vsf_this.fsm_state != (__state)) { \
break; \
} \
} while(1);

◆ privilege_state

#define privilege_state ( __state,
... )
Value:
__privilege_state(__state, __VA_ARGS__)
#define __privilege_state(__state,...)
Definition vsf_fsm.h:280

◆ privilege_group

#define privilege_group ( ...)
Value:
{ __VA_ARGS__;}

◆ privilege_body

#define privilege_body ( ...)
Value:
do { \
switch (vsf_this.fsm_state) { \
case 0: \
vsf_this.fsm_state++; \
__VA_ARGS__ \
} \
while(1); \
\
return fsm_rt_on_going; \
}

◆ __FSM_RT_TYPE__

#define __FSM_RT_TYPE__

Enumeration Type Documentation

◆ fsm_rt_t

enum fsm_rt_t
Enumerator
fsm_rt_err 

fsm error, error code can be get from other interface

fsm_rt_cpl 

fsm complete

fsm_rt_on_going 

fsm on-going

fsm_rt_wait_for_obj 

fsm wait for object

fsm_rt_asyn 

fsm asynchronose complete, you can check it later.

Generated from commit: vsfteam/vsf@ceb53fd