From 1319daba541f6f441f6056265ded570e8e3954e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 20 Nov 2019 14:53:36 +0100 Subject: [PATCH] examples: allow to select multiple devices Since there might be external USB readers and embedded ones, better to allow easily to select them all in examples. --- examples/utilities.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/examples/utilities.c b/examples/utilities.c index 70f57b2..379ad0a 100644 --- a/examples/utilities.c +++ b/examples/utilities.c @@ -27,14 +27,40 @@ FpDevice * discover_device (GPtrArray * devices) { FpDevice *dev; + int i; if (!devices->len) return NULL; - dev = g_ptr_array_index (devices, 0); - g_print ("Found device %s (%s) claimed by %s driver\n", + if (devices->len == 1) + { + i = 0; + } + else + { + g_print ("Multiple devices found, choose one\n"); + + for (i = 0; i < devices->len; ++i) + { + dev = g_ptr_array_index (devices, i); + g_print ("[%d] %s (%s) - driver %s\n", i, + fp_device_get_device_id (dev), fp_device_get_name (dev), + fp_device_get_driver (dev)); + } + + g_print ("> "); + if (!scanf ("%d%*c", &i)) + return NULL; + + if (i < 0 || i >= devices->len) + return NULL; + } + + dev = g_ptr_array_index (devices, i); + g_print ("Selected device %s (%s) claimed by %s driver\n", fp_device_get_device_id (dev), fp_device_get_name (dev), fp_device_get_driver (dev)); + return dev; }