00001
00026 #ifndef __GPHOTO2_CAMERA_H__
00027 #define __GPHOTO2_CAMERA_H__
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00044 typedef struct _Camera Camera;
00045 #ifdef __cplusplus
00046 }
00047 #endif
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
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
00104 typedef enum {
00105 GP_EVENT_UNKNOWN,
00106 GP_EVENT_TIMEOUT,
00107 GP_EVENT_FILE_ADDED,
00108 GP_EVENT_FOLDER_ADDED,
00109 GP_EVENT_CAPTURE_COMPLETE
00110 } CameraEventType;
00111
00138 typedef int (*CameraExitFunc) (Camera *camera, GPContext *context);
00158 typedef int (*CameraGetConfigFunc) (Camera *camera, CameraWidget **widget,
00159 GPContext *context);
00173 typedef int (*CameraSetConfigFunc) (Camera *camera, CameraWidget *widget,
00174 GPContext *context);
00175 typedef int (*CameraCaptureFunc) (Camera *camera, CameraCaptureType type,
00176 CameraFilePath *path, GPContext *context);
00177 typedef int (*CameraTriggerCaptureFunc) (Camera *camera, GPContext *context);
00178 typedef int (*CameraCapturePreviewFunc) (Camera *camera, CameraFile *file,
00179 GPContext *context);
00180 typedef int (*CameraSummaryFunc) (Camera *camera, CameraText *text,
00181 GPContext *context);
00182 typedef int (*CameraManualFunc) (Camera *camera, CameraText *text,
00183 GPContext *context);
00184 typedef int (*CameraAboutFunc) (Camera *camera, CameraText *text,
00185 GPContext *context);
00186 typedef int (*CameraWaitForEvent) (Camera *camera, int timeout,
00187 CameraEventType *eventtype, void **eventdata,
00188 GPContext *context);
00206 typedef int (*CameraPrePostFunc) (Camera *camera, GPContext *context);
00207
00220 typedef struct _CameraFunctions {
00221 CameraPrePostFunc pre_func;
00222 CameraPrePostFunc post_func;
00224 CameraExitFunc exit;
00226
00227 CameraGetConfigFunc get_config;
00228 CameraSetConfigFunc set_config;
00230
00231 CameraCaptureFunc capture;
00232 CameraTriggerCaptureFunc trigger_capture;
00233 CameraCapturePreviewFunc capture_preview;
00235
00236 CameraSummaryFunc summary;
00237 CameraManualFunc manual;
00238 CameraAboutFunc about;
00240
00241 CameraWaitForEvent wait_for_event;
00242
00243 void *reserved1;
00244 void *reserved2;
00245 void *reserved3;
00246 void *reserved4;
00247 void *reserved5;
00248 void *reserved6;
00249 void *reserved7;
00250 void *reserved8;
00251 } CameraFunctions;
00252
00253 typedef struct _CameraPrivateLibrary CameraPrivateLibrary;
00254 typedef struct _CameraPrivateCore CameraPrivateCore;
00255
00256 struct _Camera {
00257
00260 GPPort *port;
00261 CameraFilesystem *fs;
00262 CameraFunctions *functions;
00265 CameraPrivateLibrary *pl;
00266 CameraPrivateCore *pc;
00267 };
00268
00269
00271 int gp_camera_new (Camera **camera);
00272
00273
00277 int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities);
00278 int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities);
00279 int gp_camera_set_port_info (Camera *camera, GPPortInfo info);
00280 int gp_camera_get_port_info (Camera *camera, GPPortInfo *info);
00281
00293 int gp_camera_set_port_speed (Camera *camera, int speed);
00294 int gp_camera_get_port_speed (Camera *camera);
00295
00302 int gp_camera_autodetect (CameraList *list, GPContext *context);
00303 int gp_camera_init (Camera *camera, GPContext *context);
00304 int gp_camera_exit (Camera *camera, GPContext *context);
00305
00313 int gp_camera_ref (Camera *camera);
00314 int gp_camera_unref (Camera *camera);
00315 int gp_camera_free (Camera *camera);
00316
00317 int gp_camera_get_config (Camera *camera, CameraWidget **window,
00318 GPContext *context);
00319 int gp_camera_set_config (Camera *camera, CameraWidget *window,
00320 GPContext *context);
00321 int gp_camera_get_summary (Camera *camera, CameraText *summary,
00322 GPContext *context);
00323 int gp_camera_get_manual (Camera *camera, CameraText *manual,
00324 GPContext *context);
00325 int gp_camera_get_about (Camera *camera, CameraText *about,
00326 GPContext *context);
00327 int gp_camera_capture (Camera *camera, CameraCaptureType type,
00328 CameraFilePath *path, GPContext *context);
00329 int gp_camera_trigger_capture (Camera *camera, GPContext *context);
00330 int gp_camera_capture_preview (Camera *camera, CameraFile *file,
00331 GPContext *context);
00332 int gp_camera_wait_for_event (Camera *camera, int timeout,
00333 CameraEventType *eventtype, void **eventdata,
00334 GPContext *context);
00335
00336 int gp_camera_get_storageinfo (Camera *camera, CameraStorageInformation**,
00337 int *, GPContext *context);
00338
00345 int gp_camera_folder_list_files (Camera *camera, const char *folder,
00346 CameraList *list, GPContext *context);
00347 int gp_camera_folder_list_folders (Camera *camera, const char *folder,
00348 CameraList *list, GPContext *context);
00349 int gp_camera_folder_delete_all (Camera *camera, const char *folder,
00350 GPContext *context);
00351 int gp_camera_folder_put_file (Camera *camera,
00352 const char *folder, const char *filename,
00353 CameraFileType type,
00354 CameraFile *file, GPContext *context);
00355 int gp_camera_folder_make_dir (Camera *camera, const char *folder,
00356 const char *name, GPContext *context);
00357 int gp_camera_folder_remove_dir (Camera *camera, const char *folder,
00358 const char *name, GPContext *context);
00365 int gp_camera_file_get_info (Camera *camera, const char *folder,
00366 const char *file, CameraFileInfo *info,
00367 GPContext *context);
00368 int gp_camera_file_set_info (Camera *camera, const char *folder,
00369 const char *file, CameraFileInfo info,
00370 GPContext *context);
00371 int gp_camera_file_get (Camera *camera, const char *folder,
00372 const char *file, CameraFileType type,
00373 CameraFile *camera_file, GPContext *context);
00374 int gp_camera_file_read (Camera *camera, const char *folder, const char *file,
00375 CameraFileType type,
00376 uint64_t offset, char *buf, uint64_t *size,
00377 GPContext *context);
00378 int gp_camera_file_delete (Camera *camera, const char *folder,
00379 const char *file, GPContext *context);
00387 typedef int (* CameraTimeoutFunc) (Camera *camera,
00388 GPContext *context);
00389 typedef unsigned int (* CameraTimeoutStartFunc) (Camera *camera,
00390 unsigned int timeout,
00391 CameraTimeoutFunc func,
00392 void *data);
00393 typedef void (* CameraTimeoutStopFunc) (Camera *camera,
00394 unsigned int id, void *data);
00395 void gp_camera_set_timeout_funcs (Camera *camera,
00396 CameraTimeoutStartFunc start_func,
00397 CameraTimeoutStopFunc stop_func,
00398 void *data);
00399 int gp_camera_start_timeout (Camera *camera, unsigned int timeout,
00400 CameraTimeoutFunc func);
00401 void gp_camera_stop_timeout (Camera *camera, unsigned int id);
00402
00404 #ifdef __cplusplus
00405 }
00406 #endif
00407
00408
00409 #endif