| From eec34acf18f7dd7320fc1be6ae2b3efb4ca9783d Mon Sep 17 00:00:00 2001 |
| From: Dennis Kempin <denniskempin@chromium.org> |
| Date: Tue, 12 Jun 2012 15:56:24 -0700 |
| Subject: [PATCH] api extension: access to raw kernel input_ structures and |
| bitmasks |
| |
| This CL adds functions to the api that allow raw access to the |
| input_id and input_absinfo structures as well as bitmasks. |
| This allows the regression test suite to use the evemu API for |
| reading device properties from files. |
| |
| BUG=chromium-os:31732 |
| TEST=compiles. tested with regression test prototype. |
| --- |
| include/evemu.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ |
| src/evemu.c | 26 ++++++++++++++++++++++++++ |
| 2 files changed, 72 insertions(+), 0 deletions(-) |
| |
| diff --git a/include/evemu.h b/include/evemu.h |
| index 05cef0f..1fb8390 100644 |
| --- a/include/evemu.h |
| +++ b/include/evemu.h |
| @@ -329,4 +329,50 @@ int evemu_create(const struct evemu_device *dev, int fd); |
| */ |
| void evemu_destroy(int fd); |
| |
| +/** |
| + * evemu_get_id() - raw access to kernel device id structure |
| + * @dev: the device in use |
| + * |
| + * Returns the kernel device id structure. |
| + */ |
| +struct input_id* evemu_get_id(const struct evemu_device *dev); |
| + |
| +/** |
| + * evemu_get_abs() - raw access to kernel absinfo structure |
| + * @dev: the device in use |
| + * @code: the event type code to query |
| + * |
| + * Returns the input_absinfo structure for provided event type code |
| + */ |
| +const struct info_absinfo* |
| +evemu_get_abs(const struct evemu_device *dev, int code); |
| + |
| +/** |
| + * evemu_get_mask_size() - get the bitmask size |
| + * @dev: the device in use |
| + * |
| + * Returns the size of bitmasks as returned by evemu_get_prop_mask |
| + * or evemu_get_mask. Size in bytes. |
| + * The bitmask size is static and defined at compile time, but might conflict |
| + * when evemu and the calling library are using incompatible kernel header. |
| + */ |
| +int evemu_get_mask_size(const struct evemu_device *dev); |
| + |
| +/** |
| + * evemu_get_prop_mask() - raw access to the kernel property bitmask |
| + * @dev: the device in use |
| + * |
| + * Returns a pointer to the property bitmask |
| + */ |
| +const unsigned char* evemu_get_prop_mask(const struct evemu_device *dev); |
| + |
| +/** |
| + * evemu_get_mask() - raw access to event bitmasks |
| + * @dev: the device in use |
| + * @code: the event type code to query |
| + * |
| + * Returns a pointer to the queried bitmask. |
| + */ |
| +const unsigned char* evemu_get_mask(const struct evemu_device *dev, int code); |
| + |
| #endif |
| diff --git a/src/evemu.c b/src/evemu.c |
| index 29a2c69..0dd1cab 100644 |
| --- a/src/evemu.c |
| +++ b/src/evemu.c |
| @@ -564,3 +564,29 @@ void evemu_destroy(int fd) |
| int ret; |
| SYSCALL(ret = ioctl(fd, UI_DEV_DESTROY, NULL)); |
| } |
| + |
| +struct input_id* evemu_get_id(const struct evemu_device *dev) |
| +{ |
| + return &dev->id; |
| +} |
| + |
| +const struct info_absinfo* |
| +evemu_get_abs(const struct evemu_device *dev, int code) |
| +{ |
| + return &dev->abs[code]; |
| +} |
| + |
| +int evemu_get_mask_size(const struct evemu_device *dev) |
| +{ |
| + return EVPLAY_NBYTES; |
| +} |
| + |
| +const unsigned char* evemu_get_prop_mask(const struct evemu_device *dev) |
| +{ |
| + return dev->prop; |
| +} |
| + |
| +const unsigned char* evemu_get_mask(const struct evemu_device *dev, int code) |
| +{ |
| + return dev->mask[code]; |
| +} |
| -- |
| 1.7.7.3 |
| |