gphoto2_sys/
abilities.rs

1// exports from gphoto2-abilities-list.h
2
3use 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}