libgphoto2 photo camera library (libgphoto2) API 2.4.12
|
00001 00029 #ifndef __GPHOTO2_FILESYS_H__ 00030 #define __GPHOTO2_FILESYS_H__ 00031 00032 #include <time.h> 00033 00034 #include <gphoto2/gphoto2-context.h> 00035 #include <gphoto2/gphoto2-list.h> 00036 #include <gphoto2/gphoto2-file.h> 00037 00038 #ifdef __cplusplus 00039 extern "C" { 00040 #endif /* __cplusplus */ 00041 00053 typedef enum { 00054 GP_FILE_INFO_NONE = 0, 00055 GP_FILE_INFO_TYPE = 1 << 0, 00056 GP_FILE_INFO_NAME = 1 << 1, 00057 GP_FILE_INFO_SIZE = 1 << 2, 00058 GP_FILE_INFO_WIDTH = 1 << 3, 00059 GP_FILE_INFO_HEIGHT = 1 << 4, 00060 GP_FILE_INFO_PERMISSIONS = 1 << 5, 00061 GP_FILE_INFO_STATUS = 1 << 6, 00062 GP_FILE_INFO_MTIME = 1 << 7, 00063 GP_FILE_INFO_ALL = 0xFF 00064 } CameraFileInfoFields; 00065 00071 typedef enum { 00072 GP_FILE_PERM_NONE = 0, 00073 GP_FILE_PERM_READ = 1 << 0, 00074 GP_FILE_PERM_DELETE = 1 << 1, 00075 GP_FILE_PERM_ALL = 0xFF 00076 } CameraFilePermissions; 00077 00083 typedef enum { 00084 GP_FILE_STATUS_NOT_DOWNLOADED, 00085 GP_FILE_STATUS_DOWNLOADED 00086 } CameraFileStatus; 00087 00094 typedef struct _CameraFileInfoFile { 00095 CameraFileInfoFields fields; 00096 CameraFileStatus status; 00097 unsigned long size; 00098 char type[64]; 00100 unsigned int width; 00101 unsigned int height; 00102 char name[64]; 00103 CameraFilePermissions permissions; 00104 time_t mtime; 00105 } CameraFileInfoFile; 00106 00113 typedef struct _CameraFileInfoPreview { 00114 CameraFileInfoFields fields; 00115 CameraFileStatus status; 00116 unsigned long size; 00117 char type[64]; 00119 unsigned int width; 00120 unsigned int height; 00121 } CameraFileInfoPreview; 00122 00129 typedef struct _CameraFileInfoAudio { 00130 CameraFileInfoFields fields; 00131 CameraFileStatus status; 00132 unsigned long size; 00133 char type[64]; 00134 } CameraFileInfoAudio; 00135 00142 typedef struct _CameraFileInfo { 00143 CameraFileInfoPreview preview; 00144 CameraFileInfoFile file; 00145 CameraFileInfoAudio audio; 00146 } CameraFileInfo; 00147 00154 typedef enum { 00155 GP_STORAGEINFO_BASE = (1<<0), 00158 GP_STORAGEINFO_LABEL = (1<<1), 00161 GP_STORAGEINFO_DESCRIPTION = (1<<2), 00162 GP_STORAGEINFO_ACCESS = (1<<3), 00163 GP_STORAGEINFO_STORAGETYPE = (1<<4), 00164 GP_STORAGEINFO_FILESYSTEMTYPE = (1<<5), 00165 GP_STORAGEINFO_MAXCAPACITY = (1<<6), 00166 GP_STORAGEINFO_FREESPACEKBYTES = (1<<7), 00167 GP_STORAGEINFO_FREESPACEIMAGES = (1<<8) 00168 } CameraStorageInfoFields; 00169 00176 typedef enum { 00177 GP_STORAGEINFO_ST_UNKNOWN = 0, 00178 GP_STORAGEINFO_ST_FIXED_ROM = 1, 00179 GP_STORAGEINFO_ST_REMOVABLE_ROM = 2, 00180 GP_STORAGEINFO_ST_FIXED_RAM = 3, 00181 GP_STORAGEINFO_ST_REMOVABLE_RAM = 4 00182 } CameraStorageType; 00183 00190 typedef enum { 00191 GP_STORAGEINFO_AC_READWRITE = 0, 00192 GP_STORAGEINFO_AC_READONLY = 1, 00193 GP_STORAGEINFO_AC_READONLY_WITH_DELETE = 2 00194 } CameraStorageAccessType; 00195 00202 typedef enum { 00203 GP_STORAGEINFO_FST_UNDEFINED = 0, 00204 GP_STORAGEINFO_FST_GENERICFLAT = 1, 00205 GP_STORAGEINFO_FST_GENERICHIERARCHICAL = 2, 00206 GP_STORAGEINFO_FST_DCF = 3 00207 } CameraStorageFilesystemType; 00208 00215 typedef struct _CameraStorageInformation { 00216 CameraStorageInfoFields fields; 00217 char basedir[256]; 00218 char label[256]; 00219 char description[256]; 00220 CameraStorageType type; 00221 CameraStorageFilesystemType fstype; 00222 CameraStorageAccessType access; 00223 unsigned long capacitykbytes; 00224 unsigned long freekbytes; 00225 unsigned long freeimages; 00226 } CameraStorageInformation; 00227 00235 typedef struct _CameraFilesystem CameraFilesystem; 00236 00237 int gp_filesystem_new (CameraFilesystem **fs); 00238 int gp_filesystem_free (CameraFilesystem *fs); 00239 00240 /* Manual editing */ 00241 int gp_filesystem_append (CameraFilesystem *fs, const char *folder, 00242 const char *filename, GPContext *context); 00243 int gp_filesystem_set_info_noop (CameraFilesystem *fs, const char *folder, 00244 CameraFileInfo info, GPContext *context); 00245 int gp_filesystem_set_file_noop (CameraFilesystem *fs, const char *folder, 00246 CameraFile *file, GPContext *context); 00247 int gp_filesystem_delete_file_noop (CameraFilesystem *fs, const char *folder, 00248 const char *filename, GPContext *context); 00249 int gp_filesystem_reset (CameraFilesystem *fs); 00250 00251 /* Information retrieval */ 00252 int gp_filesystem_count (CameraFilesystem *fs, const char *folder, 00253 GPContext *context); 00254 int gp_filesystem_name (CameraFilesystem *fs, const char *folder, 00255 int filenumber, const char **filename, 00256 GPContext *context); 00257 int gp_filesystem_get_folder (CameraFilesystem *fs, const char *filename, 00258 const char **folder, GPContext *context); 00259 int gp_filesystem_number (CameraFilesystem *fs, const char *folder, 00260 const char *filename, GPContext *context); 00261 00262 /* Listings */ 00263 typedef int (*CameraFilesystemListFunc) (CameraFilesystem *fs, 00264 const char *folder, CameraList *list, 00265 void *data, GPContext *context); 00266 int gp_filesystem_set_list_funcs (CameraFilesystem *fs, 00267 CameraFilesystemListFunc file_list_func, 00268 CameraFilesystemListFunc folder_list_func, 00269 void *data); 00270 int gp_filesystem_list_files (CameraFilesystem *fs, const char *folder, 00271 CameraList *list, GPContext *context); 00272 int gp_filesystem_list_folders (CameraFilesystem *fs, const char *folder, 00273 CameraList *list, GPContext *context); 00274 00275 /* File information */ 00276 typedef int (*CameraFilesystemSetInfoFunc) (CameraFilesystem *fs, 00277 const char *folder, 00278 const char *filename, 00279 CameraFileInfo info, void *data, 00280 GPContext *context); 00281 typedef int (*CameraFilesystemGetInfoFunc) (CameraFilesystem *fs, 00282 const char *folder, 00283 const char *filename, 00284 CameraFileInfo *info, void *data, 00285 GPContext *context); 00286 int gp_filesystem_set_info_funcs (CameraFilesystem *fs, 00287 CameraFilesystemGetInfoFunc get_info_func, 00288 CameraFilesystemSetInfoFunc set_info_func, 00289 void *data); 00290 int gp_filesystem_get_info (CameraFilesystem *fs, const char *folder, 00291 const char *filename, CameraFileInfo *info, 00292 GPContext *context); 00293 int gp_filesystem_set_info (CameraFilesystem *fs, const char *folder, 00294 const char *filename, CameraFileInfo info, 00295 GPContext *context); 00296 00297 /* Files */ 00298 typedef int (*CameraFilesystemGetFileFunc) (CameraFilesystem *fs, 00299 const char *folder, 00300 const char *filename, 00301 CameraFileType type, 00302 CameraFile *file, void *data, 00303 GPContext *context); 00304 typedef int (*CameraFilesystemDeleteFileFunc) (CameraFilesystem *fs, 00305 const char *folder, 00306 const char *filename, 00307 void *data, GPContext *context); 00308 int gp_filesystem_set_file_funcs (CameraFilesystem *fs, 00309 CameraFilesystemGetFileFunc get_file_func, 00310 CameraFilesystemDeleteFileFunc del_file_func, 00311 void *data); 00312 int gp_filesystem_get_file (CameraFilesystem *fs, const char *folder, 00313 const char *filename, CameraFileType type, 00314 CameraFile *file, GPContext *context); 00315 int gp_filesystem_delete_file (CameraFilesystem *fs, const char *folder, 00316 const char *filename, GPContext *context); 00317 00318 /* Folders */ 00319 typedef int (*CameraFilesystemPutFileFunc) (CameraFilesystem *fs, 00320 const char *folder, 00321 CameraFile *file, void *data, 00322 GPContext *context); 00323 typedef int (*CameraFilesystemDeleteAllFunc) (CameraFilesystem *fs, 00324 const char *folder, void *data, 00325 GPContext *context); 00326 typedef int (*CameraFilesystemDirFunc) (CameraFilesystem *fs, 00327 const char *folder, 00328 const char *name, void *data, 00329 GPContext *context); 00330 int gp_filesystem_set_folder_funcs (CameraFilesystem *fs, 00331 CameraFilesystemPutFileFunc put_file_func, 00332 CameraFilesystemDeleteAllFunc delete_all_func, 00333 CameraFilesystemDirFunc make_dir_func, 00334 CameraFilesystemDirFunc remove_dir_func, 00335 void *data); 00336 00337 typedef int (*CameraFilesystemStorageInfoFunc) (CameraFilesystem *fs, 00338 CameraStorageInformation **, 00339 int *nrofstorageinformations, 00340 void *data, GPContext *context); 00341 00342 int gp_filesystem_get_storageinfo (CameraFilesystem *fs, 00343 CameraStorageInformation **, 00344 int *nrofstorageinformations, 00345 GPContext *context); 00346 00347 typedef struct _CameraFilesystemFuncs CameraFilesystemFuncs; 00348 struct _CameraFilesystemFuncs { 00349 CameraFilesystemListFunc file_list_func; 00350 CameraFilesystemListFunc folder_list_func; 00351 CameraFilesystemPutFileFunc put_file_func; 00352 CameraFilesystemDeleteAllFunc delete_all_func; 00353 CameraFilesystemGetInfoFunc get_info_func; 00354 CameraFilesystemSetInfoFunc set_info_func; 00355 CameraFilesystemDirFunc make_dir_func; 00356 CameraFilesystemDirFunc remove_dir_func; 00357 CameraFilesystemGetFileFunc get_file_func; 00358 CameraFilesystemDeleteFileFunc del_file_func; 00359 00360 CameraFilesystemStorageInfoFunc storage_info_func; 00361 00362 /* for later use. Remove one if you add a new function */ 00363 void *unused[31]; 00364 }; 00365 int gp_filesystem_set_funcs (CameraFilesystem *fs, 00366 CameraFilesystemFuncs *funcs, 00367 void *data); 00368 int gp_filesystem_put_file (CameraFilesystem *fs, const char *folder, 00369 CameraFile *file, GPContext *context); 00370 int gp_filesystem_delete_all (CameraFilesystem *fs, const char *folder, 00371 GPContext *context); 00372 int gp_filesystem_make_dir (CameraFilesystem *fs, const char *folder, 00373 const char *name, GPContext *context); 00374 int gp_filesystem_remove_dir (CameraFilesystem *fs, const char *folder, 00375 const char *name, GPContext *context); 00376 00377 /* For debugging */ 00378 int gp_filesystem_dump (CameraFilesystem *fs); 00379 00380 #ifdef __cplusplus 00381 } 00382 #endif /* __cplusplus */ 00383 00384 #endif /* __GPHOTO2_FILESYS_H__ */