Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
kscan.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
16#ifndef ZEPHYR_INCLUDE_DRIVERS_KB_SCAN_H_
17#define ZEPHYR_INCLUDE_DRIVERS_KB_SCAN_H_
18
19#include <zephyr/types.h>
20#include <stddef.h>
21#include <device.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
43typedef void (*kscan_callback_t)(const struct device *dev, uint32_t row,
44 uint32_t column,
45 bool pressed);
46
54typedef int (*kscan_config_t)(const struct device *dev,
55 kscan_callback_t callback);
56typedef int (*kscan_disable_callback_t)(const struct device *dev);
57typedef int (*kscan_enable_callback_t)(const struct device *dev);
58
59__subsystem struct kscan_driver_api {
60 kscan_config_t config;
61 kscan_disable_callback_t disable_callback;
62 kscan_enable_callback_t enable_callback;
63};
78__syscall int kscan_config(const struct device *dev,
79 kscan_callback_t callback);
80
81static inline int z_impl_kscan_config(const struct device *dev,
82 kscan_callback_t callback)
83{
84 const struct kscan_driver_api *api =
85 (struct kscan_driver_api *)dev->api;
86
87 return api->config(dev, callback);
88}
96__syscall int kscan_enable_callback(const struct device *dev);
97
98static inline int z_impl_kscan_enable_callback(const struct device *dev)
99{
100 const struct kscan_driver_api *api =
101 (const struct kscan_driver_api *)dev->api;
102
103 if (api->enable_callback == NULL) {
104 return -ENOSYS;
105 }
106
107 return api->enable_callback(dev);
108}
109
117__syscall int kscan_disable_callback(const struct device *dev);
118
119static inline int z_impl_kscan_disable_callback(const struct device *dev)
120{
121 const struct kscan_driver_api *api =
122 (const struct kscan_driver_api *)dev->api;
123
124 if (api->disable_callback == NULL) {
125 return -ENOSYS;
126 }
127
128 return api->disable_callback(dev);
129}
130
131#ifdef __cplusplus
132}
133#endif
134
139#include <syscalls/kscan.h>
140
141#endif /* ZEPHYR_INCLUDE_DRIVERS_KB_SCAN_H_ */
void
Definition: eswifi_shell.c:15
int kscan_disable_callback(const struct device *dev)
Disables callback.
int kscan_config(const struct device *dev, kscan_callback_t callback)
Configure a Keyboard scan instance.
int kscan_enable_callback(const struct device *dev)
Enables callback.
void(* kscan_callback_t)(const struct device *dev, uint32_t row, uint32_t column, bool pressed)
Keyboard scan callback called when user press/release a key on a matrix keyboard.
Definition: kscan.h:43
#define ENOSYS
Definition: errno.h:83
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
Runtime device structure (in ROM) per driver instance.
Definition: device.h:367
const void * api
Definition: device.h:373