00001
00022 #ifndef __GPHOTO2_CAMERA_H__
00023 #define __GPHOTO2_CAMERA_H__
00024
00025 #include <gphoto2-context.h>
00026
00027
00039 typedef struct _Camera Camera;
00040
00041
00042 #include <gphoto2-port.h>
00043 #include <gphoto2-port-info-list.h>
00044
00045 #include <gphoto2-widget.h>
00046 #include <gphoto2-list.h>
00047 #include <gphoto2-file.h>
00048 #include <gphoto2-filesys.h>
00049 #include <gphoto2-abilities-list.h>
00050 #include <gphoto2-result.h>
00051 #include <gphoto2-context.h>
00052
00053 typedef struct {
00054 char text [32 * 1024];
00055 } CameraText;
00056
00057 typedef struct {
00058 char name [128];
00059 char folder [1024];
00060 } CameraFilePath;
00061
00062 typedef enum {
00063 GP_CAPTURE_IMAGE,
00064 GP_CAPTURE_MOVIE,
00065 GP_CAPTURE_SOUND
00066 } CameraCaptureType;
00067
00076 typedef int (*CameraExitFunc) (Camera *camera, GPContext *context);
00077 typedef int (*CameraGetConfigFunc) (Camera *camera, CameraWidget **widget,
00078 GPContext *context);
00079 typedef int (*CameraSetConfigFunc) (Camera *camera, CameraWidget *widget,
00080 GPContext *context);
00081 typedef int (*CameraCaptureFunc) (Camera *camera, CameraCaptureType type,
00082 CameraFilePath *path, GPContext *context);
00083 typedef int (*CameraCapturePreviewFunc) (Camera *camera, CameraFile *file,
00084 GPContext *context);
00085 typedef int (*CameraSummaryFunc) (Camera *camera, CameraText *text,
00086 GPContext *context);
00087 typedef int (*CameraManualFunc) (Camera *camera, CameraText *text,
00088 GPContext *context);
00089 typedef int (*CameraAboutFunc) (Camera *camera, CameraText *text,
00090 GPContext *context);
00091
00109 typedef int (*CameraPrePostFunc) (Camera *camera, GPContext *context);
00110
00111
00112 typedef struct _CameraFunctions CameraFunctions;
00113 struct _CameraFunctions {
00114
00115
00116 CameraPrePostFunc pre_func;
00117 CameraPrePostFunc post_func;
00118
00119 CameraExitFunc exit;
00120
00121
00122 CameraGetConfigFunc get_config;
00123 CameraSetConfigFunc set_config;
00124
00125
00126 CameraCaptureFunc capture;
00127 CameraCapturePreviewFunc capture_preview;
00128
00129
00130 CameraSummaryFunc summary;
00131 CameraManualFunc manual;
00132 CameraAboutFunc about;
00133
00134
00135 void *reserved1;
00136 void *reserved2;
00137 void *reserved3;
00138 void *reserved4;
00139 void *reserved5;
00140 void *reserved6;
00141 void *reserved7;
00142 void *reserved8;
00143 };
00144
00145
00146 typedef GPPort CameraPort;
00147 typedef GPPortInfo CameraPortInfo;
00148
00149 typedef struct _CameraPrivateLibrary CameraPrivateLibrary;
00150 typedef struct _CameraPrivateCore CameraPrivateCore;
00151
00152 struct _Camera {
00153
00156 GPPort *port;
00157 CameraFilesystem *fs;
00158 CameraFunctions *functions;
00161 CameraPrivateLibrary *pl;
00162 CameraPrivateCore *pc;
00163 };
00164
00165
00167 int gp_camera_new (Camera **camera);
00168
00169
00173 int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities);
00174 int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities);
00175 int gp_camera_set_port_info (Camera *camera, GPPortInfo info);
00176 int gp_camera_get_port_info (Camera *camera, GPPortInfo *info);
00177
00189 int gp_camera_set_port_speed (Camera *camera, int speed);
00190 int gp_camera_get_port_speed (Camera *camera);
00191
00198 int gp_camera_init (Camera *camera, GPContext *context);
00199 int gp_camera_exit (Camera *camera, GPContext *context);
00200
00207 int gp_camera_ref (Camera *camera);
00208 int gp_camera_unref (Camera *camera);
00209 int gp_camera_free (Camera *camera);
00210
00211 int gp_camera_get_config (Camera *camera, CameraWidget **window,
00212 GPContext *context);
00213 int gp_camera_set_config (Camera *camera, CameraWidget *window,
00214 GPContext *context);
00215 int gp_camera_get_summary (Camera *camera, CameraText *summary,
00216 GPContext *context);
00217 int gp_camera_get_manual (Camera *camera, CameraText *manual,
00218 GPContext *context);
00219 int gp_camera_get_about (Camera *camera, CameraText *about,
00220 GPContext *context);
00221 int gp_camera_capture (Camera *camera, CameraCaptureType type,
00222 CameraFilePath *path, GPContext *context);
00223 int gp_camera_capture_preview (Camera *camera, CameraFile *file,
00224 GPContext *context);
00225
00232 int gp_camera_folder_list_files (Camera *camera, const char *folder,
00233 CameraList *list, GPContext *context);
00234 int gp_camera_folder_list_folders (Camera *camera, const char *folder,
00235 CameraList *list, GPContext *context);
00236 int gp_camera_folder_delete_all (Camera *camera, const char *folder,
00237 GPContext *context);
00238 int gp_camera_folder_put_file (Camera *camera, const char *folder,
00239 CameraFile *file, GPContext *context);
00240 int gp_camera_folder_make_dir (Camera *camera, const char *folder,
00241 const char *name, GPContext *context);
00242 int gp_camera_folder_remove_dir (Camera *camera, const char *folder,
00243 const char *name, GPContext *context);
00244
00251 int gp_camera_file_get_info (Camera *camera, const char *folder,
00252 const char *file, CameraFileInfo *info,
00253 GPContext *context);
00254 int gp_camera_file_set_info (Camera *camera, const char *folder,
00255 const char *file, CameraFileInfo info,
00256 GPContext *context);
00257 int gp_camera_file_get (Camera *camera, const char *folder,
00258 const char *file, CameraFileType type,
00259 CameraFile *camera_file, GPContext *context);
00260 int gp_camera_file_delete (Camera *camera, const char *folder,
00261 const char *file, GPContext *context);
00269 typedef int (* CameraTimeoutFunc) (Camera *camera,
00270 GPContext *context);
00271 typedef unsigned int (* CameraTimeoutStartFunc) (Camera *camera,
00272 unsigned int timeout,
00273 CameraTimeoutFunc func,
00274 void *data);
00275 typedef void (* CameraTimeoutStopFunc) (Camera *camera,
00276 unsigned int id, void *data);
00277 void gp_camera_set_timeout_funcs (Camera *camera,
00278 CameraTimeoutStartFunc start_func,
00279 CameraTimeoutStopFunc stop_func,
00280 void *data);
00281 int gp_camera_start_timeout (Camera *camera, unsigned int timeout,
00282 CameraTimeoutFunc func);
00283 void gp_camera_stop_timeout (Camera *camera, unsigned int id);
00284
00287 #endif