VSF Documented
Macros | Typedefs
__type.h File Reference
#include "vsf_usr_cfg.h"
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <assert.h>
#include "service/trace/vsf_trace.h"
#include <stdio.h>
#include <setjmp.h>
#include <stdarg.h>

Go to the source code of this file.

Macros

#define ENABLED   1
 
#define DISABLED   0
 
#define __FSM_RT_TYPE__
 
#define VSF_ASSERT(__EXPR)
 system macros
 
#define __VSF_STR(__STRING)   #__STRING
 
#define VSF_STR(__STRING)   __VSF_STR(__STRING)
 
#define vsf_max(__a, __b)   (((__a) > (__b)) ? (__a) : (__b))
 
#define vsf_min(__a, __b)   (((__a) < (__b)) ? (__a) : (__b))
 
#define dimof(__arr)   (sizeof(__arr) / sizeof((__arr)[0]))
 
#define vsf_offset_of(__type, __member)   (uintptr_t)(&(((__type *)0)->__member))
 
#define vsf_container_of(__ptr, __type, __member)    ((__type *)((uintptr_t)(__ptr) - vsf_offset_of(__type, __member)))
 
#define vsf_safe_container_of(__ptr, __type, __member)    (__ptr ? vsf_container_of(__ptr, __type, __member) : NULL)
 
#define VSF_COMPATIBILITY   ENABLED
 
#define container_of   vsf_container_of
 
#define safe_container_of   vsf_safe_container_of
 
#define vsf_abs(__num)   (((__num) < 0) ? (-(__num)) : (__num))
 
#define VSF_BIT(__N)   (1UL << (__N))
 
#define VSF_BITMASK(__N)   (VSF_BIT(__N) - 1)
 
#define VSF_UNUSED_PARAM(__VAL)   (void)(__VAL)
 
#define VSF_STATIC_ASSERT(__COND)    typedef int VSF_MACRO_SAFE_NAME(STATIC_ASSERT)[(__COND) * 2 - 1]
 
#define __REG_TYPE__
 
#define __REG_CONNECT(__A, __B)   __A##__B
 
#define __REG_RSVD_NAME(__NAME)   __REG_CONNECT(__unused_, __NAME)
 
#define ____REG_RSVD(__NAME, __BIT)    reg##__BIT##_t __NAME : __BIT;
 
#define ____REG_RSVD_N(__NAME, __BIT, __N)    reg##__BIT##_t __NAME[__N];
 
#define __REG_RSVD(__BIT)   ____REG_RSVD(REG_RSVD_NAME, __BIT)
 
#define __REG_RSVD_N(__BIT, __N)   ____REG_RSVD_N(REG_RSVD_NAME, __BIT, (__N))
 
#define REG_RSVD_NAME   __REG_RSVD_NAME(__LINE__)
 
#define REG_RSVD(__BIT)   __REG_RSVD(__BIT)
 
#define REG_RSVD_N(__BIT, __N)   __REG_RSVD_N(__BIT, (__N))
 
#define REG_RSVD_U8   REG_RSVD(8)
 
#define REG_RSVD_U16   REG_RSVD(16)
 
#define REG_RSVD_U32   REG_RSVD(32)
 
#define REG_RSVD_U8N(__N)   REG_RSVD_N(8, (__N))
 
#define REG_RSVD_U16N(__N)   REG_RSVD_N(16, (__N))
 
#define REG_RSVD_U32N(__N)   REG_RSVD_N(32, (__N))
 
#define REG8_RSVD_N(__N)   REG_RSVD_U8N(__N)
 
#define REG8_RSVD_B(__BYTE_CNT)   REG8_RSVD_N(__BYTE_CNT)
 
#define REG8_RSVD_8B   REG8_RSVD_B(8)
 
#define REG8_RSVD_16B   REG8_RSVD_B(16)
 
#define REG8_RSVD_32B   REG8_RSVD_B(32)
 
#define REG8_RSVD_64B   REG8_RSVD_B(64)
 
#define REG8_RSVD_128B   REG8_RSVD_B(128)
 
#define REG8_RSVD_256B   REG8_RSVD_B(256)
 
