Export version fields as well
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 3 Jun 2013 03:35:28 +0000 (13:35 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Mon, 3 Jun 2013 04:15:16 +0000 (14:15 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
libevdev/libevdev-int.h
libevdev/libevdev.c
libevdev/libevdev.h
man/libevdev_get_name.txt
test/libevdev-print.c

index 492608a..b36450c 100644 (file)
@@ -54,6 +54,7 @@ struct libevdev {
 
        char name[MAX_NAME];
        struct input_id ids;
+       int driver_version;
        unsigned long bits[NLONGS(EV_CNT)];
        unsigned long props[NLONGS(INPUT_PROP_CNT)];
        unsigned long key_bits[NLONGS(KEY_CNT)];
index 9604669..0bac662 100644 (file)
@@ -220,6 +220,10 @@ libevdev_set_fd(struct libevdev* dev, int fd)
        if (rc < 0)
                goto out;
 
+       rc = ioctl(fd, EVIOCGVERSION, &dev->driver_version);
+       if (rc < 0)
+               goto out;
+
        rc = ioctl(fd, EVIOCGPROP(sizeof(dev->props)), dev->props);
        if (rc < 0)
                goto out;
@@ -599,6 +603,16 @@ int libevdev_get_bustype(const struct libevdev *dev)
        return dev->ids.bustype;
 }
 
+int libevdev_get_version(const struct libevdev *dev)
+{
+       return dev->ids.version;
+}
+
+int libevdev_get_driver_version(const struct libevdev *dev)
+{
+       return dev->driver_version;
+}
+
 int
 libevdev_has_property(const struct libevdev *dev, unsigned int prop)
 {
index 5f58bc0..169c0bc 100644 (file)
@@ -202,6 +202,20 @@ int libevdev_get_vendor_id(const struct libevdev *dev);
 int libevdev_get_bustype(const struct libevdev *dev);
 
 /**
+ * @return The device's firmware version
+ *
+ * @note This function is signal-safe.
+ */
+int libevdev_get_version(const struct libevdev *dev);
+
+/**
+ * @return The driver version for this device
+ *
+ * @note This function is signal-safe.
+ */
+int libevdev_get_driver_version(const struct libevdev *dev);
+
+/**
  * @return 1 if the device supports this event type, or 0 otherwise.
  *
  * @note This function is signal-safe
index 9b274dc..77db62f 100644 (file)
@@ -4,7 +4,8 @@ libevdev_get_name(3)
 NAME
 ----
 
-libevdev_get_name, libevdev_get_product_id, libevdev_get_vendor_id, libevdev_get_bustype - retreive information about this device
+libevdev_get_name, libevdev_get_product_id, libevdev_get_vendor_id,
+libevdev_get_bustype, libevdev_get_version, libevdev_get_driver_version - retreive information about this device
 
 SYNOPSIS
 --------
@@ -19,6 +20,10 @@ int libevdev_get_vendor_id(const struct libevdev *dev);
 
 int libevdev_get_bustype(const struct libevdev *dev);
 
+int libevdev_get_version(const struct libevdev *dev);
+
+int libevdev_get_driver_version(const struct libevdev *dev);
+
 DESCRIPTION
 -----------
 
@@ -30,6 +35,11 @@ product and vendor ID as set by the kernel.
 
 *libevdev_get_bustype* returns the numeric bus type as set by the kernel.
 
+*libevdev_get_version* returns the firmware or driver version.
+
+*libevdev_get_driver_version* returns the version of the evdev kernel
+driver.
+
 PARAMETERS
 ----------
 *dev*::
@@ -40,8 +50,11 @@ RETURN VALUE
 *libevdev_get_name* returns a const pointer to the device name.
 
 *libevdev_get_product_id*, *libevdev_get_vendor_id* and
-*libevdev_get_bustype* return the numeric product ID, vendor ID, or bus
-type.
+*libevdev_get_bustype*, *libevdev_get_version* return the numeric product
+ID, vendor ID, bus type or version.
+
+*libevdev_get_driver_version* returns the version of the evdev kernel
+driver.
 
 SEE ALSO
 --------
index 89f4b10..5d955a7 100644 (file)
@@ -135,6 +135,7 @@ main(int argc, char **argv)
                        libevdev_get_bustype(dev),
                        libevdev_get_vendor_id(dev),
                        libevdev_get_product_id(dev));
+       printf("Evdev version: %x\n", libevdev_get_driver_version(dev));
        printf("Input device name: \"%s\"\n", libevdev_get_name(dev));
        print_bits(dev);
        print_props(dev);