VSF Documented
Data Structures | Macros | Typedefs | Enumerations | Functions
vsf_template_timer.h File Reference
#include "./vsf_template_hal_driver.h"
#include "hal/arch/vsf_arch.h"

Go to the source code of this file.

Data Structures

struct  vsf_timer_isr_t
 
struct  vsf_timer_cfg_t
 timer configuration More...
 
struct  vsf_timer_capability_t
 
struct  vsf_timer_op_t
 
struct  vsf_timer_t
 

Macros

#define VSF_TIMER_CFG_MULTI_CLASS   ENABLED
 
#define VSF_TIMER_CFG_PREFIX   vsf
 
#define VSF_TIMER_CFG_FUNCTION_RENAME   ENABLED
 
#define VSF_TIMER_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED
 
#define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CFG   DISABLED
 
#define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED
 
#define VSF_TIMER_CFG_INHERT_HAL_CAPABILITY   ENABLED
 
#define VSF_TIMER_APIS(__prefix_name)
 
#define __VSF_HAL_TEMPLATE_API   VSF_HAL_TEMPLATE_API_FP
 
#define __vsf_timer_t   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_t)
 
#define vsf_timer_init(__TIME, ...)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_init) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
 
#define vsf_timer_fini(__TIME, ...)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_fini) ((__vsf_timer_t *)(__TIME))
 
#define vsf_timer_enable(__TIME)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_enable) ((__vsf_timer_t *)(__TIME))
 
#define vsf_timer_disable(__TIME)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_disable) ((__vsf_timer_t *)(__TIME))
 
#define vsf_timer_capability(__TIME)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_capability) ((__vsf_timer_t *)(__TIME))
 
#define vsf_timer_irq_enable(__TIME, ...)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_irq_enable) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
 
#define vsf_timer_irq_disable(__TIME, ...)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_irq_disable) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
 
#define vsf_timer_set_period(__TIME, ...)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_set_period) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
 
#define vsf_timer_pwm_set(__TIME, ...)   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_pwm_set) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)
 

Typedefs

typedef enum vsf_timer_mode_t vsf_timer_mode_t
 
typedef enum vsf_timer_irq_mask_t vsf_timer_irq_mask_t
 
typedef struct vsf_timer_t vsf_timer_t
 
