diff --git a/ChangeLog b/ChangeLog index 82886abd2..5f8100b62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-10-16 Lutz Müller + + * frontends/command-line/main.c: Use gp_camera_set_abilities. + * include/gphoto2-camera.h: + * libgphoto2/camera.c:Introduce gp_camera_[set,get]_abilities. + 2001-10-16 Lutz Müller * libgphoto2/gphoto2-result.[c,h]: GP_ERROR_NOT_SUPPORTED now in diff --git a/frontends/command-line/main.c b/frontends/command-line/main.c index d067bf21e..5fddd0187 100644 --- a/frontends/command-line/main.c +++ b/frontends/command-line/main.c @@ -837,11 +837,14 @@ OPTION_CALLBACK (about) static int set_globals (void) { + CameraAbilities abilities; + /* takes all the settings and sets up the gphoto lib */ cli_debug_print ("Setting globals..."); CHECK_RESULT (gp_camera_new (&glob_camera)); - CHECK_RESULT (gp_camera_set_model (glob_camera, glob_model)); + CHECK_RESULT (gp_camera_abilities_by_name (glob_model, &abilities)); + CHECK_RESULT (gp_camera_set_abilities (glob_camera, abilities)); if (strcmp (glob_model, "Directory Browse")) CHECK_RESULT (gp_camera_set_port_path (glob_camera, glob_port)); CHECK_RESULT (gp_camera_set_port_speed (glob_camera, glob_speed)); diff --git a/include/gphoto2-camera.h b/include/gphoto2-camera.h index 5479e7bc3..2bbe5a322 100644 --- a/include/gphoto2-camera.h +++ b/include/gphoto2-camera.h @@ -117,6 +117,11 @@ typedef void (* CameraStatusFunc) (Camera *, const char *status, void *data); typedef void (* CameraProgressFunc) (Camera *, float percentage, void *data); struct _Camera { + + /* + * Don't use, use abilities->model instead. This entry will + * disappear at some point in the future. + */ char model[128]; GPPortInfo *port_info; @@ -148,11 +153,11 @@ struct _Camera { /* Create a new camera device */ int gp_camera_new (Camera **camera); -int gp_camera_set_model (Camera *camera, const char *model); -int gp_camera_get_model (Camera *camera, const char **model); -int gp_camera_set_port_name (Camera *camera, const char *port_name); +int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities); +int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities); +int gp_camera_set_port_name (Camera *camera, const char *port_name); int gp_camera_get_port_name (Camera *camera, const char **port_name); -int gp_camera_set_port_path (Camera *camera, const char *port_path); +int gp_camera_set_port_path (Camera *camera, const char *port_path); int gp_camera_get_port_path (Camera *camera, const char **port_path); /* Don't use */ diff --git a/libgphoto2/camera.c b/libgphoto2/camera.c index 8c2c9ea9d..9fe05f2b0 100644 --- a/libgphoto2/camera.c +++ b/libgphoto2/camera.c @@ -31,6 +31,7 @@ #include "gphoto2-library.h" #include "gphoto2-debug.h" #include "gphoto2-port-core.h" +#include "gphoto2-port-log.h" #include #ifdef ENABLE_NLS @@ -121,23 +122,57 @@ gp_camera_new (Camera **camera) return(GP_OK); } +/* DEPRECATED */ +int gp_camera_set_model (Camera *, const char *); int gp_camera_set_model (Camera *camera, const char *model) { + CameraAbilities abilities; + CHECK_NULL (camera && model); gp_debug_printf (GP_DEBUG_LOW, "core", "Setting model to '%s'", model); + CHECK_RESULT (gp_camera_abilities_by_name (model, &abilities)); + CHECK_RESULT (gp_camera_set_abilities (camera, abilities)); strncpy (camera->model, model, sizeof (camera->model)); return (GP_OK); } +/* DEPRECATED */ +int gp_camera_get_model (Camera *, const char **); int gp_camera_get_model (Camera *camera, const char **model) { CHECK_NULL (camera && model); - *model = camera->model; + *model = camera->abilities->model; + + return (GP_OK); +} + +int +gp_camera_set_abilities (Camera *camera, CameraAbilities abilities) +{ + gp_log (GP_LOG_DEBUG, "gphoto2-camera", "Setting abilibites ('%s')...", + abilities.model); + + CHECK_NULL (camera); + + memcpy (camera->abilities, &abilities, sizeof (CameraAbilities)); + +//FIXME: Remove this. Up to now, some camera drivers still need it. + strcpy (camera->model, abilities.model); + + return (GP_OK); +} + +int +gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities) +{ + CHECK_NULL (camera && abilities); + + memcpy (abilities, camera->abilities, sizeof (CameraAbilities)); return (GP_OK); } @@ -434,8 +469,8 @@ gp_camera_init (Camera *camera) * If the port or the model hasn't been indicated, try to * figure it out (USB only). Beware of "Directory Browse". */ - if (strcmp (camera->model, "Directory Browse")) { - if (!camera->port || !strcmp ("", camera->model)) { + if (strcmp (camera->abilities->model, "Directory Browse")) { + if (!camera->port || !strcmp ("", camera->abilities->model)) { /* Call auto-detect and choose the first camera */ CRS (camera, gp_autodetect (&list)); @@ -451,10 +486,6 @@ gp_camera_init (Camera *camera) return (GP_ERROR_UNKNOWN_PORT); } - /* Fill in camera abilities. */ - CRS (camera, gp_camera_abilities_by_name (camera->model, - camera->abilities)); - /* In case of USB, find the device */ switch (camera->port->type) { case GP_PORT_USB: @@ -466,11 +497,6 @@ gp_camera_init (Camera *camera) break; } - } else { - - /* Fill in camera abilities. */ - CRS (camera, gp_camera_abilities_by_name (camera->model, - camera->abilities)); } /* Load the library. */