gphoto2_sys/
filesys.rs

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