1use libc::{c_int, c_char};
4
5use context::GPContext;
6use list::CameraList;
7use port::{GPPortInfoList, GPPortType};
8
9#[repr(C)]
10pub struct CameraAbilitiesList {
11 pub count: c_int,
12 pub abilities: *mut CameraAbilities,
13}
14
15#[repr(C)]
16pub struct CameraAbilities {
17 pub model: [c_char; 128],
18 pub status: CameraDriverStatus,
19 pub port: GPPortType,
20 pub speed: [c_int; 64],
21 pub operations: CameraOperation,
22 pub file_operations: CameraFileOperation,
23 pub folder_operations: CameraFolderOperation,
24 pub usb_vendor: c_int,
25 pub usb_product: c_int,
26 pub usb_class: c_int,
27 pub usb_subclass: c_int,
28 pub usb_protocol: c_int,
29 pub library: [c_char; 1024],
30 pub id: [c_char; 1024],
31 pub device_type: GphotoDeviceType,
32 reserved2: c_int,
33 reserved3: c_int,
34 reserved4: c_int,
35 reserved5: c_int,
36 reserved6: c_int,
37 reserved7: c_int,
38 reserved8: c_int,
39}
40
41#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
42#[repr(C)]
43pub enum CameraDriverStatus {
44 GP_DRIVER_STATUS_PRODUCTION = 0,
45 GP_DRIVER_STATUS_TESTING = 1,
46 GP_DRIVER_STATUS_EXPERIMENTAL = 2,
47 GP_DRIVER_STATUS_DEPRECATED = 3,
48}
49
50pub const GP_DRIVER_STATUS_PRODUCTION: CameraDriverStatus = CameraDriverStatus::GP_DRIVER_STATUS_PRODUCTION;
51pub const GP_DRIVER_STATUS_TESTING: CameraDriverStatus = CameraDriverStatus::GP_DRIVER_STATUS_TESTING;
52pub const GP_DRIVER_STATUS_EXPERIMENTAL: CameraDriverStatus = CameraDriverStatus::GP_DRIVER_STATUS_EXPERIMENTAL;
53pub const GP_DRIVER_STATUS_DEPRECATED: CameraDriverStatus = CameraDriverStatus::GP_DRIVER_STATUS_DEPRECATED;
54
55
56#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
57#[repr(C)]
58pub enum GphotoDeviceType {
59 GP_DEVICE_STILL_CAMERA = 0,
60 GP_DEVICE_AUDIO_PLAYER = 1,
61}
62
63pub const GP_DEVICE_STILL_CAMERA: GphotoDeviceType = GphotoDeviceType::GP_DEVICE_STILL_CAMERA;
64pub const GP_DEVICE_AUDIO_PLAYER: GphotoDeviceType = GphotoDeviceType::GP_DEVICE_AUDIO_PLAYER;
65
66pub type CameraOperation = c_int;
67pub const GP_OPERATION_NONE: CameraOperation = 0;
68pub const GP_OPERATION_CAPTURE_IMAGE: CameraOperation = 1 << 0;
69pub const GP_OPERATION_CAPTURE_VIDEO: CameraOperation = 1 << 1;
70pub const GP_OPERATION_CAPTURE_AUDIO: CameraOperation = 1 << 2;
71pub const GP_OPERATION_CAPTURE_PREVIEW: CameraOperation = 1 << 3;
72pub const GP_OPERATION_CONFIG: CameraOperation = 1 << 4;
73pub const GP_OPERATION_TRIGGER_CAPTURE: CameraOperation = 1 << 5;
74
75pub type CameraFileOperation = c_int;
76pub const GP_FILE_OPERATION_NONE: CameraFileOperation = 0;
77pub const GP_FILE_OPERATION_DELETE: CameraFileOperation = 1 << 1;
78pub const GP_FILE_OPERATION_PREVIEW: CameraFileOperation = 1 << 3;
79pub const GP_FILE_OPERATION_RAW: CameraFileOperation = 1 << 4;
80pub const GP_FILE_OPERATION_AUDIO: CameraFileOperation = 1 << 5;
81pub const GP_FILE_OPERATION_EXIF: CameraFileOperation = 1 << 6;
82
83pub type CameraFolderOperation = c_int;
84pub const GP_FOLDER_OPERATION_NONE: CameraFolderOperation = 0;
85pub const GP_FOLDER_OPERATION_DELETE_ALL: CameraFolderOperation = 1 << 0;
86pub const GP_FOLDER_OPERATION_PUT_FILE: CameraFolderOperation = 1 << 1;
87pub const GP_FOLDER_OPERATION_MAKE_DIR: CameraFolderOperation = 1 << 2;
88pub const GP_FOLDER_OPERATION_REMOVE_DIR: CameraFolderOperation = 1 << 3;
89
90extern "C" {
91 pub fn gp_abilities_list_new(list: *mut *mut CameraAbilitiesList) -> c_int;
92 pub fn gp_abilities_list_free(list: *mut CameraAbilitiesList) -> c_int;
93 pub fn gp_abilities_list_load(list: *mut CameraAbilitiesList, context: *mut GPContext) -> c_int;
94 pub fn gp_abilities_list_load_dir(list: *mut CameraAbilitiesList, dir: *const c_char, context: *mut GPContext) -> c_int;
95 pub fn gp_abilities_list_reset(list: *mut CameraAbilitiesList) -> c_int;
96 pub fn gp_abilities_list_detect(list: *mut CameraAbilitiesList, info_list: *mut GPPortInfoList, l: *mut CameraList, context: *mut GPContext) -> c_int;
97 pub fn gp_abilities_list_append(list: *mut CameraAbilitiesList, abilities: CameraAbilities) -> c_int;
98 pub fn gp_abilities_list_count(list: *mut CameraAbilitiesList) -> c_int;
99 pub fn gp_abilities_list_lookup_model(list: *mut CameraAbilitiesList, model: *const c_char) -> c_int;
100 pub fn gp_abilities_list_get_abilities(list: *mut CameraAbilitiesList, index: c_int, abilities: *mut CameraAbilities) -> c_int;
101 pub fn gp_message_codeset(_: *const c_char) -> *const c_char;
102}