libgphoto2 photo camera library (libgphoto2) API  2.5.13
gphoto2-camera.h
Go to the documentation of this file.
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__ */