libmtp  0.1.4
libmtp.h
Go to the documentation of this file.
1 
28 #ifndef LIBMTP_H_INCLUSION_GUARD
29 #define LIBMTP_H_INCLUSION_GUARD
30 
31 #define LIBMTP_VERSION 0.1.4
32 
33 /* This handles MSVC pecularities */
34 #ifdef _MSC_VER
35 #include <windows.h>
36 #define __WIN32__
37 #define snprintf _snprintf
38 #define ssize_t SSIZE_T
39 #endif
40 
41 #include <stdio.h>
42 #include <usb.h>
43 #include <stdint.h>
44 
45 #ifdef __WIN32__
46 /*
47  * Windows specific code, types that do not exist in Windows
48  * sys/types.h
49  */
50 typedef char int8_t;
51 typedef unsigned char uint8_t;
52 typedef __int16 int16_t;
53 typedef unsigned __int16 uint16_t;
54 typedef __int32 int32_t;
55 typedef unsigned __int32 uint32_t;
56 typedef unsigned __int64 uint64_t;
57 #endif
58 
66 typedef enum {
67  LIBMTP_FILETYPE_WAV,
68  LIBMTP_FILETYPE_MP3,
69  LIBMTP_FILETYPE_WMA,
70  LIBMTP_FILETYPE_OGG,
71  LIBMTP_FILETYPE_AUDIBLE,
72  LIBMTP_FILETYPE_MP4,
73  LIBMTP_FILETYPE_UNDEF_AUDIO,
74  LIBMTP_FILETYPE_WMV,
75  LIBMTP_FILETYPE_AVI,
76  LIBMTP_FILETYPE_MPEG,
77  LIBMTP_FILETYPE_ASF,
78  LIBMTP_FILETYPE_QT,
79  LIBMTP_FILETYPE_UNDEF_VIDEO,
80  LIBMTP_FILETYPE_JPEG,
81  LIBMTP_FILETYPE_JFIF,
82  LIBMTP_FILETYPE_TIFF,
83  LIBMTP_FILETYPE_BMP,
84  LIBMTP_FILETYPE_GIF,
85  LIBMTP_FILETYPE_PICT,
86  LIBMTP_FILETYPE_PNG,
87  LIBMTP_FILETYPE_VCALENDAR1,
88  LIBMTP_FILETYPE_VCALENDAR2,
89  LIBMTP_FILETYPE_VCARD2,
90  LIBMTP_FILETYPE_VCARD3,
91  LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT,
92  LIBMTP_FILETYPE_WINEXEC,
93  LIBMTP_FILETYPE_TEXT,
94  LIBMTP_FILETYPE_HTML,
95  LIBMTP_FILETYPE_FIRMWARE,
96  LIBMTP_FILETYPE_AAC,
97  LIBMTP_FILETYPE_MEDIACARD,
98  LIBMTP_FILETYPE_FLAC,
99  LIBMTP_FILETYPE_MP2,
100  LIBMTP_FILETYPE_M4A,
101  LIBMTP_FILETYPE_DOC,
102  LIBMTP_FILETYPE_XML,
103  LIBMTP_FILETYPE_XLS,
104  LIBMTP_FILETYPE_PPT,
105  LIBMTP_FILETYPE_MHT,
106  LIBMTP_FILETYPE_JP2,
107  LIBMTP_FILETYPE_JPX,
108  LIBMTP_FILETYPE_UNKNOWN
109 } LIBMTP_filetype_t;
114 typedef enum {
115  LIBMTP_ERROR_NONE,
116  LIBMTP_ERROR_GENERAL,
117  LIBMTP_ERROR_PTP_LAYER,
118  LIBMTP_ERROR_USB_LAYER,
119  LIBMTP_ERROR_MEMORY_ALLOCATION,
120  LIBMTP_ERROR_NO_DEVICE_ATTACHED,
121  LIBMTP_ERROR_STORAGE_FULL,
122  LIBMTP_ERROR_CONNECTING
132 typedef struct LIBMTP_object_struct LIBMTP_object_t;
146 typedef int (* LIBMTP_progressfunc_t) (uint64_t const sent, uint64_t const total,
147  void const * const data);
148 
159  char *name;
160  uint16_t vendor_id;
161  uint16_t product_id;
162  uint32_t device_flags;
163 };
164 
169  LIBMTP_error_number_t errornumber;
170  char *error_text;
171  LIBMTP_error_t *next;
172 };
173 
184  void *params;
189  void *usbinfo;
220  void *cd;
221 
224 };
225 
230  uint32_t item_id;
231  uint32_t parent_id;
232  char *filename;
233  uint64_t filesize;
234  LIBMTP_filetype_t filetype;
236 };
237 
242  uint32_t item_id;
243  uint32_t parent_id;
244  char *title;
245  char *artist;
246  char *genre;
247  char *album;
248  char *date;
249  char *filename;
250  uint16_t tracknumber;
251  uint32_t duration;
252  uint32_t samplerate;
253  uint16_t nochannels;
254  uint32_t wavecodec;
255  uint32_t bitrate;
256  uint16_t bitratetype;
257  uint16_t rating;
258  uint32_t usecount;
259  uint64_t filesize;
260  LIBMTP_filetype_t filetype;
262 };
263 
268  uint32_t playlist_id;
269  char *name;
270  uint32_t *tracks;
271  uint32_t no_tracks;
273 };
274 
279  uint32_t album_id;
280  char *name;
281  uint32_t *tracks;
282  uint32_t no_tracks;
284 };
285 
290  uint32_t folder_id;
291  uint32_t parent_id;
292  char *name;
295 };
296 
301  uint32_t width;
302  uint32_t height;
303  uint32_t duration;
304  LIBMTP_filetype_t filetype;
305  uint64_t size;
306  char *data;
307 };
308 
313  uint32_t id;
314  uint16_t StorageType;
315  uint16_t FilesystemType;
316  uint16_t AccessCapability;
317  uint64_t MaxCapacity;
318  uint64_t FreeSpaceInBytes;
324 };
325 
326 
329 /* Make functions available for C++ */
330 #ifdef __cplusplus
331 extern "C" {
332 #endif
333 
338 void LIBMTP_Init(void);
345 int LIBMTP_Detect_Descriptor(uint16_t*,uint16_t*);
356 int LIBMTP_Set_Friendlyname(LIBMTP_mtpdevice_t*, char const * const);
358 int LIBMTP_Set_Syncpartner(LIBMTP_mtpdevice_t*, char const * const);
360  uint8_t * const,
361  uint8_t * const);
362 int LIBMTP_Get_Secure_Time(LIBMTP_mtpdevice_t *, char ** const);
364 int LIBMTP_Get_Supported_Filetypes(LIBMTP_mtpdevice_t *, uint16_t ** const, uint16_t * const);
368 
369 #define LIBMTP_STORAGE_SORTBY_NOTSORTED 0
370 #define LIBMTP_STORAGE_SORTBY_FREESPACE 1
371 #define LIBMTP_STORAGE_SORTBY_MAXSPACE 2
372 
373 int LIBMTP_Get_Storage(LIBMTP_mtpdevice_t *, int const);
375 
376 
384 char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t);
387  LIBMTP_progressfunc_t const, void const * const);
389 int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
390  LIBMTP_progressfunc_t const, void const * const);
391 int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
392  LIBMTP_progressfunc_t const, void const * const);
393 int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const,
394  LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
395  void const * const, uint32_t const);
397  LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
398  void const * const, uint32_t const);
402  LIBMTP_filetype_t const,
406 
416  LIBMTP_progressfunc_t const, void const * const);
418 int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
419  LIBMTP_progressfunc_t const, void const * const);
420 int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
421  LIBMTP_progressfunc_t const, void const * const);
423  char const * const, LIBMTP_track_t * const,
424  LIBMTP_progressfunc_t const,
425  void const * const, uint32_t const);
427  int const, LIBMTP_track_t * const,
428  LIBMTP_progressfunc_t const,
429  void const * const, uint32_t const);
431  LIBMTP_track_t const * const);
432 int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t);
444 uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char *, uint32_t);
457 int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const, uint32_t const);
459 
469 int LIBMTP_Create_New_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t * const, uint32_t const);
471 
478 
481 /* End of C++ exports */
482 #ifdef __cplusplus
483 }
484 #endif
485 
486 #endif /* LIBMTP_H_INCLUSION_GUARD */
487 
LIBMTP_album_t * LIBMTP_Get_Album(LIBMTP_mtpdevice_t *, uint32_t const)
Definition: libmtp.c:4455
uint32_t default_music_folder
Definition: libmtp.h:204
int LIBMTP_Get_Device_Certificate(LIBMTP_mtpdevice_t *, char **const)
Definition: libmtp.c:1732
LIBMTP_folder_t * sibling
Definition: libmtp.h:293
int LIBMTP_Set_Syncpartner(LIBMTP_mtpdevice_t *, char const *const)
Definition: libmtp.c:1538
uint16_t AccessCapability
Definition: libmtp.h:316
char * genre
Definition: libmtp.h:246
LIBMTP_filetype_t filetype
Definition: libmtp.h:260
int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const, LIBMTP_file_t *const, LIBMTP_progressfunc_t const, void const *const, uint32_t const)
Definition: libmtp.c:3188
void LIBMTP_Release_Device(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:934
LIBMTP_file_t * next
Definition: libmtp.h:235
void LIBMTP_destroy_file_t(LIBMTP_file_t *)
Definition: libmtp.c:1917
Definition: libmtp.h:241
LIBMTP_track_t * next
Definition: libmtp.h:261
Definition: libmtp.h:278
LIBMTP_file_t * LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1933
void LIBMTP_Clear_Errorstack(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1033
char * name
Definition: libmtp.h:292
uint64_t FreeSpaceInBytes
Definition: libmtp.h:318
LIBMTP_album_t * next
Definition: libmtp.h:283
void LIBMTP_destroy_track_t(LIBMTP_track_t *)
Definition: libmtp.c:2164
int LIBMTP_Create_New_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t *const, uint32_t const)
Definition: libmtp.c:4516
LIBMTP_file_t * LIBMTP_new_file_t(void)
Definition: libmtp.c:1897
LIBMTP_file_t * LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const)
Definition: libmtp.c:2056
uint16_t nochannels
Definition: libmtp.h:253
uint32_t parent_id
Definition: libmtp.h:291
uint8_t maximum_battery_level
Definition: libmtp.h:202
LIBMTP_filesampledata_t * LIBMTP_new_filesampledata_t(void)
Definition: libmtp.c:4548
char * name
Definition: libmtp.h:280
int(* LIBMTP_progressfunc_t)(uint64_t const sent, uint64_t const total, void const *const data)
Definition: libmtp.h:146
Definition: libmtp.h:177
int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t *const, uint32_t const)
Definition: libmtp.c:4282
uint16_t product_id
Definition: libmtp.h:161
struct LIBMTP_object_struct LIBMTP_object_t
Definition: libmtp.h:132
char * title
Definition: libmtp.h:244
Definition: libmtp.h:229
Definition: libmtp.h:312
uint32_t default_zencast_folder
Definition: libmtp.h:214
uint64_t FreeSpaceInObjects
Definition: libmtp.h:319
uint16_t bitratetype
Definition: libmtp.h:256
uint32_t bitrate
Definition: libmtp.h:255
uint32_t parent_id
Definition: libmtp.h:243
LIBMTP_error_number_t
Definition: libmtp.h:114
char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t)
Definition: libmtp.c:313
LIBMTP_error_number_t LIBMTP_Get_Connected_Devices(LIBMTP_mtpdevice_t **)
Definition: libmtp.c:893
uint16_t StorageType
Definition: libmtp.h:314
uint32_t item_id
Definition: libmtp.h:242
LIBMTP_track_t * LIBMTP_Get_Tracklisting_With_Callback(LIBMTP_mtpdevice_t *, LIBMTP_progressfunc_t const, void const *const)
Definition: libmtp.c:2395
int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *, char const *const, LIBMTP_track_t *const, LIBMTP_progressfunc_t const, void const *const, uint32_t const)
Definition: libmtp.c:2739
LIBMTP_folder_t * child
Definition: libmtp.h:294
uint16_t rating
Definition: libmtp.h:257
int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t const *const)
Definition: libmtp.c:4318
uint32_t * tracks
Definition: libmtp.h:281
uint16_t FilesystemType
Definition: libmtp.h:315
uint32_t wavecodec
Definition: libmtp.h:254
void * usbinfo
Definition: libmtp.h:189
int LIBMTP_Detect_Descriptor(uint16_t *, uint16_t *)
Definition: libusb-glue.c:508
LIBMTP_devicestorage_t * storage
Definition: libmtp.h:195
uint32_t default_video_folder
Definition: libmtp.h:210
LIBMTP_devicestorage_t * prev
Definition: libmtp.h:323
uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t *, char *, uint32_t)
Definition: libmtp.c:3830
uint32_t album_id
Definition: libmtp.h:279
char * LIBMTP_Get_Deviceversion(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1415
uint32_t default_organizer_folder
Definition: libmtp.h:212
void LIBMTP_destroy_filesampledata_t(LIBMTP_filesampledata_t *)
Definition: libmtp.c:4566
void LIBMTP_destroy_playlist_t(LIBMTP_playlist_t *)
Definition: libmtp.c:3898
uint32_t duration
Definition: libmtp.h:251
uint32_t samplerate
Definition: libmtp.h:252
LIBMTP_playlist_t * next
Definition: libmtp.h:272
int LIBMTP_Get_Batterylevel(LIBMTP_mtpdevice_t *, uint8_t *const, uint8_t *const)
Definition: libmtp.c:1603
void * params
Definition: libmtp.h:184
char * filename
Definition: libmtp.h:249
Definition: libmtp.h:267
LIBMTP_folder_t * LIBMTP_Find_Folder(LIBMTP_folder_t *, uint32_t const)
Definition: libmtp.c:3728
uint32_t device_flags
Definition: libmtp.h:162
uint32_t no_tracks
Definition: libmtp.h:282
uint64_t size
Definition: libmtp.h:305
uint32_t default_playlist_folder
Definition: libmtp.h:206
uint32_t usecount
Definition: libmtp.h:258
char * name
Definition: libmtp.h:269
LIBMTP_mtpdevice_t * LIBMTP_Get_First_Device(void)
Definition: libmtp.c:612
Definition: libmtp.h:158
char * filename
Definition: libmtp.h:232
LIBMTP_track_t * LIBMTP_new_track_t(void)
Definition: libmtp.c:2130
void LIBMTP_destroy_folder_t(LIBMTP_folder_t *)
Definition: libmtp.c:3697
char * LIBMTP_Get_Syncpartner(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1500
char * LIBMTP_Get_Friendlyname(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1437
uint32_t playlist_id
Definition: libmtp.h:268
void LIBMTP_Dump_Device_Info(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1274
LIBMTP_folder_t * LIBMTP_new_folder_t(void)
Definition: libmtp.c:3677
void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1060
LIBMTP_playlist_t * LIBMTP_Get_Playlist_List(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:3923
LIBMTP_error_t * errorstack
Definition: libmtp.h:200
int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const *const, LIBMTP_file_t *const, LIBMTP_progressfunc_t const, void const *const, uint32_t const)
Definition: libmtp.c:3113
uint32_t default_picture_folder
Definition: libmtp.h:208
int LIBMTP_Get_Supported_Devices_List(LIBMTP_device_entry_t **const, int *const)
Definition: libusb-glue.c:297
uint32_t LIBMTP_Number_Devices_In_List(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:875
LIBMTP_track_t * LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t *, uint32_t const)
Definition: libmtp.c:2489
char * LIBMTP_Get_Modelname(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1378
uint32_t default_album_folder
Definition: libmtp.h:216
LIBMTP_album_t * LIBMTP_Get_Album_List(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:4394
int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const, LIBMTP_track_t *const, LIBMTP_progressfunc_t const, void const *const, uint32_t const)
Definition: libmtp.c:2824
LIBMTP_track_t * LIBMTP_Get_Tracklisting(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:2355
int LIBMTP_Send_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, LIBMTP_filesampledata_t *)
Definition: libmtp.c:4692
LIBMTP_filetype_t filetype
Definition: libmtp.h:304
uint64_t filesize
Definition: libmtp.h:259
uint32_t no_tracks
Definition: libmtp.h:271
char * date
Definition: libmtp.h:248
LIBMTP_playlist_t * LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const)
Definition: libmtp.c:3991
int LIBMTP_Format_Storage(LIBMTP_mtpdevice_t *, LIBMTP_devicestorage_t *)
Definition: libmtp.c:1640
uint32_t default_text_folder
Definition: libmtp.h:218
char * LIBMTP_Get_Serialnumber(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1396
int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t)
Definition: libmtp.c:3655
void LIBMTP_Init(void)
Definition: libmtp.c:299
Definition: libmtp.h:300
uint32_t parent_id
Definition: libmtp.h:231
int LIBMTP_Get_Supported_Filetypes(LIBMTP_mtpdevice_t *, uint16_t **const, uint16_t *const)
Definition: libmtp.c:1752
uint64_t filesize
Definition: libmtp.h:233
uint32_t id
Definition: libmtp.h:313
int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t *, uint32_t, char const *const, LIBMTP_progressfunc_t const, void const *const)
Definition: libmtp.c:2567
Definition: libmtp.h:168
char * data
Definition: libmtp.h:306
uint32_t height
Definition: libmtp.h:302
void * cd
Definition: libmtp.h:220
int LIBMTP_Delete_Object(LIBMTP_mtpdevice_t *, uint32_t)
Definition: libmtp.c:3633
LIBMTP_playlist_t * LIBMTP_new_playlist_t(void)
Definition: libmtp.c:3877
char * VolumeIdentifier
Definition: libmtp.h:321
uint32_t width
Definition: libmtp.h:301
uint32_t folder_id
Definition: libmtp.h:290
uint16_t tracknumber
Definition: libmtp.h:250
int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t *, uint32_t const, int const, LIBMTP_progressfunc_t const, void const *const)
Definition: libmtp.c:2706
uint8_t interface_number
Definition: libmtp.h:179
int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t *, uint32_t, char const *const, LIBMTP_progressfunc_t const, void const *const)
Definition: libmtp.c:2682
void LIBMTP_Release_Device_List(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:917
uint64_t MaxCapacity
Definition: libmtp.h:317
uint32_t duration
Definition: libmtp.h:303
LIBMTP_devicestorage_t * next
Definition: libmtp.h:322
int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t *, uint32_t const, int const, LIBMTP_progressfunc_t const, void const *const)
Definition: libmtp.c:2622
uint32_t * tracks
Definition: libmtp.h:270
LIBMTP_album_t * LIBMTP_new_album_t(void)
Definition: libmtp.c:4352
LIBMTP_file_t * LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *, LIBMTP_progressfunc_t const, void const *const)
Definition: libmtp.c:1973
int LIBMTP_Set_Friendlyname(LIBMTP_mtpdevice_t *, char const *const)
Definition: libmtp.c:1470
uint16_t vendor_id
Definition: libmtp.h:160
char * album
Definition: libmtp.h:247
void LIBMTP_destroy_album_t(LIBMTP_album_t *)
Definition: libmtp.c:4372
LIBMTP_mtpdevice_t * next
Definition: libmtp.h:223
char * artist
Definition: libmtp.h:245
int LIBMTP_Get_Storage(LIBMTP_mtpdevice_t *, int const)
Definition: libmtp.c:1795
int LIBMTP_Get_Secure_Time(LIBMTP_mtpdevice_t *, char **const)
Definition: libmtp.c:1718
Definition: libmtp.h:289
char * StorageDescription
Definition: libmtp.h:320
uint32_t item_id
Definition: libmtp.h:230
int LIBMTP_Update_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t const *const)
Definition: libmtp.c:4793
int LIBMTP_Update_Track_Metadata(LIBMTP_mtpdevice_t *, LIBMTP_track_t const *const)
Definition: libmtp.c:3462
LIBMTP_filetype_t filetype
Definition: libmtp.h:234
char * name
Definition: libmtp.h:159
int LIBMTP_Get_Representative_Sample_Format(LIBMTP_mtpdevice_t *, LIBMTP_filetype_t const, LIBMTP_filesampledata_t **)
Definition: libmtp.c:4600
LIBMTP_error_t * LIBMTP_Get_Errorstack(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:1018
LIBMTP_folder_t * LIBMTP_Get_Folder_List(LIBMTP_mtpdevice_t *)
Definition: libmtp.c:3758