static char * get_trigger_name (GUdevDevice *device) { GList *devices, *l; GUdevClient *client; gboolean has_trigger = FALSE; char *trigger_name; const gchar * const subsystems[] = { "iio", NULL }; client = g_udev_client_new (subsystems); devices = g_udev_client_query_by_subsystem (client, "iio"); /* Find the associated trigger */ trigger_name = g_strdup_printf ("als-dev%s", g_udev_device_get_number (device)); for (l = devices; l != NULL; l = l->next) { GUdevDevice *dev = l->data; if (g_strcmp0 (trigger_name, g_udev_device_get_sysfs_attr (dev, "name")) == 0) { g_debug ("Found associated trigger at %s", g_udev_device_get_sysfs_path (dev)); has_trigger = TRUE; break; } } g_list_free_full (devices, g_object_unref); g_clear_object (&client); if (has_trigger) return trigger_name; g_warning ("Could not find trigger name associated with %s", g_udev_device_get_sysfs_path (device)); g_free (trigger_name); return NULL; }
static void dump_device_and_parent(GUdevDevice * device, guint indent) { const gchar *const *list; const gchar *const *iter; GUdevDevice *parent; char propstr[500]; guint32 namelen = 0, i; println(indent, "------------------------------------------------------"); println(indent, "%-20s %s", _("Name:"), g_udev_device_get_name(device)); println(indent, "%-20s %s", _("Type:"), g_udev_device_get_devtype(device)); println(indent, "%-20s %s", _("Subsystem:"), g_udev_device_get_subsystem(device)); println(indent, "%-20s %s", _("Number:"), g_udev_device_get_number(device)); println(indent, "%-20s %s", _("Path:"), g_udev_device_get_sysfs_path(device)); println(indent, "%-20s %s", _("Driver:"), g_udev_device_get_driver(device)); println(indent, "%-20s %lld", _("Sequential Number:"), (long long int)g_udev_device_get_seqnum(device)); println(indent, "%-20s %s", _("Device File:"), g_udev_device_get_device_file(device)); println(indent, " "); println(indent, _("Properties:")); /* Get longest property name length for alignment */ list = g_udev_device_get_property_keys(device); for (iter = list; iter && *iter; iter++) { if (strlen(*iter) > namelen) namelen = strlen(*iter); } namelen++; for (iter = list; iter && *iter; iter++) { strcpy(propstr, *iter); strcat(propstr, ":"); for (i = 0; i < namelen - strlen(*iter); i++) strcat(propstr, " "); strcat(propstr, g_udev_device_get_property(device, *iter)); println(indent + 2, "%s", propstr); } println(indent, " "); parent = g_udev_device_get_parent(device); if (parent) { dump_device_and_parent(parent, indent + 4); g_object_unref(parent); } }
static void device_dump_config(GUdevDevice * device) { gchar *device_name, *name; device_name = g_strdup_printf("/dev/%s", g_udev_device_get_name(device)); if (device_is_serial(device)) { name = g_strdup_printf(_("Phone on serial port %s"), g_udev_device_get_number(device)); } else if (device_is_usb_serial(device)) { name = g_strdup_printf(_("Phone on USB serial port %s %s"), g_udev_device_get_property(device, "ID_VENDOR"), g_udev_device_get_property(device, "ID_MODEL")); } else if (device_is_acm(device)) { name = g_strdup_printf("%s %s", g_udev_device_get_property(device, "ID_VENDOR"), g_udev_device_get_property(device, "ID_MODEL")); } else { name = NULL; } print_config(device_name, name, "at"); g_free(device_name); g_free(name); }