#include "config.h"#include <gphoto2/gphoto2-camera.h>#include <stdlib.h>#include <string.h>#include <stdarg.h>#include <stdio.h>#include <ltdl.h>#include <gphoto2/gphoto2-result.h>#include <gphoto2/gphoto2-library.h>#include <gphoto2/gphoto2-port-log.h>

| Data Structures | |
| struct | _CameraPrivateCore | 
| Defines | |
| #define | textdomain(String) (String) | 
| #define | gettext(String) (String) | 
| #define | dgettext(Domain, Message) (Message) | 
| #define | dcgettext(Domain, Message, Type) (Message) | 
| #define | bindtextdomain(Domain, Directory) (Domain) | 
| #define | _(String) (String) | 
| #define | N_(String) (String) | 
| #define | CHECK_NULL(r) {if (!(r)) return (GP_ERROR_BAD_PARAMETERS);} | 
| #define | CAMERA_UNUSED(c, ctx) | 
| #define | CR(c, result, ctx) | 
| #define | CHECK_OPEN(c, ctx) | 
| #define | CHECK_CLOSE(c, ctx) | 
| #define | CRS(c, res, ctx) | 
| #define | CRSL(c, res, ctx, list) | 
| #define | CHECK_RESULT_OPEN_CLOSE(c, result, ctx) | 
| #define | CHECK_INIT(c, ctx) | 
| Functions | |
| int | gp_camera_exit (Camera *camera, GPContext *context) | 
| int | gp_camera_new (Camera **camera) | 
| int | gp_camera_set_abilities (Camera *camera, CameraAbilities abilities) | 
| Sets the camera abilities. | |
| int | gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities) | 
| int | gp_camera_get_port_info (Camera *camera, GPPortInfo *info) | 
| int | gp_camera_set_port_info (Camera *camera, GPPortInfo info) | 
| int | gp_camera_set_port_speed (Camera *camera, int speed) | 
| int | gp_camera_get_port_speed (Camera *camera) | 
| int | gp_camera_ref (Camera *camera) | 
| int | gp_camera_unref (Camera *camera) | 
| int | gp_camera_free (Camera *camera) | 
| int | gp_camera_init (Camera *camera, GPContext *context) | 
| int | gp_camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) | 
| int | gp_camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) | 
| int | gp_camera_get_summary (Camera *camera, CameraText *summary, GPContext *context) | 
| int | gp_camera_get_manual (Camera *camera, CameraText *manual, GPContext *context) | 
| int | gp_camera_get_about (Camera *camera, CameraText *about, GPContext *context) | 
| int | gp_camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) | 
| int | gp_camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) | 
| int | gp_camera_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context) | 
| int | gp_camera_folder_list_files (Camera *camera, const char *folder, CameraList *list, GPContext *context) | 
| int | gp_camera_folder_list_folders (Camera *camera, const char *folder, CameraList *list, GPContext *context) | 
| int | gp_camera_folder_delete_all (Camera *camera, const char *folder, GPContext *context) | 
| int | gp_camera_folder_put_file (Camera *camera, const char *folder, CameraFile *file, GPContext *context) | 
| int | gp_camera_file_get_info (Camera *camera, const char *folder, const char *file, CameraFileInfo *info, GPContext *context) | 
| int | gp_camera_file_set_info (Camera *camera, const char *folder, const char *file, CameraFileInfo info, GPContext *context) | 
| int | gp_camera_file_get (Camera *camera, const char *folder, const char *file, CameraFileType type, CameraFile *camera_file, GPContext *context) | 
| int | gp_camera_file_delete (Camera *camera, const char *folder, const char *file, GPContext *context) | 
| int | gp_camera_folder_make_dir (Camera *camera, const char *folder, const char *name, GPContext *context) | 
| int | gp_camera_folder_remove_dir (Camera *camera, const char *folder, const char *name, GPContext *context) | 
| int | gp_camera_get_storageinfo (Camera *camera, CameraStorageInformation **sifs, int *nrofsifs, GPContext *context) | 
| void | gp_camera_set_timeout_funcs (Camera *camera, CameraTimeoutStartFunc start_func, CameraTimeoutStopFunc stop_func, void *data) | 
| int | gp_camera_start_timeout (Camera *camera, unsigned int timeout, CameraTimeoutFunc func) | 
| void | gp_camera_stop_timeout (Camera *camera, unsigned int id) | 
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
| #define CAMERA_UNUSED | ( | c, | |||
| ctx | ) | 
Value:
{                                                                       \
        (c)->pc->used--;                                                \
        if (!(c)->pc->used) {                                           \
                if ((c)->pc->exit_requested)                            \
                        gp_camera_exit ((c), (ctx));                    \
                if (!(c)->pc->ref_count)                                \
                        gp_camera_free (c);                             \
        }                                                               \
}
| #define CHECK_CLOSE | ( | c, | |||
| ctx | ) | 
Value:
{                                                               \
        if ((c)->functions->post_func) {                        \
                int r3 = (c)->functions->post_func (c,ctx);     \
                if (r3 < 0) {                                   \
                        CAMERA_UNUSED (c,ctx);                  \
                        return (r3);                            \
                }                                               \
        }                                                       \
}
| #define CHECK_INIT | ( | c, | |||
| ctx | ) | 
Value:
{                                                                       \
        if ((c)->pc->used)                                              \
                return (GP_ERROR_CAMERA_BUSY);                          \
        (c)->pc->used++;                                                \
        if (!(c)->pc->lh)                                               \
                CR((c), gp_camera_init (c, ctx), ctx);                  \
}
| #define CHECK_OPEN | ( | c, | |||
| ctx | ) | 
Value:
{                                                                       \
        if ((c)->functions->pre_func) {                                 \
                int r2 = (c)->functions->pre_func (c,ctx);              \
                if (r2 < 0) {                                           \
                        CAMERA_UNUSED (c,ctx);                          \
                        return (r2);                                    \
                }                                                       \
        }                                                               \
}
| #define CHECK_RESULT_OPEN_CLOSE | ( | c, | |||
| result, | |||||
| ctx | ) | 
Value:
{                                                                       \
        int r6;                                                         \
                                                                        \
        CHECK_OPEN (c,ctx);                                             \
        r6 = (result);                                                  \
        if (r6 < 0) {                                                   \
                CHECK_CLOSE (c,ctx);                                    \
                gp_log (GP_LOG_DEBUG, "gphoto2-camera", "Operation failed!");\
                CAMERA_UNUSED (c,ctx);                                  \
                return (r6);                                            \
        }                                                               \
        CHECK_CLOSE (c,ctx);                                            \
}
| #define CR | ( | c, | |||
| result, | |||||
| ctx | ) | 
Value:
{                                                                       \
        int r1 = (result);                                              \
                                                                        \
        if (r1 < 0) {                                                   \
                                                                        \
                /* libgphoto2_port doesn't have a GPContext */          \
                if (r1 > -100)                                          \
                        gp_context_error ((ctx), _("An error occurred " \
                                "in the io-library ('%s'): %s"),        \
                                gp_port_result_as_string (r1),          \
                                (c) ? gp_port_get_error ((c)->port) :   \
                                      _("No additional information "    \
                                      "available."));                   \
                if (c)                                                  \
                        CAMERA_UNUSED((c),(ctx));                       \
                return (r1);                                            \
        }                                                               \
}
| #define CRS | ( | c, | |||
| res, | |||||
| ctx | ) | 
Value:
{                                                                       \
        int r4 = (res);                                                 \
                                                                        \
        if (r4 < 0) {                                                   \
                CAMERA_UNUSED (c,ctx);                                  \
                return (r4);                                            \
        }                                                               \
}
| #define CRSL | ( | c, | |||
| res, | |||||
| ctx, | |||||
| list | ) | 
Value:
{                                                                       \
        int r5 = (res);                                                 \
                                                                        \
        if (r5 < 0) {                                                   \
                CAMERA_UNUSED (c,ctx);                                  \
                gp_list_free (list);                                    \
                return (r5);                                            \
        }                                                               \
}
| int gp_camera_capture | ( | Camera * | camera, | |
| CameraCaptureType | type, | |||
| CameraFilePath * | path, | |||
| GPContext * | context | |||
| ) | 
Captures an image, movie, or sound clip depending on the given type.
| camera | a Camera | |
| type | a CameraCaptureType | |
| path | a CameraFilePath | |
| context | a GPContext | 
path. The file can then be downloaded using gp_camera_file_get. 
References GP_ERROR_NOT_SUPPORTED, and GP_OK.
| int gp_camera_capture_preview | ( | Camera * | camera, | |
| CameraFile * | file, | |||
| GPContext * | context | |||
| ) | 
Captures a preview that won't be stored on the camera but returned in supplied file.
| camera | a Camera | |
| file | a CameraFile | |
| context | a GPContext | 
References GP_ERROR_NOT_SUPPORTED, gp_file_clean(), and GP_OK.
Close connection to camera.
It is recommended that you call this function when you currently don't need the camera. The camera will get reinitialized by gp_camera_init() automatically if you try to access the camera again.
References gp_camera_stop_timeout(), gp_filesystem_reset(), gp_log(), GP_LOG_DEBUG, GP_OK, gp_port_close(), and gp_port_open().
Referenced by gp_camera_free(), gp_camera_set_abilities(), and gp_camera_set_port_speed().
| int gp_camera_file_delete | ( | Camera * | camera, | |
| const char * | folder, | |||
| const char * | file, | |||
| GPContext * | context | |||
| ) | 
Deletes the file from folder.
References gp_filesystem_delete_file(), gp_log(), GP_LOG_DEBUG, and GP_OK.
| int gp_camera_file_get | ( | Camera * | camera, | |
| const char * | folder, | |||
| const char * | file, | |||
| CameraFileType | type, | |||
| CameraFile * | camera_file, | |||
| GPContext * | context | |||
| ) | 
Retrieves a file from the Camera.
| camera | a Camera | |
| folder | a folder | |
| file | the name of a file | |
| type | the CameraFileType | |
| camera_file | a CameraFile | |
| context | a GPContext | 
References GP_ERROR_DIRECTORY_NOT_FOUND, GP_ERROR_FILE_NOT_FOUND, gp_file_clean(), gp_filesystem_get_file(), gp_log(), GP_LOG_DEBUG, and GP_OK.
Referenced by gp_camera_file_get_info().
| int gp_camera_file_get_info | ( | Camera * | camera, | |
| const char * | folder, | |||
| const char * | file, | |||
| CameraFileInfo * | info, | |||
| GPContext * | context | |||
| ) | 
Retrieves information about a file.
References _CameraFileInfoPreview::fields, _CameraFileInfoFile::fields, _CameraFileInfo::file, gp_camera_file_get(), GP_ERROR_NOT_SUPPORTED, gp_file_get_data_and_size(), gp_file_get_mime_type(), GP_FILE_INFO_NAME, GP_FILE_INFO_NONE, GP_FILE_INFO_SIZE, GP_FILE_INFO_TYPE, gp_file_new(), GP_FILE_TYPE_PREVIEW, gp_file_unref(), gp_filesystem_get_info(), gp_log(), GP_LOG_DEBUG, GP_OK, _CameraFileInfoFile::name, _CameraFileInfo::preview, _CameraFileInfoPreview::size, and _CameraFileInfoPreview::type.
| int gp_camera_file_set_info | ( | Camera * | camera, | |
| const char * | folder, | |||
| const char * | file, | |||
| CameraFileInfo | info, | |||
| GPContext * | context | |||
| ) | 
Sets some file properties like name or permissions.
| camera | a Camera | |
| folder | a folder | |
| file | the name of a file | |
| info | the CameraFileInfo | |
| context | a GPContext | 
References gp_filesystem_set_info(), and GP_OK.
Deletes all files in a given folder.
References gp_filesystem_delete_all(), gp_log(), GP_LOG_DEBUG, and GP_OK.
| int gp_camera_folder_list_files | ( | Camera * | camera, | |
| const char * | folder, | |||
| CameraList * | list, | |||
| GPContext * | context | |||
| ) | 
Lists the files in supplied folder.
| camera | a Camera | |
| folder | a folder | |
| list | a CameraList | |
| context | a GPContext | 
References gp_filesystem_list_files(), gp_list_reset(), gp_list_sort(), gp_log(), GP_LOG_DEBUG, and GP_OK.
| int gp_camera_folder_list_folders | ( | Camera * | camera, | |
| const char * | folder, | |||
| CameraList * | list, | |||
| GPContext * | context | |||
| ) | 
Lists the folders in supplied folder.
| camera | a Camera | |
| folder | a folder | |
| list | a CameraList | |
| context | a GPContext | 
References gp_filesystem_list_folders(), gp_list_reset(), gp_list_sort(), gp_log(), GP_LOG_DEBUG, and GP_OK.
| int gp_camera_folder_make_dir | ( | Camera * | camera, | |
| const char * | folder, | |||
| const char * | name, | |||
| GPContext * | context | |||
| ) | 
Creates a new directory called name in the given folder.
| camera | a Camera | |
| folder | the location where to create the new directory | |
| name | the name of the directory to be created | |
| context | a GPContext | 
References gp_filesystem_make_dir(), and GP_OK.
| int gp_camera_folder_put_file | ( | Camera * | camera, | |
| const char * | folder, | |||
| CameraFile * | file, | |||
| GPContext * | context | |||
| ) | 
Uploads a file into given folder.
| camera | a Camera | |
| folder | a folder | |
| file | a CameraFile | |
| context | a GPContext | 
References gp_filesystem_put_file(), gp_log(), GP_LOG_DEBUG, and GP_OK.
| int gp_camera_folder_remove_dir | ( | Camera * | camera, | |
| const char * | folder, | |||
| const char * | name, | |||
| GPContext * | context | |||
| ) | 
Removes an (empty) directory called name from the given folder.
| camera | a Camera | |
| folder | the folder from which to remove the directory | |
| name | the name of the directory to be removed | |
| context | a GPContext | 
References gp_filesystem_remove_dir(), and GP_OK.
| int gp_camera_free | ( | Camera * | camera | ) | 
Free the camera.
| camera | a Camera | 
References gp_camera_exit(), gp_filesystem_free(), gp_log(), GP_LOG_DEBUG, GP_OK, and gp_port_free().
Referenced by gp_camera_new(), and gp_camera_unref().
| int gp_camera_get_abilities | ( | Camera * | camera, | |
| CameraAbilities * | abilities | |||
| ) | 
| int gp_camera_get_about | ( | Camera * | camera, | |
| CameraText * | about, | |||
| GPContext * | context | |||
| ) | 
Retrieves information about the camera driver.
| camera | a Camera | |
| about | a CameraText | |
| context | a GPContext | 
References GP_ERROR_NOT_SUPPORTED, and GP_OK.
| int gp_camera_get_config | ( | Camera * | camera, | |
| CameraWidget ** | window, | |||
| GPContext * | context | |||
| ) | 
Retrieve a configuration window for the camera.
| camera | a Camera | |
| window | a CameraWidget | |
| context | a GPContext | 
window can be used for construction of a configuration dialog. 
References GP_ERROR_NOT_SUPPORTED, and GP_OK.
| int gp_camera_get_manual | ( | Camera * | camera, | |
| CameraText * | manual, | |||
| GPContext * | context | |||
| ) | 
Retrieves the manual for given camera.
| camera | a Camera | |
| manual | a CameraText | |
| context | a GPContext | 
References GP_ERROR_NOT_SUPPORTED, and GP_OK.
| int gp_camera_get_port_speed | ( | Camera * | camera | ) | 
Retrieve the current speed.
| camera | a Camera | 
| int gp_camera_get_storageinfo | ( | Camera * | camera, | |
| CameraStorageInformation ** | sifs, | |||
| int * | nrofsifs, | |||
| GPContext * | context | |||
| ) | 
Gets information on the camera attached storage.
| camera | a Camera | |
| folder | the folder from which to remove the directory | |
| name | the name of the directory to be removed | |
| context | a GPContext | 
References gp_filesystem_get_storageinfo(), and GP_OK.
| int gp_camera_get_summary | ( | Camera * | camera, | |
| CameraText * | summary, | |||
| GPContext * | context | |||
| ) | 
Retrieves a camera summary.
| camera | a Camera | |
| summary | a CameraText | |
| context | a GPContext | 
References GP_ERROR_NOT_SUPPORTED, and GP_OK.
Initiate a connection to the camera.
camera should be set up using gp_camera_set_port_path or gp_camera_set_port_name and gp_camera_set_abilities. If that has been omitted, gphoto2 tries to autodetect any cameras and chooses the first one if any cameras are found. It is generally a good idea to call gp_camera_exit after transactions have been completed in order to give other applications the chance to access the camera, too. 
References gp_abilities_list_detect(), gp_abilities_list_free(), gp_abilities_list_get_abilities(), gp_abilities_list_load(), gp_abilities_list_lookup_model(), gp_abilities_list_new(), gp_camera_set_abilities(), GP_ERROR_LIBRARY, GP_ERROR_MODEL_NOT_FOUND, GP_ERROR_UNKNOWN_PORT, gp_list_count(), gp_list_free(), gp_list_get_name(), gp_list_get_value(), gp_list_new(), gp_log(), GP_LOG_DEBUG, GP_OK, gp_port_close(), gp_port_info_list_free(), gp_port_info_list_get_info(), gp_port_info_list_load(), gp_port_info_list_lookup_path(), gp_port_info_list_new(), GP_PORT_NONE, gp_port_open(), GP_PORT_USB, gp_port_usb_find_device(), and gp_port_usb_find_device_by_class().
| int gp_camera_new | ( | Camera ** | camera | ) | 
Allocates the memory for a Camera.
| camera | the Camera object to initialize. | 
References gp_camera_free(), GP_ERROR_NO_MEMORY, gp_filesystem_new(), GP_OK, and gp_port_new().
| int gp_camera_ref | ( | Camera * | camera | ) | 
| int gp_camera_set_abilities | ( | Camera * | camera, | |
| CameraAbilities | abilities | |||
| ) | 
Sets the camera abilities.
| camera | a Camera | |
| abilities | the CameraAbilities to be set | 
abilities, you tell gphoto2 what model the camera is and what camera driver should be used for accessing the camera. You can get abilities by calling gp_abilities_list_get_abilities. 
References gp_camera_exit(), gp_log(), GP_LOG_DEBUG, GP_OK, and CameraAbilities::model.
Referenced by gp_camera_init().
| int gp_camera_set_config | ( | Camera * | camera, | |
| CameraWidget * | window, | |||
| GPContext * | context | |||
| ) | 
Sets the configuration.
| camera | a Camera | |
| window | a CameraWidget | |
| context | a GPContext | 
window is retrieved using gp_camera_get_config and passed to this function in order to adjust the settings on the camera. 
References GP_ERROR_NOT_SUPPORTED, and GP_OK.
| int gp_camera_set_port_speed | ( | Camera * | camera, | |
| int | speed | |||
| ) | 
Set the camera speed.
| camera | a Camera | |
| speed | the speed | 
References gp_camera_exit(), GP_ERROR_BAD_PARAMETERS, gp_log(), GP_LOG_ERROR, GP_OK, gp_port_get_settings(), GP_PORT_SERIAL, gp_port_set_settings(), _GPPortSettings::serial, and _GPPortSettingsSerial::speed.
| void gp_camera_set_timeout_funcs | ( | Camera * | camera, | |
| CameraTimeoutStartFunc | start_func, | |||
| CameraTimeoutStopFunc | stop_func, | |||
| void * | data | |||
| ) | 
| camera | a Camera | |
| start_func | ||
| stop_func | ||
| data | 
| int gp_camera_start_timeout | ( | Camera * | camera, | |
| unsigned int | timeout, | |||
| CameraTimeoutFunc | func | |||
| ) | 
| camera | a Camera | |
| timeout | number of seconds that should pass between each call to func | |
| func | the function that should be called each timeoutseconds | 
References GP_ERROR_BAD_PARAMETERS, GP_ERROR_NO_MEMORY, and GP_ERROR_NOT_SUPPORTED.
| void gp_camera_stop_timeout | ( | Camera * | camera, | |
| unsigned int | id | |||
| ) | 
Stop periodic calls to keepalive function.
| camera | a Camera | |
| id | the id of the background process previously returned by gp_camera_start_timeout | 
Referenced by gp_camera_exit().
| int gp_camera_unref | ( | Camera * | camera | ) | 
Decrements the reference count of a Camera.
| camera | a Camera | 
camera will be freed automatically. 
References gp_camera_free(), GP_ERROR, gp_log(), GP_LOG_ERROR, and GP_OK.
| int gp_camera_wait_for_event | ( | Camera * | camera, | |
| int | timeout, | |||
| CameraEventType * | eventtype, | |||
| void ** | eventdata, | |||
| GPContext * | context | |||
| ) | 
Wait for an event from the camera.
| camera | a Camera | |
| timeout | amount of time to wait in 1/1000 seconds | |
| eventtype | received CameraEventType [out] | |
| eventdata | received event specific data [out] | |
| context | a GPContext | 
References GP_ERROR_NOT_SUPPORTED, and GP_OK.
 1.5.5
 1.5.5