#define REG8_RSVD_512B   REG8_RSVD_B(512)
 
#define REG8_RSVD_1K   REG8_RSVD_B(1024)
 
#define REG8_RSVD_2K   REG8_RSVD_B(2048)
 
#define REG8_RSVD_4K   REG8_RSVD_B(4096)
 
#define REG8_RSVD_8K   REG8_RSVD_B(8192)
 
#define REG8_RSVD_16K   REG8_RSVD_B(16 * 1024)
 
#define REG8_RSVD_32K   REG8_RSVD_B(32 * 1024)
 
#define REG8_RSVD_64K   REG8_RSVD_B(64 * 1024)
 
#define REG8_RSVD_128K   REG8_RSVD_B(128 * 1024)
 
#define REG8_RSVD_256K   REG8_RSVD_B(256 * 1024)
 
#define REG8_RSVD_512K   REG8_RSVD_B(512 * 1024)
 
#define REG8_RSVD_1M   REG8_RSVD_B(1024 * 1024)
 
#define REG16_RSVD_N(__N)   REG_RSVD_U16N(__N)
 
#define REG16_RSVD_B(__BYTE_CNT)   REG16_RSVD_N(__BYTE_CNT >> 1)
 
#define REG16_RSVD_8B   REG16_RSVD_B(8)
 
#define REG16_RSVD_16B   REG16_RSVD_B(16)
 
#define REG16_RSVD_32B   REG16_RSVD_B(32)
 
#define REG16_RSVD_64B   REG16_RSVD_B(64)
 
#define REG16_RSVD_128B   REG16_RSVD_B(128)
 
#define REG16_RSVD_256B   REG16_RSVD_B(256)
 
#define REG16_RSVD_512B   REG16_RSVD_B(512)
 
#define REG16_RSVD_1K   REG16_RSVD_B(1024)
 
#define REG16_RSVD_2K   REG16_RSVD_B(2048)
 
#define REG16_RSVD_4K   REG16_RSVD_B(4096)
 
#define REG16_RSVD_8K   REG16_RSVD_B(8192)
 
#define REG16_RSVD_16K   REG16_RSVD_B(16 * 1024)
 
#define REG16_RSVD_32K   REG16_RSVD_B(32 * 1024)
 
#define REG16_RSVD_64K   REG16_RSVD_B(64 * 1024)
 
#define REG16_RSVD_128K   REG16_RSVD_B(128 * 1024)
 
#define REG16_RSVD_256K   REG16_RSVD_B(256 * 1024)
 
#define REG16_RSVD_512K   REG16_RSVD_B(512 * 1024)
 
#define REG16_RSVD_1M   REG16_RSVD_B(1024 * 1024)
 
#define REG32_RSVD_N(__N)   REG_RSVD_U32N(__N)
 
#define REG32_RSVD_B(__BYTE_CNT)   REG_RSVD_U32N(__BYTE_CNT >> 2)
 
#define REG32_RSVD_8B   REG32_RSVD_B(8)
 
#define REG32_RSVD_16B   REG32_RSVD_B(16)
 
#define REG32_RSVD_32B   REG32_RSVD_B(32)
 
#define REG32_RSVD_64B   REG32_RSVD_B(64)
 
#define REG32_RSVD_128B   REG32_RSVD_B(128)
 
#define REG32_RSVD_256B   REG32_RSVD_B(256)
 
#define REG32_RSVD_512B   REG32_RSVD_B(512)
 
#define REG32_RSVD_1K   REG32_RSVD_B(1024)
 
#define REG32_RSVD_2K   REG32_RSVD_B(2048)
 
#define REG32_RSVD_4K   REG32_RSVD_B(4096)
 
#define REG32_RSVD_8K   REG32_RSVD_B(8192)
 
#define REG32_RSVD_16K   REG32_RSVD_B(16 * 1024)
 
#define REG32_RSVD_32K   REG32_RSVD_B(32 * 1024)
 
#define REG32_RSVD_64K   REG32_RSVD_B(64 * 1024)
 
#define REG32_RSVD_128K   REG32_RSVD_B(128 * 1024)
 
