gphoto2_sys/
camera.rs

1// exports from gphoto2-camera.h
2
3use libc::{c_int,c_uint,c_char,c_void};
4
5use abilities::CameraAbilities;
6use context::GPContext;
7use file::{CameraFile, CameraFileType};
8use filesys::{CameraFileInfo, CameraStorageInformation};
9use list::CameraList;
10use port::GPPortInfo;
11use widget::CameraWidget;
12
13#[repr(C)]
14pub struct Camera {
15    __private: c_void
16}
17
18#[repr(C)]
19pub struct CameraText {
20    pub text: [c_char; 32*1024],
21}
22
23#[repr(C)]
24pub struct CameraFilePath {
25    pub name: [c_char; 128],
26    pub folder: [c_char; 1024],
27}
28
29#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
30#[repr(C)]
31pub enum CameraCaptureType {
32    GP_CAPTURE_IMAGE = 0,
33    GP_CAPTURE_MOVIE = 1,
34    GP_CAPTURE_SOUND = 2,
35}
36
37pub const GP_CAPTURE_IMAGE: CameraCaptureType = CameraCaptureType::GP_CAPTURE_IMAGE;
38pub const GP_CAPTURE_MOVIE: CameraCaptureType = CameraCaptureType::GP_CAPTURE_MOVIE;
39pub const GP_CAPTURE_SOUND: CameraCaptureType = CameraCaptureType::GP_CAPTURE_SOUND;
40
41#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
42#[repr(C)]
43pub enum CameraEventType {
44    GP_EVENT_UNKNOWN          = 0,
45    GP_EVENT_TIMEOUT          = 1,
46    GP_EVENT_FILE_ADDED       = 2,
47    GP_EVENT_FOLDER_ADDED     = 3,
48    GP_EVENT_CAPTURE_COMPLETE = 4,
49}
50
51pub const GP_EVENT_UNKNOWN:          CameraEventType = CameraEventType::GP_EVENT_UNKNOWN;
52pub const GP_EVENT_TIMEOUT:          CameraEventType = CameraEventType::GP_EVENT_TIMEOUT;
53pub const GP_EVENT_FILE_ADDED:       CameraEventType = CameraEventType::GP_EVENT_FILE_ADDED;
54pub const GP_EVENT_FOLDER_ADDED:     CameraEventType = CameraEventType::GP_EVENT_FOLDER_ADDED;
55pub const GP_EVENT_CAPTURE_COMPLETE: CameraEventType = CameraEventType::GP_EVENT_CAPTURE_COMPLETE;
56
57pub type CameraTimeoutFunc      = extern "C" fn (camera: *mut Camera, context: *mut GPContext) -> c_int;
58pub type CameraTimeoutStartFunc = extern "C" fn (camera: *mut Camera, timeout: c_uint, func: CameraTimeoutFunc, data: *mut c_void) -> c_uint;
59pub type CameraTimeoutStopFunc  = extern "C" fn (camera: *mut Camera, id: c_uint, data: *mut c_void);
60
61extern "C" {
62    pub fn gp_camera_new(camera: *mut *mut Camera) -> c_int;
63
64    // preparing initialization
65    pub fn gp_camera_set_abilities(camera: *mut Camera, abilities: CameraAbilities) -> c_int;
66    pub fn gp_camera_get_abilities(camera: *mut Camera, abilities: *mut CameraAbilities) -> c_int;
67    pub fn gp_camera_set_port_info(camera: *mut Camera, info: GPPortInfo) -> c_int;
68    pub fn gp_camera_get_port_info(camera: *mut Camera, info: *mut GPPortInfo) -> c_int;
69
70    // camera speed
71    pub fn gp_camera_get_port_speed(camera: *mut Camera) -> c_int;
72    pub fn gp_camera_set_port_speed(camera: *mut Camera, speed: c_int) -> c_int;
73
74    // initialization
75    pub fn gp_camera_autodetect(list: *mut CameraList, context: *mut GPContext) -> c_int;
76    pub fn gp_camera_init(camera: *mut Camera, context: *mut GPContext) -> c_int;
77    pub fn gp_camera_exit(camera: *mut Camera, context: *mut GPContext) -> c_int;
78
79    // operations on cameras
80    pub fn gp_camera_ref(camera: *mut Camera) -> c_int;
81    pub fn gp_camera_unref(camera: *mut Camera) -> c_int;
82    pub fn gp_camera_free(camera: *mut Camera) -> c_int;
83    pub fn gp_camera_get_config(camera: *mut Camera, window: *mut *mut CameraWidget, context: *mut GPContext) -> c_int;
84    pub fn gp_camera_set_config(camera: *mut Camera, window: *mut CameraWidget, context: *mut GPContext) -> c_int;
85    pub fn gp_camera_get_summary(camera: *mut Camera, summary: *mut CameraText, context: *mut GPContext) -> c_int;
86    pub fn gp_camera_get_manual(camera: *mut Camera, manual: *mut CameraText, context: *mut GPContext) -> c_int;
87    pub fn gp_camera_get_about(camera: *mut Camera, about: *mut CameraText, context: *mut GPContext) -> c_int;
88    pub fn gp_camera_capture(camera: *mut Camera, capture_type: CameraCaptureType, path: *mut CameraFilePath, context: *mut GPContext) -> c_int;
89    pub fn gp_camera_trigger_capture(camera: *mut Camera, context: *mut GPContext) -> c_int;
90    pub fn gp_camera_capture_preview(camera: *mut Camera, file: *mut CameraFile, context: *mut GPContext) -> c_int;
91    pub fn gp_camera_wait_for_event(camera: *mut Camera, timeout: c_int, eventtype: *mut CameraEventType, eventdata: *mut *mut c_void, context: *mut GPContext) -> c_int;
92    pub fn gp_camera_get_storageinfo(camera: *mut Camera, sifs: *mut *mut CameraStorageInformation, nrofsifs: *mut c_int, context: *mut GPContext) -> c_int;
93
94    // operations on folders
95    pub fn gp_camera_folder_list_files(camera: *mut Camera, folder: *const c_char, list: *mut CameraList, context: *mut GPContext) -> c_int;
96    pub fn gp_camera_folder_list_folders(camera: *mut Camera, folder: *const c_char, list: *mut CameraList, context: *mut GPContext) -> c_int;
97    pub fn gp_camera_folder_delete_all(camera: *mut Camera, folder: *const c_char, context: *mut GPContext) -> c_int;
98    pub fn gp_camera_folder_put_file(camera: *mut Camera, folder: *const c_char, filename: *const c_char, file_type: CameraFileType, file: *mut CameraFile, context: *mut GPContext) -> c_int;
99    pub fn gp_camera_folder_make_dir(camera: *mut Camera, folder: *const c_char, name: *const c_char, context: *mut GPContext) -> c_int;
100    pub fn gp_camera_folder_remove_dir(camera: *mut Camera, folder: *const c_char, name: *const c_char, context: *mut GPContext) -> c_int;
101
102    // operations on files
103    pub fn gp_camera_file_get_info(camera: *mut Camera, folder: *const c_char, file: *const c_char, info: *mut CameraFileInfo, contest: *mut GPContext) -> c_int;
104    pub fn gp_camera_file_set_info(camera: *mut Camera, folder: *const c_char, file: *const c_char, info: CameraFileInfo, context: *mut GPContext) -> c_int;
105    pub fn gp_camera_file_get(camera: *mut Camera, folder: *const c_char, file: *const c_char, file_type: CameraFileType, camera_file: *mut CameraFile, context: *mut GPContext) -> c_int;
106    pub fn gp_camera_file_read(camera: *mut Camera, folder: *const c_char, file: *const c_char, file_type: CameraFileType, offset: u64, buf: *mut c_char, size: *mut u64, context: *mut GPContext) -> c_int;
107    pub fn gp_camera_file_delete(camera: *mut Camera, folder: *const c_char, file: *const c_char, context: *mut GPContext) -> c_int;
108
109    // keep-alive messages
110    pub fn gp_camera_set_timeout_funcs(camera: *mut Camera, start_func: CameraTimeoutStartFunc, stop_func: CameraTimeoutStopFunc, data: *mut c_void);
111    pub fn gp_camera_start_timeout(camera: *mut Camera, timeout: c_uint, func: CameraTimeoutFunc) -> c_int;
112    pub fn gp_camera_stop_timeout(camera: *mut Camera, id: c_uint);
113}