typedef void vsf_timer_isr_handler_t(void *target_ptr, vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
 
typedef struct vsf_timer_isr_t vsf_timer_isr_t
 
typedef struct vsf_timer_cfg_t vsf_timer_cfg_t
 timer configuration
 
typedef struct vsf_timer_capability_t vsf_timer_capability_t
 
typedef struct vsf_timer_op_t vsf_timer_op_t
 

Enumerations

enum  vsf_timer_mode_t {
  VSF_TIMER_MODE_ONESHOT = (0x00 << 0) ,
  VSF_TIMER_MODE_CONTINUES = (0x01 << 0) ,
  VSF_TIMER_MODE_PWM = (0x01 << 1) ,
  VSF_TIMER_MODE_NO_PWM = (0x00 << 1)
}
 
enum  {
  VSF_TIMER_MODE_RESTART_COUNT = 2 ,
  VSF_TIMER_MODE_RESTART_MASK ,
  VSF_TIMER_MODE_PWM_COUNT = 2 ,
  VSF_TIMER_MODE_PWM_MASK ,
  VSF_TIMER_MODE_MASK_COUNT = 3 ,
  VSF_TIMER_MODE_ALL_BITS_MASK = VSF_TIMER_MODE_RESTART_MASK
}
 
enum  vsf_timer_irq_mask_t { VSF_TIMER_IRQ_MASK_OVERFLOW = (0x01 << 0) }
 
enum  {
  VSF_TIMER_IRQ_COUNT = 1 ,
  VSF_TIMER_IRQ_ALL_BITS_MASK = VSF_TIMER_IRQ_MASK_OVERFLOW
}
 

Functions

vsf_err_t vsf_timer_init (vsf_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr)
 initialize a timer instance.
 
void vsf_timer_fini (vsf_timer_t *timer_ptr)
 finalize a timer instance.
 
fsm_rt_t vsf_timer_enable (vsf_timer_t *timer_ptr)
 enable interrupt masks of timer instance.
 
fsm_rt_t vsf_timer_disable (vsf_timer_t *timer_ptr)
 disable interrupt masks of timer instance.
 
vsf_timer_capability_t vsf_timer_capability (vsf_timer_t *timer_ptr)
 get the capability of timer instance.
 
void vsf_timer_irq_enable (vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
 enable interrupt masks of timer instance.
 
void vsf_timer_irq_disable (vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)
 disable interrupt masks of timer instance.
 
vsf_err_t vsf_timer_set_period (vsf_timer_t *timer_ptr, uint32_t period)
 timer set period (maximum count)
 
vsf_err_t vsf_timer_pwm_set (vsf_timer_t *timer_ptr, uint8_t channel, uint32_t period, uint32_t pulse)
 timer pwm set the period width and pulse width for a channel
 

Macro Definition Documentation

◆ VSF_TIMER_CFG_MULTI_CLASS

#define VSF_TIMER_CFG_MULTI_CLASS   ENABLED

◆ VSF_TIMER_CFG_PREFIX

#define VSF_TIMER_CFG_PREFIX   vsf

◆ VSF_TIMER_CFG_FUNCTION_RENAME

#define VSF_TIMER_CFG_FUNCTION_RENAME   ENABLED

◆ VSF_TIMER_CFG_REIMPLEMENT_TYPE_IRQ_MASK

#define VSF_TIMER_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED

◆ VSF_TIMER_CFG_REIMPLEMENT_TYPE_CFG

#define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CFG   DISABLED

Redefine struct vsf_timer_cfg_t. The vsf_timer_isr_handler_t type also needs to be redefined For compatibility, members should not be deleted when struct vsf_timer_cfg_t redefining.

◆ VSF_TIMER_CFG_REIMPLEMENT_TYPE_CAPABILITY

#define VSF_TIMER_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED

Redefine struct vsf_timer_capability_t. For compatibility, members should not be deleted when struct vsf_timer_capability_t redefining.

◆ VSF_TIMER_CFG_INHERT_HAL_CAPABILITY

#define VSF_TIMER_CFG_INHERT_HAL_CAPABILITY   ENABLED

◆ VSF_TIMER_APIS

#define VSF_TIMER_APIS (   __prefix_name)
Value:
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, init, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, timer, fini, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, timer, enable, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, timer, disable, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, timer, irq_enable, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, timer, irq_disable, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_timer_capability_t, timer, capability, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, set_period, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr, uint32_t period) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, timer, pwm_set, VSF_MCONNECT(__prefix_name, _timer_t) *timer_ptr, uint8_t channel, uint32_t period, uint32_t pulse)
vsf_err_t
Definition __type.h:42
struct VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
Definition flash.c:53
__le16 capability
Definition ieee80211.h:134
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_timer.h:161
timer configuration
Definition vsf_template_timer.h:147
fsm_rt_t
Definition vsf_fsm.h:315
vsf_timer_irq_mask_t
Definition vsf_template_timer.h:123
#define __VSF_HAL_TEMPLATE_API
Definition vsf_template_timer.h:178

◆ __VSF_HAL_TEMPLATE_API

#define __VSF_HAL_TEMPLATE_API   VSF_HAL_TEMPLATE_API_FP

◆ __vsf_timer_t

#define __vsf_timer_t   VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_t)

◆ vsf_timer_init

#define vsf_timer_init (   __TIME,
  ... 
)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_init) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)

◆ vsf_timer_fini

#define vsf_timer_fini (   __TIME,
  ... 
)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_fini) ((__vsf_timer_t *)(__TIME))

◆ vsf_timer_enable

#define vsf_timer_enable (   __TIME)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_enable) ((__vsf_timer_t *)(__TIME))

◆ vsf_timer_disable

#define vsf_timer_disable (   __TIME)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_disable) ((__vsf_timer_t *)(__TIME))

◆ vsf_timer_capability

#define vsf_timer_capability (   __TIME)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_capability) ((__vsf_timer_t *)(__TIME))

◆ vsf_timer_irq_enable

#define vsf_timer_irq_enable (   __TIME,
  ... 
)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_irq_enable) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)

◆ vsf_timer_irq_disable

#define vsf_timer_irq_disable (   __TIME,
  ... 
)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_irq_disable) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)

◆ vsf_timer_set_period

#define vsf_timer_set_period (   __TIME,
  ... 
)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_set_period) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)

◆ vsf_timer_pwm_set