#define REG32_RSVD_256K   REG32_RSVD_B(256 * 1024)
 
#define REG32_RSVD_512K   REG32_RSVD_B(512 * 1024)
 
#define REG32_RSVD_1M   REG32_RSVD_B(1024 * 1024)
 

Typedefs

typedef volatile uint8_t reg8_t
 
typedef volatile uint16_t reg16_t
 
typedef volatile uint32_t reg32_t
 

Enumerations

standard error code
enum  vsf_err_t {
  VSF_ERR_NOT_READY =1 ,
  VSF_ERR_NONE =0 ,
  VSF_ERR_UNKNOWN =-1 ,
  VSF_ERR_NOT_SUPPORT =-2 ,
  VSF_ERR_NOT_AVAILABLE =-4 ,
  VSF_ERR_NOT_ACCESSABLE =-5 ,
  VSF_ERR_NOT_ACCESSIBLE = VSF_ERR_NOT_ACCESSABLE ,
  VSF_ERR_NOT_ENOUGH_RESOURCES =-6 ,
  VSF_ERR_FAIL =-7 ,
  VSF_ERR_INVALID_PARAMETER =-8 ,
  VSF_ERR_INVALID_RANGE =-9 ,
  VSF_ERR_INVALID_PTR =-10 ,
  VSF_ERR_INVALID_KEY =-11 ,
  VSF_ERR_IO =-12 ,
  VSF_ERR_ALREADY_EXISTS =-13 ,
  VSF_ERR_REQ_ALREADY_REGISTERED =-13 ,
  VSF_ERR_BUG =-14 ,
  VSF_ERR_OVERRUN =-15 ,
  VSF_ERR_PROVIDED_RESOURCE_NOT_SUFFICIENT =-17 ,
  VSF_ERR_PROVIDED_RESOURCE_NOT_ALIGNED =-18 ,
  VSF_ERR_TIMEOUT =-19 ,
  VSF_ERR_BUSY =-20
}
 
finit state machine state
enum  fsm_rt_t {
  fsm_rt_err = -1 ,
  fsm_rt_cpl = 0 ,
  fsm_rt_on_going = 1 ,
  fsm_rt_yield = 1 ,
  fsm_rt_wait_for_obj = 2 ,
  fsm_rt_wait_for_evt = 2 ,
  fsm_rt_wfe = 2 ,
  fsm_rt_asyn = 3 ,
  fsm_rt_user = 4
}
 

Macro Definition Documentation

◆ ENABLED

#define ENABLED   1

◆ DISABLED

#define DISABLED   0

◆ __FSM_RT_TYPE__

#define __FSM_RT_TYPE__

◆ VSF_ASSERT

#define VSF_ASSERT (   __EXPR)
Value:
((__EXPR) \
? (void)0 \
: vsf_trace_assert(#__EXPR, __FILE__, __LINE__, __FUNCTION__))
void vsf_trace_assert(const char *expr, const char *file, int line, const char *func)
Definition vsf_trace.c:387

system macros

Note
IMPORTANT ! - Every time when you try to add some 'common' header file including ! into __type.h, please take more time to think your decision, and ! make sure that the header file is available in all the compiler ! environment and platforms. ! ! - If you know what you are doing, and there is still some concerns ! which others need to know, please DO add necessary information ! besides the "#include <xxxx>" ! ! - If you want to introduce a system header file (as part of c ! standard) and you haven't encounter any known case where the header ! file is absent, we can assume that it is safe to put it in __type.h. ! If you do encounter scenarios where the header files is missing, ! please move it to the platform specific type.h

◆ __VSF_STR

#define __VSF_STR (   __STRING)    #__STRING

◆ VSF_STR

#define VSF_STR (   __STRING)    __VSF_STR(__STRING)

◆ vsf_max

#define vsf_max (   __a,
  __b 
)    (((__a) > (__b)) ? (__a) : (__b))

◆ vsf_min

#define vsf_min (   __a,
  __b 
)    (((__a) < (__b)) ? (__a) : (__b))

◆ dimof

#define dimof (   __arr)    (sizeof(__arr) / sizeof((__arr)[0]))

◆ vsf_offset_of

