VSF Documented
vsf_led_scan.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_LED_SCAN_H__
19#define __VSF_LED_SCAN_H__
20
21/*============================ INCLUDES ======================================*/
22
24
25#if VSF_USE_LED_SCAN == ENABLED
26
27#include "hal/vsf_hal.h"
28#include "kernel/vsf_kernel.h"
29
30#if defined(__VSF_LED_SCAN_CLASS_IMPLEMENT)
31# undef __VSF_LED_SCAN_CLASS_IMPLEMENT
32# define __VSF_CLASS_IMPLEMENT__
33#endif
34
35#include "utilities/ooc_class.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/*============================ MACROS ========================================*/
42/*============================ MACROFIED FUNCTIONS ===========================*/
43
44#define __describe_led_scan_led(__pin_set, __pin_clr) \
45 { .pin_set = (__pin_set), .pin_clr = (__pin_clr) }
46#define describe_led_scan_led(__pin_set, __pin_clr) \
47 __describe_led_scan_led((__pin_set), (__pin_clr))
48
49#define __describe_led_scan_hw(__name, __io_mapper, __led_num, ...) \
50 typedef struct VSF_MCONNECT(__, __name, _hw_t) { \
51 const vsf_io_mapper_t *io_mapper; \
52 uint8_t led_num; \
53 vsf_led_scan_pin_t __pins[(__led_num)]; \
54 } VSF_MCONNECT(__, __name, _hw_t); \
55 const VSF_MCONNECT(__, __name, _hw_t) VSF_MCONNECT(__, __name, _hw) = { \
56 .io_mapper = (const vsf_io_mapper_t *)(__io_mapper), \
57 .led_num = (__led_num), \
58 .__pins = { \
59 __VA_ARGS__ \
60 }, \
61 };
62#define describe_led_scan_hw(__name, __io_mapper, __led_num, ...) \
63 __describe_led_scan_hw(__name, (__io_mapper), (__led_num), __VA_ARGS__)
64
65#define __describe_led_scan(__name, __io_mapper, __led_num, ...) \
66 describe_led_scan_hw(__name, (__io_mapper), (__led_num), __VA_ARGS__) \
67 vsf_led_scan_t __name = { \
68 .hw = (const vsf_led_scan_hw_t *)&VSF_MCONNECT(__, __name, _hw),\
69 };
70#define describe_led_scan(__name, __io_mapper, __led_num, ...) \
71 __describe_led_scan(__name, (__io_mapper), (__led_num), __VA_ARGS__)
72
73/*============================ TYPES =========================================*/
74
75typedef struct vsf_led_scan_pin_t {
79
80typedef struct vsf_led_scan_hw_t {
81 const vsf_io_mapper_t *io_mapper;
85
87 public_member(
88 const vsf_led_scan_hw_t *hw;
89 )
90 private_member(
92 uint8_t cur_pin;
93 bool is_inited;
94 bool is_running;
96 )
97};
98
99/*============================ GLOBAL VARIABLES ==============================*/
100/*============================ PROTOTYPES ====================================*/
101
102extern void vsf_led_scan_config_pin(vsf_led_scan_t *scan, uint32_t pin_mask, uint32_t feature);
103extern void vsf_led_scan_set_direction(vsf_led_scan_t *scan, uint32_t pin_mask, uint32_t direction_mask);
105extern void vsf_led_scan_switch_direction(vsf_led_scan_t *scan, uint32_t pin_mask);
106extern void vsf_led_scan_set_input(vsf_led_scan_t *scan, uint32_t pin_mask);
107extern void vsf_led_scan_set_output(vsf_led_scan_t *scan, uint32_t pin_mask);
109extern void vsf_led_scan_write(vsf_led_scan_t *scan, uint32_t value, uint32_t pin_mask);
110extern void vsf_led_scan_set(vsf_led_scan_t *scan, uint32_t pin_mask);
111extern void vsf_led_scan_clear(vsf_led_scan_t *scan, uint32_t pin_mask);
112extern void vsf_led_scan_toggle(vsf_led_scan_t *scan, uint32_t pin_mask);
113
114#ifdef __cplusplus
115}
116#endif
117
118#endif // VSF_USE_LED_SCAN
119#endif // __VSF_LED_SCAN_H__
120/* EOF */
Definition vsf_eda.h:848
Definition vsf_led_scan.h:86
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_led_scan.h:80
const vsf_io_mapper_t * io_mapper
Definition vsf_led_scan.h:81
uint8_t led_num
Definition vsf_led_scan.h:82
vsf_led_scan_pin_t pins[0]
Definition vsf_led_scan.h:83
Definition vsf_led_scan.h:75
uint8_t pin_set
Definition vsf_led_scan.h:76
uint8_t pin_clr
Definition vsf_led_scan.h:77
vk_av_control_value_t value
Definition vsf_audio.h:171
void vsf_led_scan_set_direction(vsf_led_scan_t *scan, uint32_t pin_mask, uint32_t direction_mask)
Definition vsf_led_scan.c:92
void vsf_led_scan_switch_direction(vsf_led_scan_t *scan, uint32_t pin_mask)
Definition vsf_led_scan.c:115
uint32_t vsf_led_scan_read(vsf_led_scan_t *scan)
Definition vsf_led_scan.c:130
void vsf_led_scan_set_input(vsf_led_scan_t *scan, uint32_t pin_mask)
Definition vsf_led_scan.c:120
void vsf_led_scan_config_pin(vsf_led_scan_t *scan, uint32_t pin_mask, uint32_t feature)
Definition vsf_led_scan.c:88
void vsf_led_scan_clear(vsf_led_scan_t *scan, uint32_t pin_mask)
Definition vsf_led_scan.c:148
void vsf_led_scan_set(vsf_led_scan_t *scan, uint32_t pin_mask)
Definition vsf_led_scan.c:142
void vsf_led_scan_write(vsf_led_scan_t *scan, uint32_t value, uint32_t pin_mask)
Definition vsf_led_scan.c:135
uint32_t vsf_led_scan_get_direction(vsf_led_scan_t *scan, uint32_t pin_mask)
Definition vsf_led_scan.c:110
void vsf_led_scan_set_output(vsf_led_scan_t *scan, uint32_t pin_mask)
Definition vsf_led_scan.c:125
void vsf_led_scan_toggle(vsf_led_scan_t *scan, uint32_t pin_mask)
Definition vsf_led_scan.c:153