Files
libgphoto2/examples/autodetect.c
axxel 5c9d7b2759 fix white-space and indentation inconsistencies in ... (#1002)
* examples
 * gphoto2
 * libgphoto2
 * libgphoto2_port

The code (at least in this part of the project) is effectively formated
using tabs with a tab-size of 8 as a means for indentation.

There have been a few places where spaces were introduced. Some obviously
with an indent size of 8 in mind, others with an indent size of 4.

This commit tries its best to make the use of tabs consistent again, at
least for indenting lines. The "intra line" indentation (white space after
the first non-white-space character) is still a bit of a mess.

Co-authored-by: axxel <awagger@web.de>
2024-09-05 09:25:57 +02:00

84 lines
2.2 KiB
C

#include <stdio.h>
#include <string.h>
#include <gphoto2/gphoto2-camera.h>
#include "samples.h"
static GPPortInfoList *portinfolist = NULL;
static CameraAbilitiesList *abilities = NULL;
/*
* This detects all currently attached cameras and returns
* them in a list. It avoids the generic usb: entry.
*
* This function does not open nor initialize the cameras yet.
*/
int
sample_autodetect (CameraList *list, GPContext *context) {
gp_list_reset (list);
return gp_camera_autodetect (list, context);
}
/*
* This function opens a camera depending on the specified model and port.
*/
int
sample_open_camera (Camera ** camera, const char *model, const char *port, GPContext *context) {
int ret, m, p;
CameraAbilities a;
GPPortInfo pi;
ret = gp_camera_new (camera);
if (ret < GP_OK) return ret;
if (!abilities) {
/* Load all the camera drivers we have... */
ret = gp_abilities_list_new (&abilities);
if (ret < GP_OK) return ret;
ret = gp_abilities_list_load (abilities, context);
if (ret < GP_OK) return ret;
}
/* First lookup the model / driver */
m = gp_abilities_list_lookup_model (abilities, model);
if (m < GP_OK) return ret;
ret = gp_abilities_list_get_abilities (abilities, m, &a);
if (ret < GP_OK) return ret;
ret = gp_camera_set_abilities (*camera, a);
if (ret < GP_OK) return ret;
if (!portinfolist) {
/* Load all the port drivers we have... */
ret = gp_port_info_list_new (&portinfolist);
if (ret < GP_OK) return ret;
ret = gp_port_info_list_load (portinfolist);
if (ret < 0) return ret;
ret = gp_port_info_list_count (portinfolist);
if (ret < 0) return ret;
}
/* Then associate the camera with the specified port */
p = gp_port_info_list_lookup_path (portinfolist, port);
switch (p) {
case GP_ERROR_UNKNOWN_PORT:
fprintf (stderr, "The port you specified "
"('%s') can not be found. Please "
"specify one of the ports found by "
"'gphoto2 --list-ports' and make "
"sure the spelling is correct "
"(i.e. with prefix 'serial:' or 'usb:').",
port);
break;
default:
break;
}
if (p < GP_OK) return p;
ret = gp_port_info_list_get_info (portinfolist, p, &pi);
if (ret < GP_OK) return ret;
ret = gp_camera_set_port_info (*camera, pi);
if (ret < GP_OK) return ret;
return GP_OK;
}