123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #ifndef ZEPHYR_INCLUDE_DRIVERS_KB_SCAN_H_
- #define ZEPHYR_INCLUDE_DRIVERS_KB_SCAN_H_
- #include <zephyr/types.h>
- #include <stddef.h>
- #include <device.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef void (*kscan_callback_t)(const struct device *dev, uint32_t row,
- uint32_t column,
- bool pressed);
- typedef int (*kscan_config_t)(const struct device *dev,
- kscan_callback_t callback);
- typedef int (*kscan_disable_callback_t)(const struct device *dev);
- typedef int (*kscan_enable_callback_t)(const struct device *dev);
- __subsystem struct kscan_driver_api {
- kscan_config_t config;
- kscan_disable_callback_t disable_callback;
- kscan_enable_callback_t enable_callback;
- };
- __syscall int kscan_config(const struct device *dev,
- kscan_callback_t callback);
- static inline int z_impl_kscan_config(const struct device *dev,
- kscan_callback_t callback)
- {
- const struct kscan_driver_api *api =
- (struct kscan_driver_api *)dev->api;
- return api->config(dev, callback);
- }
- __syscall int kscan_enable_callback(const struct device *dev);
- static inline int z_impl_kscan_enable_callback(const struct device *dev)
- {
- const struct kscan_driver_api *api =
- (const struct kscan_driver_api *)dev->api;
- if (api->enable_callback == NULL) {
- return -ENOSYS;
- }
- return api->enable_callback(dev);
- }
- __syscall int kscan_disable_callback(const struct device *dev);
- static inline int z_impl_kscan_disable_callback(const struct device *dev)
- {
- const struct kscan_driver_api *api =
- (const struct kscan_driver_api *)dev->api;
- if (api->disable_callback == NULL) {
- return -ENOSYS;
- }
- return api->disable_callback(dev);
- }
- #ifdef __cplusplus
- }
- #endif
- #include <syscalls/kscan.h>
- #endif
|