#define vsf_offset_of (   __type,
  __member 
)    (uintptr_t)(&(((__type *)0)->__member))

◆ vsf_container_of

#define vsf_container_of (   __ptr,
  __type,
  __member 
)     ((__type *)((uintptr_t)(__ptr) - vsf_offset_of(__type, __member)))

◆ vsf_safe_container_of

#define vsf_safe_container_of (   __ptr,
  __type,
  __member 
)     (__ptr ? vsf_container_of(__ptr, __type, __member) : NULL)

◆ VSF_COMPATIBILITY

#define VSF_COMPATIBILITY   ENABLED

◆ container_of

#define container_of   vsf_container_of

◆ safe_container_of

#define safe_container_of   vsf_safe_container_of

◆ vsf_abs

#define vsf_abs (   __num)    (((__num) < 0) ? (-(__num)) : (__num))

◆ VSF_BIT

#define VSF_BIT (   __N)    (1UL << (__N))

◆ VSF_BITMASK

#define VSF_BITMASK (   __N)    (VSF_BIT(__N) - 1)

◆ VSF_UNUSED_PARAM

#define VSF_UNUSED_PARAM (   __VAL)    (void)(__VAL)

◆ VSF_STATIC_ASSERT

#define VSF_STATIC_ASSERT (   __COND)     typedef int VSF_MACRO_SAFE_NAME(STATIC_ASSERT)[(__COND) * 2 - 1]

◆ __REG_TYPE__

#define __REG_TYPE__

◆ __REG_CONNECT

#define __REG_CONNECT (   __A,
  __B 
)    __A##__B

◆ __REG_RSVD_NAME

#define __REG_RSVD_NAME (   __NAME)    __REG_CONNECT(__unused_, __NAME)

◆ ____REG_RSVD

#define ____REG_RSVD (   __NAME,
  __BIT 
)     reg##__BIT##_t __NAME : __BIT;

◆ ____REG_RSVD_N

#define ____REG_RSVD_N (   __NAME,
  __BIT,
  __N 
)     reg##__BIT##_t __NAME[__N];

◆ __REG_RSVD

#define __REG_RSVD (   __BIT)    ____REG_RSVD(REG_RSVD_NAME, __BIT)

◆ __REG_RSVD_N

#define __REG_RSVD_N (   __BIT,
  __N 
)    ____REG_RSVD_N(REG_RSVD_NAME, __BIT, (__N))

◆ REG_RSVD_NAME

#define REG_RSVD_NAME   __REG_RSVD_NAME(__LINE__)

◆ REG_RSVD

#define REG_RSVD (   __BIT)    __REG_RSVD(__BIT)

◆ REG_RSVD_N

#define REG_RSVD_N (   __BIT,
  __N 
)    __REG_RSVD_N(__BIT, (__N))

◆ REG_RSVD_U8

#define REG_RSVD_U8   REG_RSVD(8)

◆ REG_RSVD_U16

#define REG_RSVD_U16   REG_RSVD(16)

◆ REG_RSVD_U32

#define REG_RSVD_U32   REG_RSVD(32)

◆ REG_RSVD_U8N

#define REG_RSVD_U8N (   __N)    REG_RSVD_N(8, (__N))

◆ REG_RSVD_U16N

#define REG_RSVD_U16N (   __N)    REG_RSVD_N(16, (__N))

◆ REG_RSVD_U32N

#define REG_RSVD_U32N (   __N)    REG_RSVD_N(32, (__N))

◆ REG8_RSVD_N

#define REG8_RSVD_N (   __N)    REG_RSVD_U8N(__N)

◆ REG8_RSVD_B

#define REG8_RSVD_B (   __BYTE_CNT)    REG8_RSVD_N(__BYTE_CNT)

◆ REG8_RSVD_8B

#define REG8_RSVD_8B   REG8_RSVD_B(8)

◆ REG8_RSVD_16B

#define REG8_RSVD_16B   REG8_RSVD_B(16)

◆ REG8_RSVD_32B

#define REG8_RSVD_32B   REG8_RSVD_B(32)

◆ REG8_RSVD_64B

#define REG8_RSVD_64B   REG8_RSVD_B(64)

