forked from enlightenment/efl
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
This commit is contained in:
parent
e14a11d9fa
commit
a2e3b8ad13
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
/**@}*/
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue