1use libc::{c_int, c_char, time_t};
4
5#[repr(C)]
6pub struct CameraStorageInformation {
7 pub fields: CameraStorageInfoFields,
8 pub basedir: [c_char; 256],
9 pub label: [c_char; 256],
10 pub description: [c_char; 256],
11 pub storage_type: CameraStorageType,
12 pub fstype: CameraStorageFilesystemType,
13 pub access: CameraStorageAccessType,
14 pub capacitykbytes: u64,
15 pub freekbytes: u64,
16 pub freeimages: u64,
17}
18
19pub type CameraStorageInfoFields = c_int;
20pub const GP_STORAGEINFO_BASE: CameraStorageInfoFields = 1 << 0;
21pub const GP_STORAGEINFO_LABEL: CameraStorageInfoFields = 1 << 1;
22pub const GP_STORAGEINFO_DESCRIPTION: CameraStorageInfoFields = 1 << 2;
23pub const GP_STORAGEINFO_ACCESS: CameraStorageInfoFields = 1 << 3;
24pub const GP_STORAGEINFO_STORAGETYPE: CameraStorageInfoFields = 1 << 4;
25pub const GP_STORAGEINFO_FILESYSTEMTYPE: CameraStorageInfoFields = 1 << 5;
26pub const GP_STORAGEINFO_MAXCAPACITY: CameraStorageInfoFields = 1 << 6;
27pub const GP_STORAGEINFO_FREESPACEKBYTES: CameraStorageInfoFields = 1 << 7;
28pub const GP_STORAGEINFO_FREESPACEIMAGES: CameraStorageInfoFields = 1 << 8;
29
30#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
31#[repr(C)]
32pub enum CameraStorageType {
33 GP_STORAGEINFO_ST_UNKNOWN = 0,
34 GP_STORAGEINFO_ST_FIXED_ROM = 1,
35 GP_STORAGEINFO_ST_REMOVABLE_ROM = 2,
36 GP_STORAGEINFO_ST_FIXED_RAM = 3,
37 GP_STORAGEINFO_ST_REMOVABLE_RAM = 4,
38}
39
40pub const GP_STORAGEINFO_ST_UNKNOWN: CameraStorageType = CameraStorageType::GP_STORAGEINFO_ST_UNKNOWN;
41pub const GP_STORAGEINFO_ST_FIXED_ROM: CameraStorageType = CameraStorageType::GP_STORAGEINFO_ST_FIXED_ROM;
42pub const GP_STORAGEINFO_ST_REMOVABLE_ROM: CameraStorageType = CameraStorageType::GP_STORAGEINFO_ST_REMOVABLE_ROM;
43pub const GP_STORAGEINFO_ST_FIXED_RAM: CameraStorageType = CameraStorageType::GP_STORAGEINFO_ST_FIXED_RAM;
44pub const GP_STORAGEINFO_ST_REMOVABLE_RAM: CameraStorageType = CameraStorageType::GP_STORAGEINFO_ST_REMOVABLE_RAM;
45
46#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
47#[repr(C)]
48pub enum CameraStorageFilesystemType {
49 GP_STORAGEINFO_FST_UNDEFINED = 0,
50 GP_STORAGEINFO_FST_GENERICFLAT = 1,
51 GP_STORAGEINFO_FST_GENERICHIERARCHICAL = 2,
52 GP_STORAGEINFO_FST_DCF = 3,
53}
54
55pub const GP_STORAGEINFO_FST_UNDEFINED: CameraStorageFilesystemType = CameraStorageFilesystemType::GP_STORAGEINFO_FST_UNDEFINED;
56pub const GP_STORAGEINFO_FST_GENERICFLAT: CameraStorageFilesystemType = CameraStorageFilesystemType::GP_STORAGEINFO_FST_GENERICFLAT;
57pub const GP_STORAGEINFO_FST_GENERICHIERARCHICAL: CameraStorageFilesystemType = CameraStorageFilesystemType::GP_STORAGEINFO_FST_GENERICHIERARCHICAL;
58pub const GP_STORAGEINFO_FST_DCF: CameraStorageFilesystemType = CameraStorageFilesystemType::GP_STORAGEINFO_FST_DCF;
59
60#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
61#[repr(C)]
62pub enum CameraStorageAccessType {
63 GP_STORAGEINFO_AC_READWRITE = 0,
64 GP_STORAGEINFO_AC_READONLY = 1,
65 GP_STORAGEINFO_AC_READONLY_WITH_DELETE = 2,
66}
67
68pub const GP_STORAGEINFO_AC_READWRITE: CameraStorageAccessType = CameraStorageAccessType::GP_STORAGEINFO_AC_READWRITE;
69pub const GP_STORAGEINFO_AC_READONLY: CameraStorageAccessType = CameraStorageAccessType::GP_STORAGEINFO_AC_READONLY;
70pub const GP_STORAGEINFO_AC_READONLY_WITH_DELETE: CameraStorageAccessType = CameraStorageAccessType::GP_STORAGEINFO_AC_READONLY_WITH_DELETE;
71
72#[repr(C)]
73pub struct CameraFileInfo {
74 pub preview: CameraFileInfoPreview,
75 pub file: CameraFileInfoFile,
76 pub audio: CameraFileInfoAudio,
77}
78
79#[repr(C)]
80pub struct CameraFileInfoPreview {
81 pub fields: CameraFileInfoFields,
82 pub status: CameraFileStatus,
83 pub size: u64,
84 pub mime_type: [c_char; 64],
85 pub width: u32,
86 pub height: u32,
87}
88
89#[repr(C)]
90pub struct CameraFileInfoFile {
91 pub fields: CameraFileInfoFields,
92 pub status: CameraFileStatus,
93 pub size: u64,
94 pub mime_type: [c_char; 64],
95 pub width: u32,
96 pub height: u32,
97 pub permissions: CameraFilePermissions,
98 pub mtime: time_t,
99}
100
101#[repr(C)]
102pub struct CameraFileInfoAudio {
103 pub fields: CameraFileInfoFields,
104 pub status: CameraFileStatus,
105 pub size: u64,
106 pub mime_type: [c_char; 64],
107}
108
109pub type CameraFileInfoFields = c_int;
110pub const GP_FILE_INFO_NONE: CameraFileInfoFields = 0;
111pub const GP_FILE_INFO_TYPE: CameraFileInfoFields = 1 << 0;
112pub const GP_FILE_INFO_SIZE: CameraFileInfoFields = 1 << 2;
113pub const GP_FILE_INFO_WIDTH: CameraFileInfoFields = 1 << 3;
114pub const GP_FILE_INFO_HEIGHT: CameraFileInfoFields = 1 << 4;
115pub const GP_FILE_INFO_PERMISSIONS: CameraFileInfoFields = 1 << 5;
116pub const GP_FILE_INFO_STATUS: CameraFileInfoFields = 1 << 6;
117pub const GP_FILE_INFO_MTIME: CameraFileInfoFields = 1 << 7;
118pub const GP_FILE_INFO_ALL: CameraFileInfoFields = 0xFF;
119
120pub type CameraFilePermissions = c_int;
121pub const GP_FILE_PERM_NONE: CameraFilePermissions = 0;
122pub const GP_FILE_PERM_READ: CameraFilePermissions = 1 << 0;
123pub const GP_FILE_PERM_DELETE: CameraFilePermissions = 1 << 1;
124pub const GP_FILE_PERM_ALL: CameraFilePermissions = 0xFF;
125
126#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
127#[repr(C)]
128pub enum CameraFileStatus {
129 GP_FILE_STATUS_NOT_DOWNLOADED = 0,
130 GP_FILE_STATUS_DOWNLOADED = 1,
131}