gphoto2-filesys.h

Go to the documentation of this file.
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__ */

Generated on Sun Jul 22 19:29:31 2007 for libgphoto2 photo camera library (libgphoto2) by  doxygen 1.5.0