am7xxx: add multi-device support
[libam7xxx.git] / src / picoproj.c
index 1aa6b04..db27573 100644 (file)
@@ -50,12 +50,17 @@ int main(int argc, char *argv[])
        char filename[FILENAME_MAX] = {0};
        int image_fd;
        struct stat st;
        char filename[FILENAME_MAX] = {0};
        int image_fd;
        struct stat st;
-       am7xxx_device dev;
+       am7xxx_context *ctx;
+       am7xxx_device *dev;
        int format = AM7XXX_IMAGE_FORMAT_JPEG;
        int width = 800;
        int height = 480;
        int format = AM7XXX_IMAGE_FORMAT_JPEG;
        int width = 800;
        int height = 480;
-       uint8_t *image;
+       unsigned char *image;
        unsigned int size;
        unsigned int size;
+       unsigned int native_width;
+       unsigned int native_height;
+       unsigned int unknown0;
+       unsigned int unknown1;
 
        while ((opt = getopt(argc, argv, "f:F:W:H:h")) != -1) {
                switch (opt) {
 
        while ((opt = getopt(argc, argv, "f:F:W:H:h")) != -1) {
                switch (opt) {
@@ -126,13 +131,45 @@ int main(int argc, char *argv[])
                goto out_close_image_fd;
        }
 
                goto out_close_image_fd;
        }
 
-       dev = am7xxx_init();
-       if (dev == NULL) {
+       ret = am7xxx_init(&ctx);
+       if (ret < 0) {
                perror("am7xxx_init");
                exit_code = EXIT_FAILURE;
                goto out_munmap;
        }
 
                perror("am7xxx_init");
                exit_code = EXIT_FAILURE;
                goto out_munmap;
        }
 
+       ret = am7xxx_open_device(ctx, &dev, 0);
+       if (ret < 0) {
+               perror("am7xxx_open_device");
+               exit_code = EXIT_FAILURE;
+               goto cleanup;
+       }
+
+
+       ret = am7xxx_close_device(dev);
+       if (ret < 0) {
+               perror("am7xxx_close_device");
+               exit_code = EXIT_FAILURE;
+               goto cleanup;
+       }
+
+       ret = am7xxx_open_device(ctx, &dev, 0);
+       if (ret < 0) {
+               perror("am7xxx_open_device");
+               exit_code = EXIT_FAILURE;
+               goto cleanup;
+       }
+
+       ret = am7xxx_get_device_info(dev, &native_width, &native_height, &unknown0, &unknown1);
+       if (ret < 0) {
+               perror("am7xxx_get_info");
+               exit_code = EXIT_FAILURE;
+               goto cleanup;
+       }
+       printf("Native resolution: %dx%d\n", native_width, native_height);
+       printf("Unknown0: %d\n", unknown0);
+       printf("Unknown1: %d\n", unknown1);
+
        ret = am7xxx_set_power_mode(dev, AM7XXX_POWER_LOW);
        if (ret < 0) {
                perror("am7xxx_set_power_mode");
        ret = am7xxx_set_power_mode(dev, AM7XXX_POWER_LOW);
        if (ret < 0) {
                perror("am7xxx_set_power_mode");
@@ -150,7 +187,7 @@ int main(int argc, char *argv[])
        exit_code = EXIT_SUCCESS;
 
 cleanup:
        exit_code = EXIT_SUCCESS;
 
 cleanup:
-       am7xxx_shutdown(dev);
+       am7xxx_shutdown(ctx);
 
 out_munmap:
        ret = munmap(image, size);
 
 out_munmap:
        ret = munmap(image, size);