Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 <errno.h>
20#include <zephyr/types.h>
21#include <stddef.h>
22#include <zephyr/device.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
44typedef void (*kscan_callback_t)(const struct device *dev, uint32_t row,
45 uint32_t column,
46 bool pressed);
47
55typedef int (*kscan_config_t)(const struct device *dev,
56 kscan_callback_t callback);
57typedef int (*kscan_disable_callback_t)(const struct device *dev);
58typedef int (*kscan_enable_callback_t)(const struct device *dev);
59
60__subsystem struct kscan_driver_api {
61 kscan_config_t config;
62 kscan_disable_callback_t disable_callback;
63 kscan_enable_callback_t enable_callback;
64};
79__syscall int kscan_config(const struct device *dev,
80 kscan_callback_t callback);
81
82static inline int z_impl_kscan_config(const struct device *dev,
83 kscan_callback_t callback)
84{
85 const struct kscan_driver_api *api =
86 (struct kscan_driver_api *)dev->api;
87
88 return api->config(dev, callback);
89}
97__syscall int kscan_enable_callback(const struct device *dev);
98
99static inline int z_impl_kscan_enable_callback(const struct device *dev)
100{
101 const struct kscan_driver_api *api =
102 (const struct kscan_driver_api *)dev->api;
103
104 if (api->enable_callback == NULL) {
105 return -ENOSYS;
106 }
107
108 return api->enable_callback(dev);
109}
110
118__syscall int kscan_disable_callback(const struct device *dev);
119
120static inline int z_impl_kscan_disable_callback(const struct device *dev)
121{
122 const struct kscan_driver_api *api =
123 (const struct kscan_driver_api *)dev->api;
124
125 if (api->disable_callback == NULL) {
126 return -ENOSYS;
127 }
128
129 return api->disable_callback(dev);
130}
131
132#ifdef __cplusplus
133}
134#endif
135
140#include <syscalls/kscan.h>
141
142#endif /* ZEPHYR_INCLUDE_DRIVERS_KB_SCAN_H_ */
System error numbers.
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:44
#define ENOSYS
Function not implemented.
Definition: errno.h:83
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
Runtime device structure (in ROM) per driver instance.
Definition: device.h:381
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:387