◆ REG8_RSVD_128B

#define REG8_RSVD_128B   REG8_RSVD_B(128)

◆ REG8_RSVD_256B

#define REG8_RSVD_256B   REG8_RSVD_B(256)

◆ REG8_RSVD_512B

#define REG8_RSVD_512B   REG8_RSVD_B(512)

◆ REG8_RSVD_1K

#define REG8_RSVD_1K   REG8_RSVD_B(1024)

◆ REG8_RSVD_2K

#define REG8_RSVD_2K   REG8_RSVD_B(2048)

◆ REG8_RSVD_4K

#define REG8_RSVD_4K   REG8_RSVD_B(4096)

◆ REG8_RSVD_8K

#define REG8_RSVD_8K   REG8_RSVD_B(8192)

◆ REG8_RSVD_16K

#define REG8_RSVD_16K   REG8_RSVD_B(16 * 1024)

◆ REG8_RSVD_32K

#define REG8_RSVD_32K   REG8_RSVD_B(32 * 1024)

◆ REG8_RSVD_64K

#define REG8_RSVD_64K   REG8_RSVD_B(64 * 1024)

◆ REG8_RSVD_128K

#define REG8_RSVD_128K   REG8_RSVD_B(128 * 1024)

◆ REG8_RSVD_256K

#define REG8_RSVD_256K   REG8_RSVD_B(256 * 1024)

◆ REG8_RSVD_512K

#define REG8_RSVD_512K   REG8_RSVD_B(512 * 1024)

◆ REG8_RSVD_1M

#define REG8_RSVD_1M   REG8_RSVD_B(1024 * 1024)

◆ REG16_RSVD_N

#define REG16_RSVD_N (   __N)    REG_RSVD_U16N(__N)

◆ REG16_RSVD_B

#define REG16_RSVD_B (   __BYTE_CNT)    REG16_RSVD_N(__BYTE_CNT >> 1)

◆ REG16_RSVD_8B

#define REG16_RSVD_8B   REG16_RSVD_B(8)

◆ REG16_RSVD_16B

#define REG16_RSVD_16B   REG16_RSVD_B(16)

◆ REG16_RSVD_32B

#define REG16_RSVD_32B   REG16_RSVD_B(32)

◆ REG16_RSVD_64B

#define REG16_RSVD_64B   REG16_RSVD_B(64)

◆ REG16_RSVD_128B

#define REG16_RSVD_128B   REG16_RSVD_B(128)

◆ REG16_RSVD_256B

#define REG16_RSVD_256B   REG16_RSVD_B(256)

◆ REG16_RSVD_512B

#define REG16_RSVD_512B   REG16_RSVD_B(512)

◆ REG16_RSVD_1K

#define REG16_RSVD_1K   REG16_RSVD_B(1024)

◆ REG16_RSVD_2K

#define REG16_RSVD_2K   REG16_RSVD_B(2048)

◆ REG16_RSVD_4K

#define REG16_RSVD_4K   REG16_RSVD_B(4096)

◆ REG16_RSVD_8K

#define REG16_RSVD_8K   REG16_RSVD_B(8192)

◆ REG16_RSVD_16K

#define REG16_RSVD_16K   REG16_RSVD_B(16 * 1024)

◆ REG16_RSVD_32K

#define REG16_RSVD_32K   REG16_RSVD_B(32 * 1024)

◆ REG16_RSVD_64K

#define REG16_RSVD_64K   REG16_RSVD_B(64 * 1024)

◆ REG16_RSVD_128K

#define REG16_RSVD_128K   REG16_RSVD_B(128 * 1024)

◆ REG16_RSVD_256K

#define REG16_RSVD_256K   REG16_RSVD_B(256 * 1024)

◆ REG16_RSVD_512K

#define REG16_RSVD_512K   REG16_RSVD_B(512 * 1024)

◆ REG16_RSVD_1M

#define REG16_RSVD_1M   REG16_RSVD_B(1024 * 1024)

◆ REG32_RSVD_N

#define REG32_RSVD_N (   __N)    REG_RSVD_U32N(__N)

◆ REG32_RSVD_B

