fprint-list: Add SPI devices to supported list
This will make them show up on the website.
This commit is contained in:
parent
dbd89929b9
commit
145f7287fa
1 changed files with 76 additions and 23 deletions
|
@ -28,8 +28,8 @@
|
|||
|
||||
GHashTable *printed = NULL;
|
||||
|
||||
static GList *
|
||||
insert_drivers (GList *list)
|
||||
static void
|
||||
insert_drivers (GList **usb_list, GList **spi_list)
|
||||
{
|
||||
g_autoptr(GArray) drivers = fpi_get_driver_types ();
|
||||
gint i;
|
||||
|
@ -41,34 +41,70 @@ insert_drivers (GList *list)
|
|||
g_autoptr(FpDeviceClass) cls = g_type_class_ref (driver);
|
||||
const FpIdEntry *entry;
|
||||
|
||||
if (cls->type != FP_DEVICE_TYPE_USB)
|
||||
continue;
|
||||
|
||||
for (entry = cls->id_table; entry->vid; entry++)
|
||||
switch (cls->type)
|
||||
{
|
||||
char *key;
|
||||
case FP_DEVICE_TYPE_USB:
|
||||
|
||||
key = g_strdup_printf ("%04x:%04x", entry->vid, entry->pid);
|
||||
|
||||
if (g_hash_table_lookup (printed, key) != NULL)
|
||||
for (entry = cls->id_table; entry->vid; entry++)
|
||||
{
|
||||
g_free (key);
|
||||
continue;
|
||||
char *key;
|
||||
|
||||
key = g_strdup_printf ("%04x:%04x", entry->vid, entry->pid);
|
||||
|
||||
if (g_hash_table_lookup (printed, key) != NULL)
|
||||
{
|
||||
g_free (key);
|
||||
continue;
|
||||
}
|
||||
|
||||
g_hash_table_insert (printed, key, GINT_TO_POINTER (1));
|
||||
|
||||
*usb_list = g_list_prepend (*usb_list,
|
||||
g_strdup_printf ("%s | %s\n", key, cls->full_name));
|
||||
}
|
||||
break;
|
||||
|
||||
g_hash_table_insert (printed, key, GINT_TO_POINTER (1));
|
||||
case FP_DEVICE_TYPE_UDEV:
|
||||
for (entry = cls->id_table; entry->udev_types; entry++)
|
||||
{
|
||||
char *key;
|
||||
|
||||
list = g_list_prepend (list, g_strdup_printf ("%s | %s\n", key, cls->full_name));
|
||||
/* Need SPI device */
|
||||
if ((entry->udev_types & FPI_DEVICE_UDEV_SUBTYPE_SPIDEV) == 0)
|
||||
continue;
|
||||
|
||||
key = g_strdup_printf ("SPI:%s:%04x:%04x", entry->spi_acpi_id, entry->hid_id.vid, entry->hid_id.pid);
|
||||
|
||||
if (g_hash_table_lookup (printed, key) != NULL)
|
||||
{
|
||||
g_free (key);
|
||||
continue;
|
||||
}
|
||||
|
||||
g_hash_table_insert (printed, key, GINT_TO_POINTER (1));
|
||||
|
||||
if (entry->udev_types & FPI_DEVICE_UDEV_SUBTYPE_HIDRAW)
|
||||
*spi_list = g_list_prepend (*spi_list,
|
||||
g_strdup_printf ("%s | %04x:%04x | %s\n", entry->spi_acpi_id, entry->hid_id.vid, entry->hid_id.pid, cls->full_name));
|
||||
else
|
||||
*spi_list = g_list_prepend (*spi_list,
|
||||
g_strdup_printf ("%s | - | %s\n", entry->spi_acpi_id, cls->full_name));
|
||||
}
|
||||
break;
|
||||
|
||||
case FP_DEVICE_TYPE_VIRTUAL:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
GList *list, *l;
|
||||
GList *usb_list = NULL;
|
||||
GList *spi_list = NULL;
|
||||
GList *l;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
|
||||
|
@ -83,19 +119,36 @@ main (int argc, char **argv)
|
|||
g_print ("\n");
|
||||
g_print ("This is a list of supported devices in libfprint's development version. Those drivers might not all be available in the stable, released version. If in doubt, contact your distribution or systems integrator for details.\n");
|
||||
g_print ("\n");
|
||||
|
||||
insert_drivers (&usb_list, &spi_list);
|
||||
|
||||
g_print ("## USB devices\n");
|
||||
g_print ("\n");
|
||||
g_print ("USB ID | Driver\n");
|
||||
g_print ("------------ | ------------\n");
|
||||
|
||||
list = NULL;
|
||||
list = insert_drivers (list);
|
||||
|
||||
list = g_list_sort (list, (GCompareFunc) g_strcmp0);
|
||||
for (l = list; l != NULL; l = l->next)
|
||||
usb_list = g_list_sort (usb_list, (GCompareFunc) g_strcmp0);
|
||||
for (l = usb_list; l != NULL; l = l->next)
|
||||
g_print ("%s", (char *) l->data);
|
||||
g_print ("\n");
|
||||
|
||||
g_list_free_full (usb_list, g_free);
|
||||
|
||||
g_print ("## SPI devices\n");
|
||||
g_print ("\n");
|
||||
g_print ("The ACPI ID represents the SPI interface. Some sensors are also connected to a HID device (Human Input Device) for side-channel requests such as resets.\n");
|
||||
g_print ("\n");
|
||||
g_print ("ACPI ID | HID ID | Driver\n");
|
||||
g_print ("------------ | ------------ | ------------\n");
|
||||
|
||||
spi_list = g_list_sort (spi_list, (GCompareFunc) g_strcmp0);
|
||||
for (l = spi_list; l != NULL; l = l->next)
|
||||
g_print ("%s", (char *) l->data);
|
||||
g_print ("\n");
|
||||
|
||||
g_list_free_full (usb_list, g_free);
|
||||
|
||||
|
||||
g_list_free_full (list, g_free);
|
||||
g_hash_table_destroy (printed);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue