mirror of
https://gitlab.freedesktop.org/libevdev/libevdev.git
synced 2026-05-04 23:28:00 +02:00
Add setters for product/vendor/bustype/version
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
This commit is contained in:
parent
c9bc2a9e39
commit
1caf4ecb10
3 changed files with 93 additions and 0 deletions
|
|
@ -678,6 +678,7 @@ STRING_SETTER(name);
|
||||||
STRING_SETTER(phys);
|
STRING_SETTER(phys);
|
||||||
STRING_SETTER(uniq);
|
STRING_SETTER(uniq);
|
||||||
|
|
||||||
|
|
||||||
#define PRODUCT_GETTER(name, field) \
|
#define PRODUCT_GETTER(name, field) \
|
||||||
int libevdev_get_##name(const struct libevdev *dev) \
|
int libevdev_get_##name(const struct libevdev *dev) \
|
||||||
{ \
|
{ \
|
||||||
|
|
@ -694,6 +695,17 @@ PRODUCT_GETTER(id_vendor, vendor);
|
||||||
PRODUCT_GETTER(id_bustype, bustype);
|
PRODUCT_GETTER(id_bustype, bustype);
|
||||||
PRODUCT_GETTER(id_version, version);
|
PRODUCT_GETTER(id_version, version);
|
||||||
|
|
||||||
|
#define PRODUCT_SETTER(field) \
|
||||||
|
void libevdev_set_id_##field(struct libevdev *dev, int field) \
|
||||||
|
{ \
|
||||||
|
dev->ids.field = field;\
|
||||||
|
}
|
||||||
|
|
||||||
|
PRODUCT_SETTER(product);
|
||||||
|
PRODUCT_SETTER(vendor);
|
||||||
|
PRODUCT_SETTER(bustype);
|
||||||
|
PRODUCT_SETTER(version);
|
||||||
|
|
||||||
int libevdev_get_driver_version(const struct libevdev *dev)
|
int libevdev_get_driver_version(const struct libevdev *dev)
|
||||||
{
|
{
|
||||||
return dev->driver_version;
|
return dev->driver_version;
|
||||||
|
|
|
||||||
|
|
@ -586,6 +586,17 @@ void libevdev_set_uniq(struct libevdev *dev, const char *uniq);
|
||||||
*/
|
*/
|
||||||
int libevdev_get_id_product(const struct libevdev *dev);
|
int libevdev_get_id_product(const struct libevdev *dev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup kernel
|
||||||
|
*
|
||||||
|
* @param dev The evdev device
|
||||||
|
* @param product_id The product ID to assign to this device
|
||||||
|
*
|
||||||
|
* @note This function may be called before libevdev_set_fd(). A call to
|
||||||
|
* libevdev_set_fd() will overwrite any previously set value.
|
||||||
|
*/
|
||||||
|
void libevdev_set_id_product(struct libevdev *dev, int product_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup bits
|
* @ingroup bits
|
||||||
*
|
*
|
||||||
|
|
@ -597,6 +608,17 @@ int libevdev_get_id_product(const struct libevdev *dev);
|
||||||
*/
|
*/
|
||||||
int libevdev_get_id_vendor(const struct libevdev *dev);
|
int libevdev_get_id_vendor(const struct libevdev *dev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup kernel
|
||||||
|
*
|
||||||
|
* @param dev The evdev device
|
||||||
|
* @param vendor_id The vendor ID to assign to this device
|
||||||
|
*
|
||||||
|
* @note This function may be called before libevdev_set_fd(). A call to
|
||||||
|
* libevdev_set_fd() will overwrite any previously set value.
|
||||||
|
*/
|
||||||
|
void libevdev_set_id_vendor(struct libevdev *dev, int vendor_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup bits
|
* @ingroup bits
|
||||||
*
|
*
|
||||||
|
|
@ -608,6 +630,17 @@ int libevdev_get_id_vendor(const struct libevdev *dev);
|
||||||
*/
|
*/
|
||||||
int libevdev_get_id_bustype(const struct libevdev *dev);
|
int libevdev_get_id_bustype(const struct libevdev *dev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup kernel
|
||||||
|
*
|
||||||
|
* @param dev The evdev device
|
||||||
|
* @param bustype The bustype to assign to this device
|
||||||
|
*
|
||||||
|
* @note This function may be called before libevdev_set_fd(). A call to
|
||||||
|
* libevdev_set_fd() will overwrite any previously set value.
|
||||||
|
*/
|
||||||
|
void libevdev_set_id_bustype(struct libevdev *dev, int bustype);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup bits
|
* @ingroup bits
|
||||||
*
|
*
|
||||||
|
|
@ -619,6 +652,17 @@ int libevdev_get_id_bustype(const struct libevdev *dev);
|
||||||
*/
|
*/
|
||||||
int libevdev_get_id_version(const struct libevdev *dev);
|
int libevdev_get_id_version(const struct libevdev *dev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup kernel
|
||||||
|
*
|
||||||
|
* @param dev The evdev device
|
||||||
|
* @param version The version to assign to this device
|
||||||
|
*
|
||||||
|
* @note This function may be called before libevdev_set_fd(). A call to
|
||||||
|
* libevdev_set_fd() will overwrite any previously set value.
|
||||||
|
*/
|
||||||
|
void libevdev_set_id_version(struct libevdev *dev, int version);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup bits
|
* @ingroup bits
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -488,6 +488,42 @@ START_TEST(test_device_set_name)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(test_device_set_ids)
|
||||||
|
{
|
||||||
|
struct uinput_device* uidev;
|
||||||
|
struct libevdev *dev;
|
||||||
|
struct input_id ids = {1, 2, 3, 4};
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
dev = libevdev_new();
|
||||||
|
|
||||||
|
libevdev_set_id_product(dev, 10);
|
||||||
|
libevdev_set_id_vendor(dev, 20);
|
||||||
|
libevdev_set_id_bustype(dev, 30);
|
||||||
|
libevdev_set_id_version(dev, 40);
|
||||||
|
|
||||||
|
ck_assert_int_eq(libevdev_get_id_product(dev), 10);
|
||||||
|
ck_assert_int_eq(libevdev_get_id_vendor(dev), 20);
|
||||||
|
ck_assert_int_eq(libevdev_get_id_bustype(dev), 30);
|
||||||
|
ck_assert_int_eq(libevdev_get_id_version(dev), 40);
|
||||||
|
|
||||||
|
rc = uinput_device_new_with_events(&uidev, TEST_DEVICE_NAME, &ids,
|
||||||
|
EV_ABS, ABS_X,
|
||||||
|
-1);
|
||||||
|
ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc));
|
||||||
|
rc = libevdev_set_fd(dev, uinput_device_get_fd(uidev));
|
||||||
|
ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));;
|
||||||
|
|
||||||
|
ck_assert_int_eq(libevdev_get_id_bustype(dev), ids.bustype);
|
||||||
|
ck_assert_int_eq(libevdev_get_id_vendor(dev), ids.vendor);
|
||||||
|
ck_assert_int_eq(libevdev_get_id_product(dev), ids.product);
|
||||||
|
ck_assert_int_eq(libevdev_get_id_version(dev), ids.version);
|
||||||
|
|
||||||
|
uinput_device_free(uidev);
|
||||||
|
libevdev_free(dev);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(test_device_get_abs_info)
|
START_TEST(test_device_get_abs_info)
|
||||||
{
|
{
|
||||||
struct uinput_device* uidev;
|
struct uinput_device* uidev;
|
||||||
|
|
@ -924,6 +960,7 @@ libevdev_has_event_test(void)
|
||||||
tc = tcase_create("device info");
|
tc = tcase_create("device info");
|
||||||
tcase_add_test(tc, test_device_name);
|
tcase_add_test(tc, test_device_name);
|
||||||
tcase_add_test(tc, test_device_set_name);
|
tcase_add_test(tc, test_device_set_name);
|
||||||
|
tcase_add_test(tc, test_device_set_ids);
|
||||||
tcase_add_test(tc, test_device_get_abs_info);
|
tcase_add_test(tc, test_device_get_abs_info);
|
||||||
suite_add_tcase(s, tc);
|
suite_add_tcase(s, tc);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue