From: Antonio Ospite <ospite@studenti.unina.it>
Date: Mon, 17 Sep 2012 08:07:55 +0000 (+0200)
Subject: examples: support multiple devices
X-Git-Tag: v0.1.3~14
X-Git-Url: https://git.ao2.it/libam7xxx.git/commitdiff_plain/068e5d1ff2bb37f35dc754ba6a112f5b80ae44fd

examples: support multiple devices

Expose a '-d <index>' option to set the device index, this way multiple
devices can be used.

Tested-by: Konstantin Lohmann <konstl@konstl.com>
---

diff --git a/doc/man/am7xxx-play.1.txt b/doc/man/am7xxx-play.1.txt
index 098e556..eabdb9c 100644
--- a/doc/man/am7xxx-play.1.txt
+++ b/doc/man/am7xxx-play.1.txt
@@ -21,6 +21,10 @@ decode the input, encode it to jpeg and display it with libam7xxx.
 
 OPTIONS
 -------
+
+*-d* '<index>'::
+    the device index (default is 0)
+
 *-f* '<input format>'::
     the input device format
 
diff --git a/doc/man/picoproj.1.txt b/doc/man/picoproj.1.txt
index 263b0df..0fea153 100644
--- a/doc/man/picoproj.1.txt
+++ b/doc/man/picoproj.1.txt
@@ -23,6 +23,9 @@ larger than the device native resolution can be wrongly displayed.
 OPTIONS
 -------
 
+*-d* '<index>'::
+    the device index (default is 0)
+
 *-f* '<filename>'::
     the image file to upload
 
diff --git a/examples/am7xxx-play.c b/examples/am7xxx-play.c
index 6d5d3c7..668c18c 100644
--- a/examples/am7xxx-play.c
+++ b/examples/am7xxx-play.c
@@ -581,6 +581,7 @@ static void usage(char *name)
 {
 	printf("usage: %s [OPTIONS]\n\n", name);
 	printf("OPTIONS:\n");
+	printf("\t-d <index>\t\tthe device index (default is 0)\n");
 	printf("\t-f <input format>\tthe input device format\n");
 	printf("\t-i <input path>\t\tthe input path\n");
 	printf("\t-o <options>\t\ta comma separated list of input format options\n");
@@ -622,14 +623,23 @@ int main(int argc, char *argv[])
 	unsigned int upscale = 0;
 	unsigned int quality = 95;
 	int log_level = AM7XXX_LOG_INFO;
+	int device_index = 0;
 	am7xxx_power_mode power_mode = AM7XXX_POWER_LOW;
 	am7xxx_zoom_mode zoom = AM7XXX_ZOOM_ORIGINAL;
 	int format = AM7XXX_IMAGE_FORMAT_JPEG;
 	am7xxx_context *ctx;
 	am7xxx_device *dev;
 
-	while ((opt = getopt(argc, argv, "f:i:o:s:uF:q:l:p:z:h")) != -1) {
+	while ((opt = getopt(argc, argv, "d:f:i:o:s:uF:q:l:p:z:h")) != -1) {
 		switch (opt) {
+		case 'd':
+			device_index = atoi(optarg);
+			if (device_index < 0) {
+				fprintf(stderr, "Unsupported device index\n");
+				ret = -EINVAL;
+				goto out;
+			}
+			break;
 		case 'f':
 			input_format_string = strdup(optarg);
 			break;
@@ -797,7 +807,7 @@ int main(int argc, char *argv[])
 
 	am7xxx_set_log_level(ctx, log_level);
 
-	ret = am7xxx_open_device(ctx, &dev, 0);
+	ret = am7xxx_open_device(ctx, &dev, device_index);
 	if (ret < 0) {
 		perror("am7xxx_open_device");
 		goto cleanup;
diff --git a/examples/picoproj.c b/examples/picoproj.c
index 54cbedf..b13a67c 100644
--- a/examples/picoproj.c
+++ b/examples/picoproj.c
@@ -35,6 +35,7 @@ static void usage(char *name)
 {
 	printf("usage: %s [OPTIONS]\n\n", name);
 	printf("OPTIONS:\n");
+	printf("\t-d <index>\t\tthe device index (default is 0)\n");
 	printf("\t-f <filename>\t\tthe image file to upload\n");
 	printf("\t-F <format>\t\tthe image format to use (default is JPEG)\n");
 	printf("\t\t\t\tSUPPORTED FORMATS:\n");
@@ -66,6 +67,7 @@ int main(int argc, char *argv[])
 	am7xxx_context *ctx;
 	am7xxx_device *dev;
 	int log_level = AM7XXX_LOG_INFO;
+	int device_index = 0;
 	am7xxx_power_mode power_mode = AM7XXX_POWER_LOW;
 	am7xxx_zoom_mode zoom = AM7XXX_ZOOM_ORIGINAL;
 	int format = AM7XXX_IMAGE_FORMAT_JPEG;
@@ -75,8 +77,15 @@ int main(int argc, char *argv[])
 	unsigned int size;
 	am7xxx_device_info device_info;
 
-	while ((opt = getopt(argc, argv, "f:F:l:p:z:W:H:h")) != -1) {
+	while ((opt = getopt(argc, argv, "d:f:F:l:p:z:W:H:h")) != -1) {
 		switch (opt) {
+		case 'd':
+			device_index = atoi(optarg);
+			if (device_index < 0) {
+				fprintf(stderr, "Unsupported device index\n");
+				exit(EXIT_FAILURE);
+			}
+			break;
 		case 'f':
 			if (filename[0] != '\0')
 				fprintf(stderr, "Warning: image file already specified\n");
@@ -220,7 +229,7 @@ int main(int argc, char *argv[])
 		goto cleanup;
 	}
 
-	ret = am7xxx_open_device(ctx, &dev, 0);
+	ret = am7xxx_open_device(ctx, &dev, device_index);
 	if (ret < 0) {
 		perror("am7xxx_open_device");
 		exit_code = EXIT_FAILURE;