18#if VSF_HAL_USE_TIMER == ENABLED
23#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
24# define VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
27#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION
28# define VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
31#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_IRQ_CLEAR
32# define VSF_TIMER_CFG_REIMPLEMENT_API_IRQ_CLEAR DISABLED
35#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CTRL
36# define VSF_TIMER_CFG_REIMPLEMENT_API_CTRL DISABLED
39#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_STATUS
40# define VSF_TIMER_CFG_REIMPLEMENT_API_STATUS DISABLED
44#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
45# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL DISABLED
48#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG
49# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
52#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START
53# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
56#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP
57# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
60#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START
61# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
64#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP
65# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
68#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL
69# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL
72#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_GET_COUNTER
73# define VSF_TIMER_CFG_REIMPLEMENT_API_GET_COUNTER DISABLED
76#ifndef VSF_TIMER_CFG_REIMPLEMENT_API_SET_COUNTER
77# define VSF_TIMER_CFG_REIMPLEMENT_API_SET_COUNTER DISABLED
80#ifdef VSF_TIMER_CFG_IMP_REMAP_PREFIX
81# undef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
82# undef VSF_TIMER_CFG_REIMPLEMENT_API_CTRL
83# undef VSF_TIMER_CFG_REIMPLEMENT_API_STATUS
84# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG
85# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START
86# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP
87# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START
88# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP
89# undef VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL
90# undef VSF_TIMER_CFG_REIMPLEMENT_API_GET_COUNTER
91# undef VSF_TIMER_CFG_REIMPLEMENT_API_SET_COUNTER
92# define VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
93# undef VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION
94# define VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
95# define VSF_TIMER_CFG_REIMPLEMENT_API_CTRL ENABLED
96# define VSF_TIMER_CFG_REIMPLEMENT_API_STATUS ENABLED
97# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG ENABLED
98# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START ENABLED
99# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP ENABLED
100# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START ENABLED
101# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP ENABLED
102# define VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL ENABLED
103# define VSF_TIMER_CFG_REIMPLEMENT_API_GET_COUNTER ENABLED
104# define VSF_TIMER_CFG_REIMPLEMENT_API_SET_COUNTER ENABLED
107#if VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
108# ifndef VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
109# define VSF_TIMER_CFG_CAPABILITY_IRQ_MASK VSF_TIMER_IRQ_ALL_BITS_MASK
111# ifndef VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
112# define VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN 32
114# ifndef VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
115# define VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM 1
117# ifndef VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT
118# define VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT 32
127#if defined(VSF_TIMER_CFG_IMP_RENAME_DEVICE_PREFIX) && (VSF_TIMER_CFG_IMP_RENAME_DEVICE_PREFIX == ENABLED)
128# define vsf_real_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _t)
129# define vsf_real_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _capability)
130# define vsf_real_timer_get_configuration VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _get_configuration)
131# define vsf_real_timer_irq_clear VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _irq_clear)
132# define vsf_real_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _ctrl)
133# define vsf_real_timer_status VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _status)
134# define vsf_real_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _channel_config)
135# define vsf_real_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _channel_start)
136# define vsf_real_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _channel_stop)
137# define vsf_real_timer_channel_request_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _channel_request_start)
138# define vsf_real_timer_channel_request_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _channel_request_stop)
139# define vsf_real_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _channel_ctrl)
140# define vsf_real_timer_get_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _get_counter)
141# define vsf_real_timer_set_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_DEVICE_PREFIX, _set_counter)
143# define vsf_real_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_t)
144# define vsf_real_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_capability)
145# define vsf_real_timer_get_configuration VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_get_configuration)
146# define vsf_real_timer_irq_clear VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_clear)
147# define vsf_real_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_ctrl)
148# define vsf_real_timer_status VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_status)
149# define vsf_real_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_config)
150# define vsf_real_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_start)
151# define vsf_real_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_stop)
152# define vsf_real_timer_channel_request_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_request_start)
153# define vsf_real_timer_channel_request_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_request_stop)
154# define vsf_real_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_ctrl)
155# define vsf_real_timer_get_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_get_counter)
156# define vsf_real_timer_set_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_set_counter)
162#if VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
169 .channel_cnt = VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT,
172 return timer_capability;
176#if VSF_TIMER_CFG_REIMPLEMENT_API_CTRL == DISABLED
185#if VSF_TIMER_CFG_REIMPLEMENT_API_STATUS == DISABLED
197#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CONFIG == DISABLED
207#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_START == DISABLED
208vsf_err_t vsf_real_timer_channel_start(vsf_real_timer_t *timer_ptr,
uint8_t channel)
216#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_STOP == DISABLED
217vsf_err_t vsf_real_timer_channel_stop(vsf_real_timer_t *timer_ptr,
uint8_t channel)
225#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_START == DISABLED
234#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_REQUEST_STOP == DISABLED
235vsf_err_t vsf_real_timer_channel_request_stop(vsf_real_timer_t *timer_ptr,
uint8_t channel)
243#if VSF_TIMER_CFG_REIMPLEMENT_API_CHANNEL_CTRL == DISABLED
252#if VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
265#if VSF_TIMER_CFG_REIMPLEMENT_API_IRQ_CLEAR == DISABLED
277#if VSF_TIMER_CFG_REIMPLEMENT_API_GET_COUNTER == DISABLED
278uint32_t vsf_real_timer_get_counter(vsf_real_timer_t *timer_ptr)
289#if VSF_TIMER_CFG_REIMPLEMENT_API_SET_COUNTER == DISABLED
303#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CAPABILITY
304#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CFG
305#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CFG
306#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_CTRL
307#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_MODE
308#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CHANNEL_REQUEST
309#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_CTRL
310#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_IRQ_MASK
311#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_STATUS
312#undef VSF_TIMER_CFG_REIMPLEMENT_TYPE_SET_COUNTER_MODE
313#undef VSF_TIMER_CFG_REIMPLEMENT_API_CAPABILITY
314#undef VSF_TIMER_CFG_REIMPLEMENT_API_GET_CONFIGURATION
315#undef VSF_TIMER_CFG_REIMPLEMENT_API_GET_COUNTER
316#undef VSF_TIMER_CFG_REIMPLEMENT_API_SET_COUNTER
317#undef VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
318#undef VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
319#undef VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
320#undef VSF_TIMER_CFG_CAPABILITY_PWM_CHANNEL_CNT
321#undef vsf_real_timer_t
322#undef vsf_real_timer_capability
323#undef vsf_real_timer_get_configuration
324#undef vsf_real_timer_irq_clear
325#undef vsf_real_timer_ctrl
326#undef vsf_real_timer_status
327#undef vsf_real_timer_channel_config
328#undef vsf_real_timer_channel_start
329#undef vsf_real_timer_channel_stop
330#undef vsf_real_timer_channel_request_start
331#undef vsf_real_timer_channel_request_stop
332#undef vsf_real_timer_channel_ctrl
333#undef vsf_real_timer_get_counter
334#undef vsf_real_timer_set_counter
338#ifdef VSF_TIMER_CFG_IMP_REMAP_PREFIX
340# define vsf_imp_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_t)
341# define vsf_imp_timer_init VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_init)
342# define vsf_imp_timer_fini VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_fini)
343# define vsf_imp_timer_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_enable)
344# define vsf_imp_timer_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_disable)
345# define vsf_imp_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_capability)
346# define vsf_imp_timer_irq_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_enable)
347# define vsf_imp_timer_irq_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_disable)
348# define vsf_imp_timer_irq_clear VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_irq_clear)
349# define vsf_imp_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_config)
350# define vsf_imp_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_start)
351# define vsf_imp_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_stop)
352# define vsf_imp_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_channel_ctrl)
353# define vsf_imp_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_ctrl)
354# define vsf_imp_timer_get_configuration VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_get_configuration)
355# define vsf_imp_timer_get_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_get_counter)
356# define vsf_imp_timer_set_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_PREFIX, _timer_set_counter)
358# define vsf_remap_timer_t VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_t)
359# define vsf_remap_timer_init VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_init)
360# define vsf_remap_timer_fini VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_fini)
361# define vsf_remap_timer_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_enable)
362# define vsf_remap_timer_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_disable)
363# define vsf_remap_timer_capability VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_capability)
364# define vsf_remap_timer_irq_enable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_irq_enable)
365# define vsf_remap_timer_irq_disable VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_irq_disable)
366# define vsf_remap_timer_irq_clear VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_irq_clear)
367# define vsf_remap_timer_channel_config VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_config)
368# define vsf_remap_timer_channel_start VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_start)
369# define vsf_remap_timer_channel_stop VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_stop)
370# define vsf_remap_timer_channel_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_channel_ctrl)
371# define vsf_remap_timer_ctrl VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_ctrl)
372# define vsf_remap_timer_get_configuration VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_get_configuration)
373# define vsf_remap_timer_get_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_get_counter)
374# define vsf_remap_timer_set_counter VSF_MCONNECT(VSF_TIMER_CFG_IMP_REMAP_PREFIX, _timer_set_counter)
376# define VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS \
377 vsf_err_t vsf_imp_timer_init(vsf_imp_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
379 VSF_HAL_ASSERT(timer_ptr != NULL); \
380 return vsf_remap_timer_init(timer_ptr, cfg_ptr); \
382 void vsf_imp_timer_fini(vsf_imp_timer_t *timer_ptr) \
384 VSF_HAL_ASSERT(timer_ptr != NULL); \
385 vsf_remap_timer_fini(timer_ptr); \
387 fsm_rt_t vsf_imp_timer_enable(vsf_imp_timer_t *timer_ptr) \
389 VSF_HAL_ASSERT(timer_ptr != NULL); \
390 return vsf_remap_timer_enable(timer_ptr); \
392 fsm_rt_t vsf_imp_timer_disable(vsf_imp_timer_t *timer_ptr) \
394 VSF_HAL_ASSERT(timer_ptr != NULL); \
395 return vsf_remap_timer_disable(timer_ptr); \
397 void vsf_imp_timer_irq_enable(vsf_imp_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
399 VSF_HAL_ASSERT(timer_ptr != NULL); \
400 vsf_remap_timer_irq_enable(timer_ptr, irq_mask); \
402 void vsf_imp_timer_irq_disable(vsf_imp_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
404 VSF_HAL_ASSERT(timer_ptr != NULL); \
405 vsf_remap_timer_irq_disable(timer_ptr, irq_mask); \
407 vsf_timer_irq_mask_t vsf_imp_timer_irq_clear(vsf_imp_timer_t *timer_ptr, vsf_timer_irq_mask_t irq_mask) \
409 VSF_HAL_ASSERT(timer_ptr != NULL); \
410 return vsf_remap_timer_irq_clear(timer_ptr, irq_mask); \
412 vsf_timer_capability_t vsf_imp_timer_capability(vsf_imp_timer_t *timer_ptr) \
414 VSF_HAL_ASSERT(timer_ptr != NULL); \
415 return vsf_remap_timer_capability(timer_ptr); \
417 vsf_err_t vsf_imp_timer_pwm_set(vsf_imp_timer_t *timer_ptr, uint8_t channel, uint32_t period, uint32_t pulse) \
419 VSF_HAL_ASSERT(NULL != timer_ptr); \
420 return vsf_remap_timer_pwm_set(timer_ptr, channel, period, pulse); \
422 vsf_err_t vsf_imp_timer_channel_config(vsf_imp_timer_t *timer_ptr, uint8_t channel, \
423 vsf_timer_channel_cfg_t *cfg_ptr) \
425 VSF_HAL_ASSERT(NULL != timer_ptr); \
426 return vsf_remap_timer_channel_config(timer_ptr, channel, cfg_ptr); \
428 fsm_rt_t vsf_imp_timer_channel_start(vsf_imp_timer_t *timer_ptr, uint8_t channel) \
430 VSF_HAL_ASSERT(NULL != timer_ptr); \
431 return vsf_remap_timer_channel_start(timer_ptr, channel); \
433 fsm_rt_t vsf_imp_timer_channel_stop(vsf_imp_timer_t *timer_ptr, uint8_t channel) \
435 VSF_HAL_ASSERT(NULL != timer_ptr); \
436 return vsf_remap_timer_channel_stop(timer_ptr, channel); \
438 vsf_err_t vsf_imp_timer_channel_ctrl(vsf_imp_timer_t *timer_ptr, uint8_t channel, \
439 vsf_timer_channel_ctrl_t ctrl, void *param) \
441 VSF_HAL_ASSERT(NULL != timer_ptr); \
442 return vsf_remap_timer_channel_ctrl(timer_ptr, channel, ctrl, param); \
444 void vsf_imp_timer_ctrl(vsf_imp_timer_t *timer_ptr, uint_fast32_t ctrl_bit, bool level) \
446 VSF_HAL_ASSERT(NULL != timer_ptr); \
447 vsf_remap_timer_ctrl(timer_ptr, ctrl_bit, level); \
450 vsf_err_t vsf_imp_timer_get_configuration(vsf_imp_timer_t *timer_ptr, vsf_timer_cfg_t *cfg_ptr) \
452 VSF_HAL_ASSERT(timer_ptr != NULL); \
453 return vsf_remap_timer_get_configuration(timer_ptr, cfg_ptr); \
455 uint32_t vsf_imp_timer_get_counter(vsf_imp_timer_t *timer_ptr) \
457 VSF_HAL_ASSERT(timer_ptr != NULL); \
458 return vsf_remap_timer_get_counter(timer_ptr); \
460 vsf_err_t vsf_imp_timer_set_counter(vsf_imp_timer_t *timer_ptr, uint32_t value, \
461 vsf_timer_set_counter_mode_t mode) \
463 VSF_HAL_ASSERT(timer_ptr != NULL); \
464 return vsf_remap_timer_set_counter(timer_ptr, value, mode); \
470#define VSF_HAL_TEMPLATE_IMP_NAME _timer
471#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _TIMER
473#if !defined(VSF_TIMER_CFG_IMP_PREFIX) && !defined(VSF_TIMER_CFG_IMP_DEVICE_PREFIX)
474# error "Please define VSF_TIMER_CFG_IMP_PREFIX in timer driver"
477#if !defined(VSF_TIMER_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_TIMER_CFG_IMP_DEVICE_UPCASE_PREFIX)
478# error "Please define VSF_TIMER_CFG_IMP_UPCASE_PREFIX in timer driver"
481#ifndef VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX
482# define VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX VSF_TIMER_CFG_IMP_UPCASE_PREFIX
485#ifdef VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
486# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
491#undef VSF_TIMER_CFG_IMP_PREFIX
492#undef VSF_TIMER_CFG_IMP_COUNT_MASK_PREFIX
493#undef VSF_TIMER_CFG_IMP_UPCASE_PREFIX
494#undef VSF_TIMER_CFG_IMP_DEVICE_PREFIX
495#undef VSF_TIMER_CFG_IMP_DEVICE_UPCASE_PREFIX
496#undef VSF_TIMER_CFG_IMP_LV0
497#undef VSF_TIMER_CFG_IMP_REMAP_FUNCTIONS
498#undef VSF_TIMER_CFG_IMP_HAS_OP
499#undef VSF_TIMER_CFG_IMP_EXTERN_OP
500#undef VSF_TIMER_CFG_IMP_RENAME_DEVICE_PREFIX
502#undef vsf_imp_timer_t
503#undef vsf_imp_timer_init
504#undef vsf_imp_timer_fini
505#undef vsf_imp_timer_enable
506#undef vsf_imp_timer_disable
507#undef vsf_imp_timer_capability
508#undef vsf_imp_timer_irq_enable
509#undef vsf_imp_timer_irq_disable
510#undef vsf_imp_timer_channel_config
511#undef vsf_imp_timer_channel_start
512#undef vsf_imp_timer_channel_stop
513#undef vsf_imp_timer_channel_ctrl
514#undef vsf_imp_timer_ctrl
515#undef vsf_imp_timer_get_configuration
516#undef vsf_imp_timer_get_counter
517#undef vsf_imp_timer_set_counter
519#undef vsf_remap_timer_t
520#undef vsf_remap_timer_init
521#undef vsf_remap_timer_fini
522#undef vsf_remap_timer_enable
523#undef vsf_remap_timer_disable
524#undef vsf_remap_timer_capability
525#undef vsf_remap_timer_irq_enable
526#undef vsf_remap_timer_irq_disable
527#undef vsf_remap_timer_channel_config
528#undef vsf_remap_timer_channel_start
529#undef vsf_remap_timer_channel_stop
530#undef vsf_remap_timer_channel_ctrl
531#undef vsf_remap_timer_ctrl
532#undef vsf_remap_timer_get_configuration
533#undef vsf_remap_timer_get_counter
534#undef vsf_remap_timer_set_counter
536#undef VSF_HAL_TEMPLATE_IMP_NAME
537#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
562#ifdef VSF_TIMER_CFG_MODE_CHECK_UNIQUE
564#ifndef VSF_TIMER_CHECK_UNIQUE_CHANNEL_MODE_MODES
565# define VSF_TIMER_CHECK_UNIQUE_CHANNEL_MODE_MODES \
566 VSF_TIMER_CHANNEL_MODE_BASE
569#ifndef VSF_TIMER_CHECK_UNIQUE_BASE_COUNTER_MODES
570# define VSF_TIMER_CHECK_UNIQUE_BASE_COUNTER_MODES \
571 VSF_TIMER_BASE_ONESHOT, \
572 VSF_TIMER_BASE_CONTINUES
588#ifdef VSF_TIMER_CHANNEL_MODE_PWM
589 , VSF_TIMER_CHANNEL_MODE_PWM
591#ifdef VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE
592 , VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE
594#ifdef VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE
595 , VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE
597#ifdef VSF_TIMER_CHANNEL_MODE_ENCODER
598 , VSF_TIMER_CHANNEL_MODE_ENCODER
600#ifdef VSF_TIMER_CHANNEL_MODE_ONE_PULSE
601 , VSF_TIMER_CHANNEL_MODE_ONE_PULSE
603#ifdef VSF_TIMER_CHANNEL_MODE_HALL_SENSOR
604 , VSF_TIMER_CHANNEL_MODE_HALL_SENSOR
618#ifdef VSF_TIMER_CUSTOM_MODE_VALUES
630#ifdef VSF_TIMER_CHANNEL_MODE_PWM
631 , VSF_TIMER_CHANNEL_MODE_PWM
633#ifdef VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE
634 , VSF_TIMER_CHANNEL_MODE_OUTPUT_COMPARE
636#ifdef VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE
637 , VSF_TIMER_CHANNEL_MODE_INPUT_CAPTURE
639#ifdef VSF_TIMER_CHANNEL_MODE_ENCODER
640 , VSF_TIMER_CHANNEL_MODE_ENCODER
642#ifdef VSF_TIMER_CHANNEL_MODE_ONE_PULSE
643 , VSF_TIMER_CHANNEL_MODE_ONE_PULSE
645#ifdef VSF_TIMER_CHANNEL_MODE_HALL_SENSOR
646 , VSF_TIMER_CHANNEL_MODE_HALL_SENSOR
648#ifdef VSF_TIMER_BASE_COUNTER_UP
649 , VSF_TIMER_BASE_COUNTER_UP
651#ifdef VSF_TIMER_BASE_COUNTER_DOWN
652 , VSF_TIMER_BASE_COUNTER_DOWN
654#ifdef VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED1
655 , VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED1
657#ifdef VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED2
658 , VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED2
660#ifdef VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED3
661 , VSF_TIMER_BASE_COUNTER_CENTER_ALIGNED3
665#ifdef VSF_TIMER_CUSTOM_MODE_VALUES
666 , VSF_TIMER_CUSTOM_MODE_VALUES
670#undef VSF_TIMER_CHECK_UNIQUE_CHANNEL_MODE_MODES
671#undef VSF_TIMER_CHECK_UNIQUE_BASE_COUNTER_MODES
676#ifdef VSF_TIMER_CFG_IRQ_MASK_CHECK_UNIQUE
678#ifdef VSF_TIMER_CUSTOM_IRQ_MASK_VALUES
693#ifdef VSF_TIMER_CUSTOM_IRQ_MASK_VALUES
694 , VSF_TIMER_CUSTOM_IRQ_MASK_VALUES
701#ifdef VSF_TIMER_CFG_CTRL_CHECK_UNIQUE
703#ifdef VSF_TIMER_CUSTOM_CTRL_VALUES
712 VSF_TIMER_CFG_CTRL_CHECK_UNIQUE,
716#ifdef VSF_TIMER_CUSTOM_CTRL_VALUES
717 , VSF_TIMER_CUSTOM_CTRL_VALUES
724#ifdef VSF_TIMER_CFG_CHANNEL_CTRL_CHECK_UNIQUE
726#ifdef VSF_TIMER_CUSTOM_CHANNEL_CTRL_VALUES
735 VSF_TIMER_CFG_CHANNEL_CTRL_CHECK_UNIQUE,
739#ifdef VSF_TIMER_CUSTOM_CHANNEL_CTRL_VALUES
740 , VSF_TIMER_CUSTOM_CHANNEL_CTRL_VALUES
747#ifdef VSF_TIMER_CFG_SET_COUNTER_MODE_CHECK_UNIQUE
754 VSF_TIMER_CFG_SET_COUNTER_MODE_CHECK_UNIQUE,
756#ifdef VSF_TIMER_SET_COUNTER_IMMEDIATE
757 , VSF_TIMER_SET_COUNTER_IMMEDIATE
759#ifdef VSF_TIMER_SET_COUNTER_PRELOAD
760 , VSF_TIMER_SET_COUNTER_PRELOAD
765#undef VSF_TIMER_CFG_MODE_CHECK_UNIQUE
766#undef VSF_TIMER_CFG_IRQ_MASK_CHECK_UNIQUE
767#undef VSF_TIMER_CFG_CTRL_CHECK_UNIQUE
768#undef VSF_TIMER_CFG_CHANNEL_CTRL_CHECK_UNIQUE
769#undef VSF_TIMER_CFG_SET_COUNTER_MODE_CHECK_UNIQUE
770#undef VSF_TIMER_CUSTOM_MODE_VALUES
771#undef VSF_TIMER_CUSTOM_IRQ_MASK_VALUES
772#undef VSF_TIMER_CUSTOM_CTRL_VALUES
773#undef VSF_TIMER_CUSTOM_CHANNEL_CTRL_VALUES
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define VSF_TIMER_CFG_CAPABILITY_SUPPORT_PWM
Definition timer.c:203
#define VSF_TIMER_CFG_CAPABILITY_TIMER_BITLEN
Definition timer.c:202
#define VSF_TIMER_CFG_CAPABILITY_IRQ_MASK
Definition timer.c:201
#define NULL
Definition lvgl.h:26
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:749
vsf_timer_irq_mask_t irq_mask
Definition timer.h:231
timer configuration
Definition vsf_template_timer.h:566
Definition vsf_template_timer.h:577
Definition vsf_template_timer.h:688
TIMER status information structure Contains the current status of TIMER operations.
Definition vsf_template_timer.h:739
#define VSF_TIMER_CFG_IRQ_MASK_CHECK_UNIQUE
Definition timer.c:309
#define VSF_TIMER_CFG_MODE_CHECK_UNIQUE
Definition timer.c:308
vk_av_control_value_t value
Definition vsf_audio.h:171
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
#define VSF_HAL_CHECK_UNIQUE_CUSTOM(__CHECK_FUNC,...)
Definition vsf_template_static_assert_unique.h:2426
#define __VSF_TIMER_CFG_SUPPORT_STANDARD_OPTIONAL
Enable standard optional features support.
Definition vsf_template_timer.h:242
vsf_timer_irq_mask_t
Definition vsf_template_timer.h:516
@ VSF_TIMER_IRQ_MASK_OVERFLOW
Definition vsf_template_timer.h:517
@ VSF_TIMER_CHANNEL_MODE_BASE
Definition vsf_template_timer.h:308
@ VSF_TIMER_BASE_ONESHOT
Standard optional channel modes Note: These are standard optional features. This macro should NOT be ...
Definition vsf_template_timer.h:364
@ VSF_TIMER_BASE_CONTINUES
Definition vsf_template_timer.h:366
vsf_timer_ctrl_t
Predefined VSF TIMER control command that can be reimplemented in specific hal drivers....
Definition vsf_template_timer.h:601
@ __VSF_TIMER_CTRL_DUMMY
Dummy value for compilation, required when no actual control commands are defined.
Definition vsf_template_timer.h:619
vsf_timer_set_counter_mode_t
Counter write mode for vsf_timer_set_counter().
Definition vsf_template_timer.h:725
@ __VSF_TIMER_SET_COUNTER_MODE_DUMMY
Definition vsf_template_timer.h:726
vsf_timer_channel_ctrl_t
Predefined VSF TIMER control command that can be reimplemented in specific hal drivers....
Definition vsf_template_timer.h:682
@ __VSF_TIMER_CHANNEL_CTRL_DUMMY
Dummy value for compilation.
Definition vsf_template_timer.h:683