#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 timeout seconds |
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.