00001
00026 #ifndef __GPHOTO2_CAMERA_H__
00027 #define __GPHOTO2_CAMERA_H__
00028
00040 typedef struct _Camera Camera;
00041
00042
00043 #include <gphoto2/gphoto2-abilities-list.h>
00044 #include <gphoto2/gphoto2-port.h>
00045
00046 #include <gphoto2/gphoto2-widget.h>
00047 #include <gphoto2/gphoto2-filesys.h>
00048 #include <gphoto2/gphoto2-result.h>
00049
00050 #ifdef __cplusplus
00051 extern "C" {
00052 #endif
00053
00061 typedef struct {
00062 char text [32 * 1024];
00063 } CameraText;
00064
00072 typedef struct {
00073 char name [128];
00074 char folder [1024];
00075 } CameraFilePath;
00076
00083 typedef enum {
00084 GP_CAPTURE_IMAGE,
00085 GP_CAPTURE_MOVIE,
00086 GP_CAPTURE_SOUND
00087 } CameraCaptureType;
00088
00097 typedef enum {
00098 GP_EVENT_UNKNOWN,
00099 GP_EVENT_TIMEOUT,
00100 GP_EVENT_FILE_ADDED,
00101 GP_EVENT_FOLDER_ADDED
00102 } CameraEventType;
00103
00130 typedef int (*CameraExitFunc) (Camera *camera, GPContext *context);
00150 typedef int (*CameraGetConfigFunc) (Camera *camera, CameraWidget **widget,
00151 GPContext *context);
00165 typedef int (*CameraSetConfigFunc) (Camera *camera, CameraWidget *widget,
00166 GPContext *context);
00167 typedef int (*CameraCaptureFunc) (Camera *camera, CameraCaptureType type,
00168 CameraFilePath *path, GPContext *context);
00169 typedef int (*CameraCapturePreviewFunc) (Camera *camera, CameraFile *file,
00170 GPContext *context);
00171 typedef int (*CameraSummaryFunc) (Camera *camera, CameraText *text,
00172 GPContext *context);
00173 typedef int (*CameraManualFunc) (Camera *camera, CameraText *text,
00174 GPContext *context);
00175 typedef int (*CameraAboutFunc) (Camera *camera, CameraText *text,
00176 GPContext *context);
00177 typedef int (*CameraWaitForEvent) (Camera *camera, int timeout,
00178 CameraEventType *eventtype, void **eventdata,
00179 GPContext *context);
00197 typedef int (*CameraPrePostFunc) (Camera *camera, GPContext *context);
00198
00211 typedef struct _CameraFunctions {
00212 CameraPrePostFunc pre_func;
00213 CameraPrePostFunc post_func;
00215 CameraExitFunc exit;
00217
00218 CameraGetConfigFunc get_config;
00219 CameraSetConfigFunc set_config;
00221
00222 CameraCaptureFunc capture;
00223 CameraCapturePreviewFunc capture_preview;
00225
00226 CameraSummaryFunc summary;
00227 CameraManualFunc manual;
00228 CameraAboutFunc about;
00230
00231 CameraWaitForEvent wait_for_event;
00233
00234 void *reserved1;
00235 void *reserved2;
00236 void *reserved3;
00237 void *reserved4;
00238 void *reserved5;
00239 void *reserved6;
00240 void *reserved7;
00241 } CameraFunctions;
00242
00243
00244 typedef GPPort CameraPort;
00245 typedef GPPortInfo CameraPortInfo;
00246
00247 typedef struct _CameraPrivateLibrary CameraPrivateLibrary;
00248 typedef struct _CameraPrivateCore CameraPrivateCore;
00249
00250 struct _Camera {
00251
00254 GPPort *port;
00255 CameraFilesystem *fs;
00256 CameraFunctions *functions;
00259 CameraPrivateLibrary *pl;
00260 CameraPrivateCore *pc;
00261 };
00262
00263
00265 int gp_camera_new (Camera **camera);
00266
00267
00271 int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities);
00272 int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities);
00273 int gp_camera_set_port_info (Camera *camera, GPPortInfo info);
00274 int gp_camera_get_port_info (Camera *camera, GPPortInfo *info);
00275
00287 int gp_camera_set_port_speed (Camera *camera, int speed);
00288 int gp_camera_get_port_speed (Camera *camera);
00289
00296 int gp_camera_init (Camera *camera, GPContext *context);
00297 int gp_camera_exit (Camera *camera, GPContext *context);
00298
00305 int gp_camera_ref (Camera *camera);
00306 int gp_camera_unref (Camera *camera);
00307 int gp_camera_free (Camera *camera);
00308
00309 int gp_camera_get_config (Camera *camera, CameraWidget **window,
00310 GPContext *context);
00311 int gp_camera_set_config (Camera *camera, CameraWidget *window,
00312 GPContext *context);
00313 int gp_camera_get_summary (Camera *camera, CameraText *summary,
00314 GPContext *context);
00315 int gp_camera_get_manual (Camera *camera, CameraText *manual,
00316 GPContext *context);
00317 int gp_camera_get_about (Camera *camera, CameraText *about,
00318 GPContext *context);
00319 int gp_camera_capture (Camera *camera, CameraCaptureType type,
00320 CameraFilePath *path, GPContext *context);
00321 int gp_camera_capture_preview (Camera *camera, CameraFile *file,
00322 GPContext *context);
00323 int gp_camera_wait_for_event (Camera *camera, int timeout,
00324 CameraEventType *eventtype, void **eventdata,
00325 GPContext *context);
00326
00327 int gp_camera_get_storageinfo (Camera *camera, CameraStorageInformation**,
00328 int *, GPContext *context);
00329
00336 int gp_camera_folder_list_files (Camera *camera, const char *folder,
00337 CameraList *list, GPContext *context);
00338 int gp_camera_folder_list_folders (Camera *camera, const char *folder,
00339 CameraList *list, GPContext *context);
00340 int gp_camera_folder_delete_all (Camera *camera, const char *folder,
00341 GPContext *context);
00342 int gp_camera_folder_put_file (Camera *camera, const char *folder,
00343 CameraFile *file, GPContext *context);
00344 int gp_camera_folder_make_dir (Camera *camera, const char *folder,
00345 const char *name, GPContext *context);
00346 int gp_camera_folder_remove_dir (Camera *camera, const char *folder,
00347 const char *name, GPContext *context);
00354 int gp_camera_file_get_info (Camera *camera, const char *folder,
00355 const char *file, CameraFileInfo *info,
00356 GPContext *context);
00357 int gp_camera_file_set_info (Camera *camera, const char *folder,
00358 const char *file, CameraFileInfo info,
00359 GPContext *context);
00360 int gp_camera_file_get (Camera *camera, const char *folder,
00361 const char *file, CameraFileType type,
00362 CameraFile *camera_file, GPContext *context);
00363 int gp_camera_file_delete (Camera *camera, const char *folder,
00364 const char *file, GPContext *context);
00372 typedef int (* CameraTimeoutFunc) (Camera *camera,
00373 GPContext *context);
00374 typedef unsigned int (* CameraTimeoutStartFunc) (Camera *camera,
00375 unsigned int timeout,
00376 CameraTimeoutFunc func,
00377 void *data);
00378 typedef void (* CameraTimeoutStopFunc) (Camera *camera,
00379 unsigned int id, void *data);
00380 void gp_camera_set_timeout_funcs (Camera *camera,
00381 CameraTimeoutStartFunc start_func,
00382 CameraTimeoutStopFunc stop_func,
00383 void *data);
00384 int gp_camera_start_timeout (Camera *camera, unsigned int timeout,
00385 CameraTimeoutFunc func);
00386 void gp_camera_stop_timeout (Camera *camera, unsigned int id);
00387
00389 #ifdef __cplusplus
00390 }
00391 #endif
00392
00393 #endif