libmtp.h

Go to the documentation of this file.
00001 
00028 #ifndef LIBMTP_H_INCLUSION_GUARD
00029 #define LIBMTP_H_INCLUSION_GUARD
00030 
00031 #define LIBMTP_VERSION 0.2.5
00032 #define LIBMTP_VERSION_STRING "0.2.5"
00033 
00034 /* This handles MSVC pecularities */
00035 #ifdef _MSC_VER
00036 #include <windows.h>
00037 #define __WIN32__
00038 #define snprintf _snprintf
00039 #define ssize_t SSIZE_T
00040 #endif
00041 
00042 #include <stdio.h>
00043 #include <usb.h>
00044 #include <stdint.h>
00045 
00046 #ifdef __WIN32__
00047 /*
00048  * Windows specific code, types that do not exist in Windows
00049  * sys/types.h
00050  */
00051 typedef char int8_t;
00052 typedef unsigned char uint8_t;
00053 typedef __int16 int16_t;
00054 typedef unsigned __int16 uint16_t;
00055 typedef __int32 int32_t;
00056 typedef unsigned __int32 uint32_t;
00057 typedef unsigned __int64 uint64_t;
00058 #endif
00059 
00067 typedef enum {
00068   LIBMTP_FILETYPE_WAV,
00069   LIBMTP_FILETYPE_MP3,
00070   LIBMTP_FILETYPE_WMA,
00071   LIBMTP_FILETYPE_OGG,
00072   LIBMTP_FILETYPE_AUDIBLE,
00073   LIBMTP_FILETYPE_MP4,
00074   LIBMTP_FILETYPE_UNDEF_AUDIO,
00075   LIBMTP_FILETYPE_WMV,
00076   LIBMTP_FILETYPE_AVI,
00077   LIBMTP_FILETYPE_MPEG,
00078   LIBMTP_FILETYPE_ASF,
00079   LIBMTP_FILETYPE_QT,
00080   LIBMTP_FILETYPE_UNDEF_VIDEO,
00081   LIBMTP_FILETYPE_JPEG,
00082   LIBMTP_FILETYPE_JFIF,
00083   LIBMTP_FILETYPE_TIFF,
00084   LIBMTP_FILETYPE_BMP,
00085   LIBMTP_FILETYPE_GIF,
00086   LIBMTP_FILETYPE_PICT,
00087   LIBMTP_FILETYPE_PNG,
00088   LIBMTP_FILETYPE_VCALENDAR1,
00089   LIBMTP_FILETYPE_VCALENDAR2,
00090   LIBMTP_FILETYPE_VCARD2,
00091   LIBMTP_FILETYPE_VCARD3,
00092   LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT,
00093   LIBMTP_FILETYPE_WINEXEC,
00094   LIBMTP_FILETYPE_TEXT,
00095   LIBMTP_FILETYPE_HTML,
00096   LIBMTP_FILETYPE_FIRMWARE,
00097   LIBMTP_FILETYPE_AAC,
00098   LIBMTP_FILETYPE_MEDIACARD,
00099   LIBMTP_FILETYPE_FLAC,
00100   LIBMTP_FILETYPE_MP2,
00101   LIBMTP_FILETYPE_M4A,
00102   LIBMTP_FILETYPE_DOC,
00103   LIBMTP_FILETYPE_XML,
00104   LIBMTP_FILETYPE_XLS,
00105   LIBMTP_FILETYPE_PPT,
00106   LIBMTP_FILETYPE_MHT,
00107   LIBMTP_FILETYPE_JP2,
00108   LIBMTP_FILETYPE_JPX,
00109   LIBMTP_FILETYPE_UNKNOWN
00110 } LIBMTP_filetype_t;
00115 typedef enum {
00116   LIBMTP_ERROR_NONE,
00117   LIBMTP_ERROR_GENERAL,
00118   LIBMTP_ERROR_PTP_LAYER,
00119   LIBMTP_ERROR_USB_LAYER,
00120   LIBMTP_ERROR_MEMORY_ALLOCATION,
00121   LIBMTP_ERROR_NO_DEVICE_ATTACHED,
00122   LIBMTP_ERROR_STORAGE_FULL,
00123   LIBMTP_ERROR_CONNECTING,
00124   LIBMTP_ERROR_CANCELLED
00125 } LIBMTP_error_number_t;
00126 typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; 
00127 typedef struct LIBMTP_error_struct LIBMTP_error_t; 
00128 typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; 
00129 typedef struct LIBMTP_file_struct LIBMTP_file_t; 
00130 typedef struct LIBMTP_track_struct LIBMTP_track_t; 
00131 typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t; 
00132 typedef struct LIBMTP_album_struct LIBMTP_album_t; 
00133 typedef struct LIBMTP_folder_struct LIBMTP_folder_t; 
00134 typedef struct LIBMTP_object_struct LIBMTP_object_t; 
00135 typedef struct LIBMTP_filesampledata_struct LIBMTP_filesampledata_t; 
00136 typedef struct LIBMTP_devicestorage_struct LIBMTP_devicestorage_t; 
00148 typedef int (* LIBMTP_progressfunc_t) (uint64_t const sent, uint64_t const total,
00149                                 void const * const data);
00150 
00160 struct LIBMTP_device_entry_struct {
00161   char *vendor; 
00162   uint16_t vendor_id; 
00163   char *product; 
00164   uint16_t product_id; 
00165   uint32_t device_flags; 
00166 };
00167 
00171 struct LIBMTP_error_struct {
00172   LIBMTP_error_number_t errornumber;
00173   char *error_text;
00174   LIBMTP_error_t *next;
00175 };
00176 
00180 struct LIBMTP_mtpdevice_struct {
00184   uint8_t object_bitsize;
00189   void *params;
00194   void *usbinfo;
00200   LIBMTP_devicestorage_t *storage;
00205   LIBMTP_error_t *errorstack;
00207   uint8_t maximum_battery_level;
00209   uint32_t default_music_folder;
00211   uint32_t default_playlist_folder;
00213   uint32_t default_picture_folder;
00215   uint32_t default_video_folder;
00217   uint32_t default_organizer_folder;
00219   uint32_t default_zencast_folder;
00221   uint32_t default_album_folder;
00223   uint32_t default_text_folder;
00225   void *cd;
00226   
00228   LIBMTP_mtpdevice_t *next;
00229 };
00230 
00234 struct LIBMTP_file_struct {
00235   uint32_t item_id; 
00236   uint32_t parent_id; 
00237   char *filename; 
00238   uint64_t filesize; 
00239   LIBMTP_filetype_t filetype; 
00240   LIBMTP_file_t *next; 
00241 };
00242 
00246 struct LIBMTP_track_struct {
00247   uint32_t item_id; 
00248   uint32_t parent_id; 
00249   char *title; 
00250   char *artist; 
00251   char *genre; 
00252   char *album; 
00253   char *date; 
00254   char *filename; 
00255   uint16_t tracknumber; 
00256   uint32_t duration; 
00257   uint32_t samplerate; 
00258   uint16_t nochannels; 
00259   uint32_t wavecodec; 
00260   uint32_t bitrate; 
00261   uint16_t bitratetype; 
00262   uint16_t rating; 
00263   uint32_t usecount; 
00264   uint64_t filesize; 
00265   LIBMTP_filetype_t filetype; 
00266   LIBMTP_track_t *next; 
00267 };
00268 
00272 struct LIBMTP_playlist_struct {
00273   uint32_t playlist_id; 
00274   char *name; 
00275   uint32_t *tracks; 
00276   uint32_t no_tracks; 
00277   LIBMTP_playlist_t *next; 
00278 };
00279 
00283 struct LIBMTP_album_struct {
00284   uint32_t album_id; 
00285   char *name; 
00286   char *artist; 
00287   char *genre; 
00288   uint32_t *tracks; 
00289   uint32_t no_tracks; 
00290   LIBMTP_album_t *next; 
00291 };
00292 
00296 struct LIBMTP_folder_struct {
00297   uint32_t folder_id; 
00298   uint32_t parent_id; 
00299   char *name; 
00300   LIBMTP_folder_t *sibling; 
00301   LIBMTP_folder_t *child; 
00302 };
00303 
00307 struct LIBMTP_filesampledata_struct {
00308   uint32_t width; 
00309   uint32_t height; 
00310   uint32_t duration; 
00311   LIBMTP_filetype_t filetype; 
00312   uint64_t size; 
00313   char *data; 
00314 };
00315 
00319 struct LIBMTP_devicestorage_struct {
00320   uint32_t id; 
00321   uint16_t StorageType; 
00322   uint16_t FilesystemType; 
00323   uint16_t AccessCapability; 
00324   uint64_t MaxCapacity; 
00325   uint64_t FreeSpaceInBytes; 
00326   uint64_t FreeSpaceInObjects; 
00327   char *StorageDescription; 
00328   char *VolumeIdentifier; 
00329   LIBMTP_devicestorage_t *next; 
00330   LIBMTP_devicestorage_t *prev; 
00331 };
00332   
00333 
00336 /* Make functions available for C++ */
00337 #ifdef __cplusplus
00338 extern "C" {
00339 #endif
00340 
00345 void LIBMTP_Init(void);
00346 int LIBMTP_Get_Supported_Devices_List(LIBMTP_device_entry_t ** const, int * const);
00352 int LIBMTP_Detect_Descriptor(uint16_t*,uint16_t*);
00353 LIBMTP_mtpdevice_t *LIBMTP_Get_First_Device(void);
00354 LIBMTP_error_number_t LIBMTP_Get_Connected_Devices(LIBMTP_mtpdevice_t **);
00355 uint32_t LIBMTP_Number_Devices_In_List(LIBMTP_mtpdevice_t *);
00356 void LIBMTP_Release_Device_List(LIBMTP_mtpdevice_t*);
00357 void LIBMTP_Release_Device(LIBMTP_mtpdevice_t*);
00358 void LIBMTP_Dump_Device_Info(LIBMTP_mtpdevice_t*);
00359 int LIBMTP_Reset_Device(LIBMTP_mtpdevice_t*);
00360 char *LIBMTP_Get_Modelname(LIBMTP_mtpdevice_t*);
00361 char *LIBMTP_Get_Serialnumber(LIBMTP_mtpdevice_t*);
00362 char *LIBMTP_Get_Deviceversion(LIBMTP_mtpdevice_t*);
00363 char *LIBMTP_Get_Friendlyname(LIBMTP_mtpdevice_t*);
00364 int LIBMTP_Set_Friendlyname(LIBMTP_mtpdevice_t*, char const * const);
00365 char *LIBMTP_Get_Syncpartner(LIBMTP_mtpdevice_t*);
00366 int LIBMTP_Set_Syncpartner(LIBMTP_mtpdevice_t*, char const * const);
00367 int LIBMTP_Get_Batterylevel(LIBMTP_mtpdevice_t *,
00368                             uint8_t * const,
00369                             uint8_t * const);
00370 int LIBMTP_Get_Secure_Time(LIBMTP_mtpdevice_t *, char ** const);
00371 int LIBMTP_Get_Device_Certificate(LIBMTP_mtpdevice_t *, char ** const);
00372 int LIBMTP_Get_Supported_Filetypes(LIBMTP_mtpdevice_t *, uint16_t ** const, uint16_t * const);
00373 LIBMTP_error_t *LIBMTP_Get_Errorstack(LIBMTP_mtpdevice_t*);
00374 void LIBMTP_Clear_Errorstack(LIBMTP_mtpdevice_t*);
00375 void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t*);
00376 
00377 #define LIBMTP_STORAGE_SORTBY_NOTSORTED 0
00378 #define LIBMTP_STORAGE_SORTBY_FREESPACE 1
00379 #define LIBMTP_STORAGE_SORTBY_MAXSPACE  2
00380 
00381 int LIBMTP_Get_Storage(LIBMTP_mtpdevice_t *, int const);
00382 int LIBMTP_Format_Storage(LIBMTP_mtpdevice_t *, LIBMTP_devicestorage_t *);
00383 
00384 
00390 LIBMTP_file_t *LIBMTP_new_file_t(void);
00391 void LIBMTP_destroy_file_t(LIBMTP_file_t*);
00392 char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t);
00393 LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *);
00394 LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *,
00395       LIBMTP_progressfunc_t const, void const * const);
00396 LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
00397 int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
00398                         LIBMTP_progressfunc_t const, void const * const);
00399 int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
00400                         LIBMTP_progressfunc_t const, void const * const);
00401 int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const,
00402                          LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
00403                          void const * const, uint32_t const);
00404 int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const,
00405                         LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
00406                         void const * const, uint32_t const);
00407 LIBMTP_filesampledata_t *LIBMTP_new_filesampledata_t(void);
00408 void LIBMTP_destroy_filesampledata_t(LIBMTP_filesampledata_t *);
00409 int LIBMTP_Get_Representative_Sample_Format(LIBMTP_mtpdevice_t *,
00410                         LIBMTP_filetype_t const,
00411                         LIBMTP_filesampledata_t **);
00412 int LIBMTP_Send_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
00413                           LIBMTP_filesampledata_t *);
00414 
00420 LIBMTP_track_t *LIBMTP_new_track_t(void);
00421 void LIBMTP_destroy_track_t(LIBMTP_track_t*);
00422 LIBMTP_track_t *LIBMTP_Get_Tracklisting(LIBMTP_mtpdevice_t*);
00423 LIBMTP_track_t *LIBMTP_Get_Tracklisting_With_Callback(LIBMTP_mtpdevice_t*,
00424       LIBMTP_progressfunc_t const, void const * const);
00425 LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t*, uint32_t const);
00426 int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
00427                         LIBMTP_progressfunc_t const, void const * const);
00428 int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
00429                         LIBMTP_progressfunc_t const, void const * const);
00430 int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *,
00431                          char const * const, LIBMTP_track_t * const,
00432                          LIBMTP_progressfunc_t const,
00433                          void const * const, uint32_t const);
00434 int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *,
00435                          int const, LIBMTP_track_t * const,
00436                          LIBMTP_progressfunc_t const,
00437                          void const * const, uint32_t const);
00438 int LIBMTP_Update_Track_Metadata(LIBMTP_mtpdevice_t *,
00439                         LIBMTP_track_t const * const);
00440 int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t);
00448 LIBMTP_folder_t *LIBMTP_new_folder_t(void);
00449 void LIBMTP_destroy_folder_t(LIBMTP_folder_t*);
00450 LIBMTP_folder_t *LIBMTP_Get_Folder_List(LIBMTP_mtpdevice_t*);
00451 LIBMTP_folder_t *LIBMTP_Find_Folder(LIBMTP_folder_t*, uint32_t const);
00452 uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char *, uint32_t);
00461 LIBMTP_playlist_t *LIBMTP_new_playlist_t(void);
00462 void LIBMTP_destroy_playlist_t(LIBMTP_playlist_t *);
00463 LIBMTP_playlist_t *LIBMTP_Get_Playlist_List(LIBMTP_mtpdevice_t *);
00464 LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const);
00465 int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const, uint32_t const);
00466 int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t const * const);
00467 
00473 LIBMTP_album_t *LIBMTP_new_album_t(void);
00474 void LIBMTP_destroy_album_t(LIBMTP_album_t *);
00475 LIBMTP_album_t *LIBMTP_Get_Album_List(LIBMTP_mtpdevice_t *);
00476 LIBMTP_album_t *LIBMTP_Get_Album(LIBMTP_mtpdevice_t *, uint32_t const);
00477 int LIBMTP_Create_New_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t * const, uint32_t const);
00478 int LIBMTP_Update_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t const * const);
00479 
00485 int LIBMTP_Delete_Object(LIBMTP_mtpdevice_t *, uint32_t);
00486 
00489 /* End of C++ exports */
00490 #ifdef __cplusplus
00491 }
00492 #endif
00493 
00494 #endif /* LIBMTP_H_INCLUSION_GUARD */
00495 

Generated on Mon Jan 21 06:35:14 2008 for libmtp by  doxygen 1.5.4