libgphoto2 photo camera library (libgphoto2) API
2.5.13
|
00001 00026 #ifndef __GPHOTO2_CAMERA_H__ 00027 #define __GPHOTO2_CAMERA_H__ 00028 00029 #ifdef __cplusplus 00030 extern "C" { 00031 #endif /* __cplusplus */ 00032 00044 typedef struct _Camera Camera; 00045 #ifdef __cplusplus 00046 } 00047 #endif /* __cplusplus */ 00048 00049 00050 #include <gphoto2/gphoto2-abilities-list.h> 00051 #include <gphoto2/gphoto2-port.h> 00052 00053 #include <gphoto2/gphoto2-widget.h> 00054 #include <gphoto2/gphoto2-filesys.h> 00055 #include <gphoto2/gphoto2-result.h> 00056 00057 #ifdef __cplusplus 00058 extern "C" { 00059 #endif /* __cplusplus */ 00060 00068 typedef struct { 00069 char text [32 * 1024]; 00070 } CameraText; 00071 00079 typedef struct { 00080 char name [128]; 00081 char folder [1024]; 00082 } CameraFilePath; 00083 00090 typedef enum { 00091 GP_CAPTURE_IMAGE, 00092 GP_CAPTURE_MOVIE, 00093 GP_CAPTURE_SOUND 00094 } CameraCaptureType; 00095 00103 typedef enum { 00104 GP_EVENT_UNKNOWN, 00105 GP_EVENT_TIMEOUT, 00106 GP_EVENT_FILE_ADDED, 00107 GP_EVENT_FOLDER_ADDED, 00108 GP_EVENT_CAPTURE_COMPLETE 00109 } CameraEventType; 00110 00137 typedef int (*CameraExitFunc) (Camera *camera, GPContext *context); 00138 00158 typedef int (*CameraGetConfigFunc) (Camera *camera, CameraWidget **widget, 00159 GPContext *context); 00183 typedef int (*CameraGetSingleConfigFunc) (Camera *camera, const char *name, CameraWidget **widget, 00184 GPContext *context); 00208 typedef int (*CameraListConfigFunc) (Camera *camera, CameraList *list, GPContext *context); 00222 typedef int (*CameraSetConfigFunc) (Camera *camera, CameraWidget *widget, 00223 GPContext *context); 00236 typedef int (*CameraSetSingleConfigFunc) (Camera *camera, const char *name, CameraWidget *widget, 00237 GPContext *context); 00238 00239 typedef int (*CameraCaptureFunc) (Camera *camera, CameraCaptureType type, 00240 CameraFilePath *path, GPContext *context); 00241 typedef int (*CameraTriggerCaptureFunc) (Camera *camera, GPContext *context); 00242 typedef int (*CameraCapturePreviewFunc) (Camera *camera, CameraFile *file, 00243 GPContext *context); 00244 typedef int (*CameraSummaryFunc) (Camera *camera, CameraText *text, 00245 GPContext *context); 00246 typedef int (*CameraManualFunc) (Camera *camera, CameraText *text, 00247 GPContext *context); 00248 typedef int (*CameraAboutFunc) (Camera *camera, CameraText *text, 00249 GPContext *context); 00250 typedef int (*CameraWaitForEvent) (Camera *camera, int timeout, 00251 CameraEventType *eventtype, void **eventdata, 00252 GPContext *context); 00270 typedef int (*CameraPrePostFunc) (Camera *camera, GPContext *context); 00271 00284 typedef struct _CameraFunctions { 00285 CameraPrePostFunc pre_func; 00286 CameraPrePostFunc post_func; 00288 CameraExitFunc exit; 00290 /* Configuration */ 00291 CameraGetConfigFunc get_config; 00292 CameraSetConfigFunc set_config; 00294 CameraListConfigFunc list_config; 00295 CameraGetSingleConfigFunc get_single_config; 00296 CameraSetSingleConfigFunc set_single_config; 00298 /* Capturing */ 00299 CameraCaptureFunc capture; 00300 CameraTriggerCaptureFunc trigger_capture; 00301 CameraCapturePreviewFunc capture_preview; 00303 /* Textual information */ 00304 CameraSummaryFunc summary; 00305 CameraManualFunc manual; 00306 CameraAboutFunc about; 00308 /* Event Interface */ 00309 CameraWaitForEvent wait_for_event; 00310 /* Reserved space to use in the future without changing the struct size */ 00311 void *reserved1; 00312 void *reserved2; 00313 void *reserved3; 00314 void *reserved4; 00315 void *reserved5; 00316 void *reserved6; 00317 void *reserved7; 00318 void *reserved8; 00319 } CameraFunctions; 00320 00321 typedef struct _CameraPrivateLibrary CameraPrivateLibrary; 00322 typedef struct _CameraPrivateCore CameraPrivateCore; 00323 00324 struct _Camera { 00325 00328 GPPort *port; 00329 CameraFilesystem *fs; 00330 CameraFunctions *functions; 00333 CameraPrivateLibrary *pl; 00334 CameraPrivateCore *pc; 00335 }; 00336 00337 00339 int gp_camera_new (Camera **camera); 00340 00341 00345 int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities); 00346 int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities); 00347 int gp_camera_set_port_info (Camera *camera, GPPortInfo info); 00348 int gp_camera_get_port_info (Camera *camera, GPPortInfo *info); 00349 00361 int gp_camera_set_port_speed (Camera *camera, int speed); 00362 int gp_camera_get_port_speed (Camera *camera); 00363 00370 int gp_camera_autodetect (CameraList *list, GPContext *context); 00371 int gp_camera_init (Camera *camera, GPContext *context); 00372 int gp_camera_exit (Camera *camera, GPContext *context); 00373 00381 int gp_camera_ref (Camera *camera); 00382 int gp_camera_unref (Camera *camera); 00383 int gp_camera_free (Camera *camera); 00384 00385 int gp_camera_get_config (Camera *camera, CameraWidget **window, 00386 GPContext *context); 00387 int gp_camera_list_config (Camera *camera, CameraList *list, 00388 GPContext *context); 00389 int gp_camera_get_single_config (Camera *camera, const char *name, CameraWidget **widget, 00390 GPContext *context); 00391 int gp_camera_set_config (Camera *camera, CameraWidget *window, 00392 GPContext *context); 00393 int gp_camera_set_single_config (Camera *camera, const char *name, CameraWidget *widget, 00394 GPContext *context); 00395 int gp_camera_get_summary (Camera *camera, CameraText *summary, 00396 GPContext *context); 00397 int gp_camera_get_manual (Camera *camera, CameraText *manual, 00398 GPContext *context); 00399 int gp_camera_get_about (Camera *camera, CameraText *about, 00400 GPContext *context); 00401 int gp_camera_capture (Camera *camera, CameraCaptureType type, 00402 CameraFilePath *path, GPContext *context); 00403 int gp_camera_trigger_capture (Camera *camera, GPContext *context); 00404 int gp_camera_capture_preview (Camera *camera, CameraFile *file, 00405 GPContext *context); 00406 int gp_camera_wait_for_event (Camera *camera, int timeout, 00407 CameraEventType *eventtype, void **eventdata, 00408 GPContext *context); 00409 00410 int gp_camera_get_storageinfo (Camera *camera, CameraStorageInformation**, 00411 int *, GPContext *context); 00412 00419 int gp_camera_folder_list_files (Camera *camera, const char *folder, 00420 CameraList *list, GPContext *context); 00421 int gp_camera_folder_list_folders (Camera *camera, const char *folder, 00422 CameraList *list, GPContext *context); 00423 int gp_camera_folder_delete_all (Camera *camera, const char *folder, 00424 GPContext *context); 00425 int gp_camera_folder_put_file (Camera *camera, 00426 const char *folder, const char *filename, 00427 CameraFileType type, 00428 CameraFile *file, GPContext *context); 00429 int gp_camera_folder_make_dir (Camera *camera, const char *folder, 00430 const char *name, GPContext *context); 00431 int gp_camera_folder_remove_dir (Camera *camera, const char *folder, 00432 const char *name, GPContext *context); 00439 int gp_camera_file_get_info (Camera *camera, const char *folder, 00440 const char *file, CameraFileInfo *info, 00441 GPContext *context); 00442 int gp_camera_file_set_info (Camera *camera, const char *folder, 00443 const char *file, CameraFileInfo info, 00444 GPContext *context); 00445 int gp_camera_file_get (Camera *camera, const char *folder, 00446 const char *file, CameraFileType type, 00447 CameraFile *camera_file, GPContext *context); 00448 int gp_camera_file_read (Camera *camera, const char *folder, const char *file, 00449 CameraFileType type, 00450 uint64_t offset, char *buf, uint64_t *size, 00451 GPContext *context); 00452 int gp_camera_file_delete (Camera *camera, const char *folder, 00453 const char *file, GPContext *context); 00461 typedef int (* CameraTimeoutFunc) (Camera *camera, 00462 GPContext *context); 00463 typedef unsigned int (* CameraTimeoutStartFunc) (Camera *camera, 00464 unsigned int timeout, 00465 CameraTimeoutFunc func, 00466 void *data); 00467 typedef void (* CameraTimeoutStopFunc) (Camera *camera, 00468 unsigned int id, void *data); 00469 void gp_camera_set_timeout_funcs (Camera *camera, 00470 CameraTimeoutStartFunc start_func, 00471 CameraTimeoutStopFunc stop_func, 00472 void *data); 00473 int gp_camera_start_timeout (Camera *camera, unsigned int timeout, 00474 CameraTimeoutFunc func); 00475 void gp_camera_stop_timeout (Camera *camera, unsigned int id); 00476 00478 #ifdef __cplusplus 00479 } 00480 #endif /* __cplusplus */ 00481 00482 00483 #endif /* __GPHOTO2_CAMERA_H__ */