#define REG32_RSVD_B (   __BYTE_CNT)    REG_RSVD_U32N(__BYTE_CNT >> 2)

◆ REG32_RSVD_8B

#define REG32_RSVD_8B   REG32_RSVD_B(8)

◆ REG32_RSVD_16B

#define REG32_RSVD_16B   REG32_RSVD_B(16)

◆ REG32_RSVD_32B

#define REG32_RSVD_32B   REG32_RSVD_B(32)

◆ REG32_RSVD_64B

#define REG32_RSVD_64B   REG32_RSVD_B(64)

◆ REG32_RSVD_128B

#define REG32_RSVD_128B   REG32_RSVD_B(128)

◆ REG32_RSVD_256B

#define REG32_RSVD_256B   REG32_RSVD_B(256)

◆ REG32_RSVD_512B

#define REG32_RSVD_512B   REG32_RSVD_B(512)

◆ REG32_RSVD_1K

#define REG32_RSVD_1K   REG32_RSVD_B(1024)

◆ REG32_RSVD_2K

#define REG32_RSVD_2K   REG32_RSVD_B(2048)

◆ REG32_RSVD_4K

#define REG32_RSVD_4K   REG32_RSVD_B(4096)

◆ REG32_RSVD_8K

#define REG32_RSVD_8K   REG32_RSVD_B(8192)

◆ REG32_RSVD_16K

#define REG32_RSVD_16K   REG32_RSVD_B(16 * 1024)

◆ REG32_RSVD_32K

#define REG32_RSVD_32K   REG32_RSVD_B(32 * 1024)

◆ REG32_RSVD_64K

#define REG32_RSVD_64K   REG32_RSVD_B(64 * 1024)

◆ REG32_RSVD_128K

#define REG32_RSVD_128K   REG32_RSVD_B(128 * 1024)

◆ REG32_RSVD_256K

#define REG32_RSVD_256K   REG32_RSVD_B(256 * 1024)

◆ REG32_RSVD_512K

#define REG32_RSVD_512K   REG32_RSVD_B(512 * 1024)

◆ REG32_RSVD_1M

#define REG32_RSVD_1M   REG32_RSVD_B(1024 * 1024)

Typedef Documentation

◆ reg8_t

typedef volatile uint8_t reg8_t

◆ reg16_t

typedef volatile uint16_t reg16_t

◆ reg32_t

typedef volatile uint32_t reg32_t

Enumeration Type Documentation

◆ vsf_err_t

enum vsf_err_t
Enumerator
VSF_ERR_NOT_READY 

service not ready yet

VSF_ERR_NONE 

none error

VSF_ERR_UNKNOWN 

unknown error

VSF_ERR_NOT_SUPPORT 

function not supported

VSF_ERR_NOT_AVAILABLE 

service not available

VSF_ERR_NOT_ACCESSABLE 

target not acceesable

VSF_ERR_NOT_ACCESSIBLE 
VSF_ERR_NOT_ENOUGH_RESOURCES 

no enough resources

VSF_ERR_FAIL 

failed

VSF_ERR_INVALID_PARAMETER 

invalid parameter

VSF_ERR_INVALID_RANGE 

invalid range

VSF_ERR_INVALID_PTR 

invalid pointer

VSF_ERR_INVALID_KEY 

invalid key

VSF_ERR_IO 

IO error.

VSF_ERR_ALREADY_EXISTS 

already exists

VSF_ERR_REQ_ALREADY_REGISTERED 

request all ready exist

VSF_ERR_BUG 

bug

VSF_ERR_OVERRUN 

overrun

VSF_ERR_PROVIDED_RESOURCE_NOT_SUFFICIENT 

the resource provided by user is not sufficient

VSF_ERR_PROVIDED_RESOURCE_NOT_ALIGNED 

the provided resource is not aligned to certain size (2^N)

VSF_ERR_TIMEOUT 
VSF_ERR_BUSY 

◆ 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_yield 
fsm_rt_wait_for_obj 

fsm wait for object

fsm_rt_wait_for_evt 
fsm_rt_wfe 
fsm_rt_asyn 

fsm asynchronose complete, you can check it later.

fsm_rt_user