#define vsf_timer_pwm_set (   __TIME,
  ... 
)    VSF_MCONNECT(VSF_TIMER_CFG_PREFIX, _timer_pwm_set) ((__vsf_timer_t *)(__TIME), ##__VA_ARGS__)

Typedef Documentation

◆ vsf_timer_mode_t

◆ vsf_timer_irq_mask_t

◆ vsf_timer_t

typedef struct vsf_timer_t vsf_timer_t

◆ vsf_timer_isr_handler_t

typedef void vsf_timer_isr_handler_t(void *target_ptr, vsf_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask)

◆ vsf_timer_isr_t

◆ vsf_timer_cfg_t

timer configuration

◆ vsf_timer_capability_t

◆ vsf_timer_op_t

Enumeration Type Documentation

◆ vsf_timer_mode_t

Enumerator
VSF_TIMER_MODE_ONESHOT 
VSF_TIMER_MODE_CONTINUES 
VSF_TIMER_MODE_PWM 
VSF_TIMER_MODE_NO_PWM 

◆ anonymous enum

anonymous enum
Enumerator
VSF_TIMER_MODE_RESTART_COUNT 
VSF_TIMER_MODE_RESTART_MASK 
VSF_TIMER_MODE_PWM_COUNT 
VSF_TIMER_MODE_PWM_MASK 
VSF_TIMER_MODE_MASK_COUNT 
VSF_TIMER_MODE_ALL_BITS_MASK 

◆ vsf_timer_irq_mask_t

Enumerator
VSF_TIMER_IRQ_MASK_OVERFLOW 

◆ anonymous enum

anonymous enum
Enumerator
VSF_TIMER_IRQ_COUNT 
VSF_TIMER_IRQ_ALL_BITS_MASK 

Function Documentation

◆ vsf_timer_init()

vsf_err_t vsf_timer_init ( vsf_timer_t timer_ptr,
vsf_timer_cfg_t cfg_ptr 
)
extern

initialize a timer instance.

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
[in]cfg_ptra pointer to structure vsf_timer_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if timer was initialized, or a negative error code
Note
It is not necessary to call vsf_timer_fini() to deinitialization. vsf_timer_init() should be called before any other timer API except vsf_timer_capability().

◆ vsf_timer_fini()

void vsf_timer_fini ( vsf_timer_t timer_ptr)
extern

finalize a timer instance.

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
Returns
none

◆ vsf_timer_enable()

fsm_rt_t vsf_timer_enable ( vsf_timer_t timer_ptr)
extern

enable interrupt masks of timer instance.

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
[in]irq_maskone or more value of enum vsf_timer_irq_mask_t
Returns
none.

◆ vsf_timer_disable()

fsm_rt_t vsf_timer_disable ( vsf_timer_t timer_ptr)
extern

disable interrupt masks of timer instance.

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
[in]irq_maskone or more value of enum vsf_timer_irq_mask_t, vsf_timer_irq_mask_t
Returns
none.

◆ vsf_timer_capability()

vsf_timer_capability_t vsf_timer_capability ( vsf_timer_t timer_ptr)
extern

get the capability of timer instance.

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
Returns
vsf_timer_capability_t: return all capability of current timer vsf_timer_capability_t

◆ vsf_timer_irq_enable()

void vsf_timer_irq_enable ( vsf_timer_t timer_ptr,
vsf_timer_irq_mask_t  irq_mask 
)
extern

enable interrupt masks of timer instance.

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
[in]irq_maskone or more value of enum vsf_timer_irq_mask_t
Returns
none.
Note
All pending interrupts should be cleared before interrupts are enabled.

◆ vsf_timer_irq_disable()

void vsf_timer_irq_disable ( vsf_timer_t timer_ptr,
vsf_timer_irq_mask_t  irq_mask 
)
extern

disable interrupt masks of timer instance.

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
[in]irq_maskone or more value of enum vsf_timer_irq_mask_t, vsf_timer_irq_mask_t
Returns
none.

◆ vsf_timer_set_period()

vsf_err_t vsf_timer_set_period ( vsf_timer_t timer_ptr,
uint32_t  period 
)
extern

timer set period (maximum count)

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
[in]periodtimer period width (in clock counter)
Returns
vsf_err_t: VSF_ERR_NONE if the timer set period was successfully, or a negative error code

◆ vsf_timer_pwm_set()

vsf_err_t vsf_timer_pwm_set ( vsf_timer_t timer_ptr,
uint8_t  channel,
uint32_t  period,
uint32_t  pulse 
)
extern

timer pwm set the period width and pulse width for a channel

Parameters
[in]timer_ptra pointer to structure vsf_timer_t
[in]channeltimer pwm channel
[in]periodtimer pwm period width (in clock counter)
[in]pulsetimer pwm pulse width (in clock counter)
Returns
vsf_err_t: VSF_ERR_NONE if the timer pwm set was successfully, or a negative error code