VSF Documented
vsf_input.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_INPUT_H__
19#define __VSF_INPUT_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "./vsf_input_cfg.h"
25
26#if VSF_USE_INPUT == ENABLED
27
28#if defined(__VSF_INPUT_CLASS_IMPLEMENT)
29# undef __VSF_INPUT_CLASS_IMPLEMENT
30# define __VSF_CLASS_IMPLEMENT__
31#elif defined(__VSF_INPUT_CLASS_INHERIT__)
32# undef __VSF_INPUT_CLASS_INHERIT__
33# define __VSF_CLASS_INHERIT__
34#endif
35
36#include "utilities/ooc_class.h"
37
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44/*============================ MACROS ========================================*/
45
46#define VSF_INPUT_ITEM_EX(__ITEM, __BITOFFSET, __BITLEN, __IS_SIGNED, __CONFIG) \
47 { \
48 .item = (__ITEM), \
49 .offset = (__BITOFFSET), \
50 .bitlen = (__BITLEN), \
51 .is_signed = (__IS_SIGNED), \
52 .config = (__CONFIG), \
53 }
54
55#define VSF_INPUT_ITEM(__ITEM, __BITOFFSET, __BITLEN, __IS_SIGNED) \
56 VSF_INPUT_ITEM_EX((__ITEM), (__BITOFFSET), (__BITLEN), (__IS_SIGNED), false)
57
58/*============================ MACROFIED FUNCTIONS ===========================*/
59/*============================ TYPES =========================================*/
60
61enum {
63};
64
66
67typedef struct vk_input_item_info_t {
75
76typedef union vk_input_value_t {
87
88typedef enum vk_input_type_t {
91
93
94typedef struct vk_input_evt_t {
95 void *dev;
96 uint32_t duration; // duration in ms between pre and cur
101
102typedef struct vk_input_parser_t {
105
109
110#if VSF_INPUT_CFG_REGISTRATION_MECHANISM == ENABLED
113
115 public_member(
116 vk_input_on_evt_t on_evt;
117 void *dev;
118 vk_input_mask_t mask;
119 void *param;
121 private_member(
122 vsf_slist_node_t notifier_node;
123 )
124};
125#endif
126
127#ifdef __cplusplus
128}
129#endif
130
131/*============================ INCLUDES ======================================*/
132
138
139#if VSF_INPUT_USE_HID == ENABLED
141#endif
142#if VSF_INPUT_USE_NSPRO == ENABLED
144#endif
145#if VSF_INPUT_USE_CST8 == ENABLED
147#endif
148
149#ifdef __cplusplus
150extern "C" {
151#endif
152
153/*============================ GLOBAL VARIABLES ==============================*/
154/*============================ LOCAL VARIABLES ===============================*/
155/*============================ PROTOTYPES ====================================*/
156
161
163
164#if VSF_INPUT_CFG_REGISTRATION_MECHANISM == ENABLED
167#endif
168
169extern void vsf_input_on_sensor(vk_sensor_evt_t *sensor_evt);
171extern void vsf_input_on_gamepad(vk_gamepad_evt_t *gamepad_evt);
172extern void vsf_input_on_keyboard(vk_keyboard_evt_t *keyboard_evt);
173
174extern void vsf_input_on_new_dev(vk_input_type_t type, void *dev);
175extern void vsf_input_on_free_dev(vk_input_type_t type, void *dev);
177
178// returns duration
180
181#ifdef __cplusplus
182}
183#endif
184
185#endif // VSF_USE_INPUT
186#endif // __VSF_INPUT_H__
187/* EOF */
Definition vsf_input.h:114
#define vsf_dcl_class
Definition ooc_class.h:46
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned short uint16_t
Definition stdint.h:7
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
int int32_t
Definition stdint.h:8
unsigned int uint_fast32_t
Definition stdint.h:27
long long int64_t
Definition stdint.h:10
short int16_t
Definition stdint.h:6
unsigned long long uint64_t
Definition stdint.h:11
unsigned char uint8_t
Definition stdint.h:5
signed char int8_t
Definition stdint.h:4
Definition ip.h:22
Definition vsf_input_gamepad.h:103
Definition vsf_input.h:94
vk_input_value_t cur
Definition vsf_input.h:99
void * dev
Definition vsf_input.h:95
uint32_t duration
Definition vsf_input.h:96
uint64_t id
Definition vsf_input.h:97
vk_input_value_t pre
Definition vsf_input.h:98
Definition vsf_input.h:67
uint32_t offset
Definition vsf_input.h:71
uint32_t bitlen
Definition vsf_input.h:69
uint32_t is_signed
Definition vsf_input.h:70
uint32_t config
Definition vsf_input.h:72
uint32_t item
Definition vsf_input.h:68
uint32_t endian
Definition vsf_input.h:73
Definition vsf_input.h:102
vk_input_value_t cur
Definition vsf_input.h:107
vk_input_value_t pre
Definition vsf_input.h:106
uint8_t num
Definition vsf_input.h:104
vk_input_item_info_t * info
Definition vsf_input.h:103
Definition vsf_input_keyboard.h:317
Definition vsf_input_sensor.h:81
Definition vsf_input_touchscreen.h:65
Definition vsf_list.h:876
Definition vsf_input.h:76
int8_t val8
Definition vsf_input.h:85
uint32_t valu32
Definition vsf_input.h:79
int32_t val32
Definition vsf_input.h:83
uint16_t valu16
Definition vsf_input.h:80
int64_t val64
Definition vsf_input.h:82
uint32_t bit
Definition vsf_input.h:77
uint64_t valu64
Definition vsf_input.h:78
uint8_t valu8
Definition vsf_input.h:81
int16_t val16
Definition vsf_input.h:84
vk_av_control_value_t value
Definition vsf_audio.h:171
vk_av_control_type_t type
Definition vsf_audio.h:170
uint_fast32_t vk_input_update_timestamp(vk_input_timestamp_t *timestamp)
Definition vsf_input.c:186
void vsf_input_on_new_dev(vk_input_type_t type, void *dev)
Definition vsf_input.c:160
void vk_input_buf_set(uint8_t *buf, uint_fast8_t offset, uint_fast8_t len)
Definition vsf_input.c:69
uint32_t vk_input_timestamp_t
Definition vsf_input.h:65
@ VSF_INPUT_TYPE_SYNC
Definition vsf_input.h:62
uint32_t vk_input_mask_t
Definition vsf_input.h:92
void vk_input_notifier_register(vk_input_notifier_t *notifier)
Definition vsf_input.c:199
void vsf_input_on_free_dev(vk_input_type_t type, void *dev)
Definition vsf_input.c:165
void vsf_input_on_touchscreen(vk_touchscreen_evt_t *ts_evt)
Definition vsf_input_touchscreen.c:35
void vk_input_notifier_unregister(vk_input_notifier_t *notifier)
Definition vsf_input.c:208
void vsf_input_on_keyboard(vk_keyboard_evt_t *keyboard_evt)
Definition vsf_input_keyboard.c:148
void vk_input_buf_clear(uint8_t *buf, uint_fast8_t offset, uint_fast8_t len)
Definition vsf_input.c:86
void vk_input_buf_set_value(uint8_t *buf, uint_fast8_t offset, uint_fast8_t len, uint_fast32_t value)
Definition vsf_input.c:122
void vsf_input_on_gamepad(vk_gamepad_evt_t *gamepad_evt)
Definition vsf_input_gamepad.c:35
vk_input_item_info_t * vk_input_parse(vk_input_parser_t *parser, uint8_t *pre, uint8_t *cur)
Definition vsf_input.c:140
uint_fast32_t vk_input_buf_get_value(uint8_t *buf, uint_fast8_t offset, uint_fast8_t len)
Definition vsf_input.c:103
void vsf_input_on_sensor(vk_sensor_evt_t *sensor_evt)
Definition vsf_input_sensor.c:35
void(* vk_input_on_evt_t)(vk_input_notifier_t *notifier, vk_input_type_t type, vk_input_evt_t *evt)
Definition vsf_input.h:112
void vsf_input_on_evt(vk_input_type_t type, vk_input_evt_t *evt)
Definition vsf_input.c:170
vk_input_type_t
Definition vsf_input.h:88
@ VSF_INPUT_TYPE_UNKNOWN
Definition vsf_input.h:89
#define VSF_INPUT_USER_TYPE
Definition vsf_input_get_type_1bit.h:103
uint64_t offset
Definition vsf_memfs.h:49
vk_input_notifier_t notifier
Definition vsf_xboot.c:31