1 /* 2 * Entangle: Tethered Camera Control & Capture 3 * 4 * Copyright (C) 2009-2017 Daniel P. Berrange 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * 19 */ 20 21 #ifndef __ENTANGLE_CAMERA_H__ 22 #define __ENTANGLE_CAMERA_H__ 23 24 #include <glib-object.h> 25 #include <gio/gio.h> 26 27 #include "entangle-control-group.h" 28 #include "entangle-camera-file.h" 29 #include "entangle-progress.h" 30 31 G_BEGIN_DECLS 32 33 #define ENTANGLE_TYPE_CAMERA (entangle_camera_get_type ()) 34 #define ENTANGLE_CAMERA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ENTANGLE_TYPE_CAMERA, EntangleCamera)) 35 #define ENTANGLE_CAMERA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ENTANGLE_TYPE_CAMERA, EntangleCameraClass)) 36 #define ENTANGLE_IS_CAMERA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ENTANGLE_TYPE_CAMERA)) 37 #define ENTANGLE_IS_CAMERA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ENTANGLE_TYPE_CAMERA)) 38 #define ENTANGLE_CAMERA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ENTANGLE_TYPE_CAMERA, EntangleCameraClass)) 39 40 41 typedef struct _EntangleCamera EntangleCamera; 42 typedef struct _EntangleCameraPrivate EntangleCameraPrivate; 43 typedef struct _EntangleCameraClass EntangleCameraClass; 44 45 struct _EntangleCamera 46 { 47 GObject parent; 48 49 EntangleCameraPrivate *priv; 50 }; 51 52 struct _EntangleCameraClass 53 { 54 GObjectClass parent_class; 55 }; 56 57 58 GType entangle_camera_get_type(void) G_GNUC_CONST; 59 60 EntangleCamera *entangle_camera_new(const char *model, 61 const char *port, 62 gboolean hasCapture, 63 gboolean hasPreview, 64 gboolean hasSettings); 65 66 const char *entangle_camera_get_model(EntangleCamera *cam); 67 const char *entangle_camera_get_port(EntangleCamera *cam); 68 69 70 gboolean entangle_camera_connect(EntangleCamera *cam, 71 GError **error); 72 void entangle_camera_connect_async(EntangleCamera *cam, 73 GCancellable *cancellable, 74 GAsyncReadyCallback callback, 75 gpointer user_data); 76 gboolean entangle_camera_connect_finish(EntangleCamera *cam, 77 GAsyncResult *result, 78 GError **error); 79 80 gboolean entangle_camera_disconnect(EntangleCamera *cam, 81 GError **error); 82 void entangle_camera_disconnect_async(EntangleCamera *cam, 83 GCancellable *cancellable, 84 GAsyncReadyCallback callback, 85 gpointer user_data); 86 gboolean entangle_camera_disconnect_finish(EntangleCamera *cam, 87 GAsyncResult *result, 88 GError **error); 89 90 91 gboolean entangle_camera_get_connected(EntangleCamera *cam); 92 93 char *entangle_camera_get_summary(EntangleCamera *cam); 94 char *entangle_camera_get_manual(EntangleCamera *cam); 95 char *entangle_camera_get_driver(EntangleCamera *cam); 96 97 EntangleCameraFile *entangle_camera_capture_image(EntangleCamera *cam, 98 GError **error); 99 void entangle_camera_capture_image_async(EntangleCamera *cam, 100 GCancellable *cancellable, 101 GAsyncReadyCallback callback, 102 gpointer user_data); 103 EntangleCameraFile *entangle_camera_capture_image_finish(EntangleCamera *cam, 104 GAsyncResult *result, 105 GError **error); 106 107 EntangleCameraFile *entangle_camera_preview_image(EntangleCamera *cam, 108 GError **error); 109 void entangle_camera_preview_image_async(EntangleCamera *cam, 110 GCancellable *cancellable, 111 GAsyncReadyCallback callback, 112 gpointer user_data); 113 EntangleCameraFile *entangle_camera_preview_image_finish(EntangleCamera *cam, 114 GAsyncResult *result, 115 GError **error); 116 117 gboolean entangle_camera_download_file(EntangleCamera *cam, 118 EntangleCameraFile *file, 119 GError **error); 120 void entangle_camera_download_file_async(EntangleCamera *cam, 121 EntangleCameraFile *file, 122 GCancellable *cancellable, 123 GAsyncReadyCallback callback, 124 gpointer user_data); 125 gboolean entangle_camera_download_file_finish(EntangleCamera *cam, 126 GAsyncResult *result, 127 GError **err); 128 129 gboolean entangle_camera_delete_file(EntangleCamera *cam, 130 EntangleCameraFile *file, 131 GError **error); 132 void entangle_camera_delete_file_async(EntangleCamera *cam, 133 EntangleCameraFile *file, 134 GCancellable *cancellable, 135 GAsyncReadyCallback callback, 136 gpointer user_data); 137 gboolean entangle_camera_delete_file_finish(EntangleCamera *cam, 138 GAsyncResult *result, 139 GError **error); 140 141 gboolean entangle_camera_process_events(EntangleCamera *cam, 142 guint64 waitms, 143 GError **error); 144 void entangle_camera_process_events_async(EntangleCamera *cam, 145 guint64 waitms, 146 GCancellable *cancellable, 147 GAsyncReadyCallback callback, 148 gpointer user_data); 149 gboolean entangle_camera_process_events_finish(EntangleCamera *cam, 150 GAsyncResult *result, 151 GError **error); 152 153 154 gboolean entangle_camera_set_viewfinder(EntangleCamera *cam, 155 gboolean enabled, 156 GError **error); 157 void entangle_camera_set_viewfinder_async(EntangleCamera *cam, 158 gboolean enabled, 159 GCancellable *cancellable, 160 GAsyncReadyCallback callback, 161 gpointer user_data); 162 gboolean entangle_camera_set_viewfinder_finish(EntangleCamera *cam, 163 GAsyncResult *result, 164 GError **error); 165 166 gboolean entangle_camera_autofocus(EntangleCamera *cam, 167 GError **error); 168 void entangle_camera_autofocus_async(EntangleCamera *cam, 169 GCancellable *cancellable, 170 GAsyncReadyCallback callback, 171 gpointer user_data); 172 gboolean entangle_camera_autofocus_finish(EntangleCamera *cam, 173 GAsyncResult *result, 174 GError **error); 175 176 typedef enum { 177 ENTANGLE_CAMERA_MANUAL_FOCUS_STEP_IN_COARSE, 178 ENTANGLE_CAMERA_MANUAL_FOCUS_STEP_IN_MEDIUM, 179 ENTANGLE_CAMERA_MANUAL_FOCUS_STEP_IN_FINE, 180 ENTANGLE_CAMERA_MANUAL_FOCUS_STEP_OUT_COARSE, 181 ENTANGLE_CAMERA_MANUAL_FOCUS_STEP_OUT_MEDIUM, 182 ENTANGLE_CAMERA_MANUAL_FOCUS_STEP_OUT_FINE, 183 } EntangleCameraManualFocusStep; 184 185 gboolean entangle_camera_manualfocus(EntangleCamera *cam, 186 EntangleCameraManualFocusStep step, 187 GError **error); 188 void entangle_camera_manualfocus_async(EntangleCamera *cam, 189 EntangleCameraManualFocusStep step, 190 GCancellable *cancellable, 191 GAsyncReadyCallback callback, 192 gpointer user_data); 193 gboolean entangle_camera_manualfocus_finish(EntangleCamera *cam, 194 GAsyncResult *result, 195 GError **error); 196 197 gboolean entangle_camera_set_clock(EntangleCamera *cam, 198 gint64 epochsecs, 199 GError **error); 200 void entangle_camera_set_clock_async(EntangleCamera *cam, 201 gint64 epochsecs, 202 GCancellable *cancellable, 203 GAsyncReadyCallback callback, 204 gpointer user_data); 205 gboolean entangle_camera_set_clock_finish(EntangleCamera *cam, 206 GAsyncResult *result, 207 GError **error); 208 209 210 typedef enum { 211 ENTANGLE_CAMERA_CAPTURE_TARGET_RAM, 212 ENTANGLE_CAMERA_CAPTURE_TARGET_CARD, 213 } EntangleCameraCaptureTarget; 214 215 gboolean entangle_camera_set_capture_target(EntangleCamera *cam, 216 EntangleCameraCaptureTarget target, 217 GError **error); 218 void entangle_camera_set_capture_target_async(EntangleCamera *cam, 219 EntangleCameraCaptureTarget target, 220 GCancellable *cancellable, 221 GAsyncReadyCallback callback, 222 gpointer user_data); 223 gboolean entangle_camera_set_capture_target_finish(EntangleCamera *cam, 224 GAsyncResult *result, 225 GError **error); 226 227 228 gboolean entangle_camera_get_has_capture(EntangleCamera *cam); 229 gboolean entangle_camera_get_has_preview(EntangleCamera *cam); 230 gboolean entangle_camera_get_has_settings(EntangleCamera *cam); 231 gboolean entangle_camera_get_has_viewfinder(EntangleCamera *cam); 232 233 gboolean entangle_camera_load_controls(EntangleCamera *cam, 234 GError **error); 235 void entangle_camera_load_controls_async(EntangleCamera *cam, 236 GCancellable *cancellable, 237 GAsyncReadyCallback callback, 238 gpointer user_data); 239 gboolean entangle_camera_load_controls_finish(EntangleCamera *cam, 240 GAsyncResult *result, 241 GError **error); 242 243 gboolean entangle_camera_save_controls(EntangleCamera *cam, 244 GError **error); 245 void entangle_camera_save_controls_async(EntangleCamera *cam, 246 GCancellable *cancellable, 247 GAsyncReadyCallback callback, 248 gpointer user_data); 249 gboolean entangle_camera_save_controls_finish(EntangleCamera *cam, 250 GAsyncResult *result, 251 GError **error); 252 253 254 EntangleControlGroup *entangle_camera_get_controls(EntangleCamera *cam, 255 GError **error); 256 257 void entangle_camera_set_progress(EntangleCamera *cam, EntangleProgress *prog); 258 EntangleProgress *entangle_camera_get_progress(EntangleCamera *cam); 259 260 gboolean entangle_camera_is_mounted(EntangleCamera *cam); 261 262 void entangle_camera_mount_async(EntangleCamera *cam, 263 GCancellable *cancellable, 264 GAsyncReadyCallback callback, 265 gpointer user_data); 266 gboolean entangle_camera_mount_finish(EntangleCamera *cam, 267 GAsyncResult *result, 268 GError **err); 269 270 void entangle_camera_unmount_async(EntangleCamera *cam, 271 GCancellable *cancellable, 272 GAsyncReadyCallback callback, 273 gpointer user_data); 274 gboolean entangle_camera_unmount_finish(EntangleCamera *cam, 275 GAsyncResult *result, 276 GError **err); 277 278 G_END_DECLS 279 280 #endif /* __ENTANGLE_CAMERA_H__ */ 281 282 /* 283 * Local variables: 284 * c-indent-level: 4 285 * c-basic-offset: 4 286 * indent-tabs-mode: nil 287 * tab-width: 8 288 * End: 289 */ 290