ami pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a2e3b8ad134b7170dbd0ae585b331d87aa694cb6

commit a2e3b8ad134b7170dbd0ae585b331d87aa694cb6
Author: Amitesh Singh <[email protected]>
Date:   Tue Sep 6 20:42:26 2016 +0530

    eeze: add support of GPIO sysfs detection and watch.
    
    This adds support for detection and watch of GPIO pins in /sys/class/gpio/*
    This detects both gpiochip<N> & gpio<N>.
    
    @feature
---
 src/bin/eeze/eeze_disk_ls.c     | 13 +++++++++++++
 src/lib/eeze/Eeze.h             |  6 +++++-
 src/lib/eeze/eeze_udev_find.c   |  3 +++
 src/lib/eeze/eeze_udev_watch.c  |  8 ++++++++
 src/tests/eeze/eeze_test_udev.c |  1 +
 5 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/src/bin/eeze/eeze_disk_ls.c b/src/bin/eeze/eeze_disk_ls.c
index 1c1e6a2..7499bf0 100644
--- a/src/bin/eeze/eeze_disk_ls.c
+++ b/src/bin/eeze/eeze_disk_ls.c
@@ -54,5 +54,18 @@ main(void)
         eeze_disk_free(disk);
         eina_stringshare_del(syspath);
      }
+
+   disks = eeze_udev_find_by_type(EEZE_UDEV_TYPE_GPIO, NULL);
+   printf("Found the following GPIO(s):\n");
+   EINA_LIST_FREE(disks, syspath)
+     {
+        Eeze_Disk *disk;
+
+        disk = eeze_disk_new(syspath);
+        printf("\t%s - %s:%s\n", syspath, eeze_disk_devpath_get(disk), 
eeze_disk_mount_point_get(disk));
+        eeze_disk_free(disk);
+        eina_stringshare_del(syspath);
+     }
+
    return 0;
 }
diff --git a/src/lib/eeze/Eeze.h b/src/lib/eeze/Eeze.h
index b44a1d0..f5dab42 100644
--- a/src/lib/eeze/Eeze.h
+++ b/src/lib/eeze/Eeze.h
@@ -278,7 +278,11 @@ typedef enum
    /** - Graphics
     * @since 1.18
     */
-   EEZE_UDEV_TYPE_GRAPHICS
+   EEZE_UDEV_TYPE_GRAPHICS,
+   /** - GPIOS (includes gpioN and gpiochipN)
+    * @since 1.19
+    */
+   EEZE_UDEV_TYPE_GPIO
 } Eeze_Udev_Type;
 /**@}*/
 
diff --git a/src/lib/eeze/eeze_udev_find.c b/src/lib/eeze/eeze_udev_find.c
index 8850882..8551d48 100644
--- a/src/lib/eeze/eeze_udev_find.c
+++ b/src/lib/eeze/eeze_udev_find.c
@@ -249,6 +249,9 @@ eeze_udev_find_by_type(Eeze_Udev_Type etype,
       case EEZE_UDEV_TYPE_GRAPHICS:
        udev_enumerate_add_match_subsystem(en, "graphics");
         break;
+      case EEZE_UDEV_TYPE_GPIO:
+        udev_enumerate_add_match_subsystem(en, "gpio");
+        break;
 
       default:
         break;
diff --git a/src/lib/eeze/eeze_udev_watch.c b/src/lib/eeze/eeze_udev_watch.c
index bc00618..eccd61c 100644
--- a/src/lib/eeze/eeze_udev_watch.c
+++ b/src/lib/eeze/eeze_udev_watch.c
@@ -262,6 +262,11 @@ _get_syspath_from_watch(void             *data,
             || (strcmp(test, "graphics")))
           goto error;
         break;
+      case EEZE_UDEV_TYPE_GPIO:
+        if ((!(test = udev_device_get_subsystem(device)))
+            || (strcmp(test, "gpio")))
+          goto error;
+        break;
 
       default:
         break;
@@ -350,6 +355,9 @@ eeze_udev_watch_add(Eeze_Udev_Type     type,
       case EEZE_UDEV_TYPE_GRAPHICS:
         udev_monitor_filter_add_match_subsystem_devtype(mon, "graphics", NULL);
         break;
+      case EEZE_UDEV_TYPE_GPIO:
+        udev_monitor_filter_add_match_subsystem_devtype(mon, "gpio", NULL);
+        break;
 
       default:
         break;
diff --git a/src/tests/eeze/eeze_test_udev.c b/src/tests/eeze/eeze_test_udev.c
index 1e8b3c8..74e2301 100644
--- a/src/tests/eeze/eeze_test_udev.c
+++ b/src/tests/eeze/eeze_test_udev.c
@@ -74,6 +74,7 @@ START_TEST(eeze_test_udev_watch)
    watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_IS_IT_HOT_OR_IS_IT_COLD_SENSOR, 
(EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
    watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_V4L, (EEZE_UDEV_EVENT_ADD | 
EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
    watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_BLUETOOTH, (EEZE_UDEV_EVENT_ADD 
| EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_GPIO, (EEZE_UDEV_EVENT_ADD | 
EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
    watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_NONE, (EEZE_UDEV_EVENT_ADD | 
EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
    eeze_udev_watch_del(watch);
 

-- 


Reply via email to