libmtp.h | libmtp.h | |||
---|---|---|---|---|
skipping to change at line 32 | skipping to change at line 32 | |||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, | * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |||
* Boston, MA 02111-1307, USA. | * Boston, MA 02111-1307, USA. | |||
* | * | |||
* <code> | * <code> | |||
* #include <libmtp.h> | * #include <libmtp.h> | |||
* </code> | * </code> | |||
*/ | */ | |||
#ifndef LIBMTP_H_INCLUSION_GUARD | #ifndef LIBMTP_H_INCLUSION_GUARD | |||
#define LIBMTP_H_INCLUSION_GUARD | #define LIBMTP_H_INCLUSION_GUARD | |||
#define LIBMTP_VERSION 0.3.7 | #define LIBMTP_VERSION 1.0.0 | |||
#define LIBMTP_VERSION_STRING "0.3.7" | #define LIBMTP_VERSION_STRING "1.0.0" | |||
/* This handles MSVC pecularities */ | /* This handles MSVC pecularities */ | |||
#ifdef _MSC_VER | #ifdef _MSC_VER | |||
#include <windows.h> | #include <windows.h> | |||
#define __WIN32__ | #define __WIN32__ | |||
#define snprintf _snprintf | #define snprintf _snprintf | |||
#define ssize_t SSIZE_T | #define ssize_t SSIZE_T | |||
/* | /* | |||
* Types that do not exist in Windows | * Types that do not exist in Windows | |||
* sys/types.h, but they exist in mingw32 | * sys/types.h, but they exist in mingw32 | |||
skipping to change at line 108 | skipping to change at line 108 | |||
LIBMTP_FILETYPE_FLAC, | LIBMTP_FILETYPE_FLAC, | |||
LIBMTP_FILETYPE_MP2, | LIBMTP_FILETYPE_MP2, | |||
LIBMTP_FILETYPE_M4A, | LIBMTP_FILETYPE_M4A, | |||
LIBMTP_FILETYPE_DOC, | LIBMTP_FILETYPE_DOC, | |||
LIBMTP_FILETYPE_XML, | LIBMTP_FILETYPE_XML, | |||
LIBMTP_FILETYPE_XLS, | LIBMTP_FILETYPE_XLS, | |||
LIBMTP_FILETYPE_PPT, | LIBMTP_FILETYPE_PPT, | |||
LIBMTP_FILETYPE_MHT, | LIBMTP_FILETYPE_MHT, | |||
LIBMTP_FILETYPE_JP2, | LIBMTP_FILETYPE_JP2, | |||
LIBMTP_FILETYPE_JPX, | LIBMTP_FILETYPE_JPX, | |||
LIBMTP_FILETYPE_ALBUM, | ||||
LIBMTP_FILETYPE_PLAYLIST, | ||||
LIBMTP_FILETYPE_UNKNOWN | LIBMTP_FILETYPE_UNKNOWN | |||
} LIBMTP_filetype_t; | } LIBMTP_filetype_t; | |||
/** | /** | |||
* \def LIBMTP_FILETYPE_IS_AUDIO | * \def LIBMTP_FILETYPE_IS_AUDIO | |||
* Audio filetype test. | * Audio filetype test. | |||
* | * | |||
* For filetypes that can be either audio | * For filetypes that can be either audio | |||
* or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO | * or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO | |||
*/ | */ | |||
#define LIBMTP_FILETYPE_IS_AUDIO(a)\ | #define LIBMTP_FILETYPE_IS_AUDIO(a)\ | |||
(a == LIBMTP_FILETYPE_WAV ||\ | (a == LIBMTP_FILETYPE_WAV ||\ | |||
a == LIBMTP_FILETYPE_MP3 ||\ | a == LIBMTP_FILETYPE_MP3 ||\ | |||
a == LIBMTP_FILETYPE_MP2 ||\ | a == LIBMTP_FILETYPE_MP2 ||\ | |||
a == LIBMTP_FILETYPE_WMA ||\ | a == LIBMTP_FILETYPE_WMA ||\ | |||
a == LIBMTP_FILETYPE_OGG ||\ | a == LIBMTP_FILETYPE_OGG ||\ | |||
a == LIBMTP_FILETYPE_FLAC ||\ | a == LIBMTP_FILETYPE_FLAC ||\ | |||
a == LIBMTP_FILETYPE_AAC ||\ | a == LIBMTP_FILETYPE_AAC ||\ | |||
a == LIBMTP_FILETYPE_M4A ||\ | a == LIBMTP_FILETYPE_M4A ||\ | |||
a == LIBMTP_FILETYPE_AUDIBLE ||\ | ||||
a == LIBMTP_FILETYPE_UNDEF_AUDIO) | a == LIBMTP_FILETYPE_UNDEF_AUDIO) | |||
/** | /** | |||
* \def LIBMTP_FILETYPE_IS_VIDEO | * \def LIBMTP_FILETYPE_IS_VIDEO | |||
* Video filetype test. | * Video filetype test. | |||
* | * | |||
* For filetypes that can be either audio | * For filetypes that can be either audio | |||
* or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO | * or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO | |||
*/ | */ | |||
#define LIBMTP_FILETYPE_IS_VIDEO(a)\ | #define LIBMTP_FILETYPE_IS_VIDEO(a)\ | |||
skipping to change at line 195 | skipping to change at line 198 | |||
/** | /** | |||
* \def LIBMTP_FILETYPE_IS_CALENDAR | * \def LIBMTP_FILETYPE_IS_CALENDAR | |||
* Calendar and Appointment filetype test | * Calendar and Appointment filetype test | |||
*/ | */ | |||
#define LIBMTP_FILETYPE_IS_CALENDAR(a)\ | #define LIBMTP_FILETYPE_IS_CALENDAR(a)\ | |||
(a == LIBMTP_FILETYPE_VCALENDAR1 ||\ | (a == LIBMTP_FILETYPE_VCALENDAR1 ||\ | |||
a == LIBMTP_FILETYPE_VCALENDAR2) | a == LIBMTP_FILETYPE_VCALENDAR2) | |||
/** | /** | |||
* The properties defined here are the external types used | ||||
* by the libmtp library interface. | ||||
*/ | ||||
typedef enum { | ||||
LIBMTP_PROPERTY_StorageID, | ||||
LIBMTP_PROPERTY_ObjectFormat, | ||||
LIBMTP_PROPERTY_ProtectionStatus, | ||||
LIBMTP_PROPERTY_ObjectSize, | ||||
LIBMTP_PROPERTY_AssociationType, | ||||
LIBMTP_PROPERTY_AssociationDesc, | ||||
LIBMTP_PROPERTY_ObjectFileName, | ||||
LIBMTP_PROPERTY_DateCreated, | ||||
LIBMTP_PROPERTY_DateModified, | ||||
LIBMTP_PROPERTY_Keywords, | ||||
LIBMTP_PROPERTY_ParentObject, | ||||
LIBMTP_PROPERTY_AllowedFolderContents, | ||||
LIBMTP_PROPERTY_Hidden, | ||||
LIBMTP_PROPERTY_SystemObject, | ||||
LIBMTP_PROPERTY_PersistantUniqueObjectIdentifier, | ||||
LIBMTP_PROPERTY_SyncID, | ||||
LIBMTP_PROPERTY_PropertyBag, | ||||
LIBMTP_PROPERTY_Name, | ||||
LIBMTP_PROPERTY_CreatedBy, | ||||
LIBMTP_PROPERTY_Artist, | ||||
LIBMTP_PROPERTY_DateAuthored, | ||||
LIBMTP_PROPERTY_Description, | ||||
LIBMTP_PROPERTY_URLReference, | ||||
LIBMTP_PROPERTY_LanguageLocale, | ||||
LIBMTP_PROPERTY_CopyrightInformation, | ||||
LIBMTP_PROPERTY_Source, | ||||
LIBMTP_PROPERTY_OriginLocation, | ||||
LIBMTP_PROPERTY_DateAdded, | ||||
LIBMTP_PROPERTY_NonConsumable, | ||||
LIBMTP_PROPERTY_CorruptOrUnplayable, | ||||
LIBMTP_PROPERTY_ProducerSerialNumber, | ||||
LIBMTP_PROPERTY_RepresentativeSampleFormat, | ||||
LIBMTP_PROPERTY_RepresentativeSampleSize, | ||||
LIBMTP_PROPERTY_RepresentativeSampleHeight, | ||||
LIBMTP_PROPERTY_RepresentativeSampleWidth, | ||||
LIBMTP_PROPERTY_RepresentativeSampleDuration, | ||||
LIBMTP_PROPERTY_RepresentativeSampleData, | ||||
LIBMTP_PROPERTY_Width, | ||||
LIBMTP_PROPERTY_Height, | ||||
LIBMTP_PROPERTY_Duration, | ||||
LIBMTP_PROPERTY_Rating, | ||||
LIBMTP_PROPERTY_Track, | ||||
LIBMTP_PROPERTY_Genre, | ||||
LIBMTP_PROPERTY_Credits, | ||||
LIBMTP_PROPERTY_Lyrics, | ||||
LIBMTP_PROPERTY_SubscriptionContentID, | ||||
LIBMTP_PROPERTY_ProducedBy, | ||||
LIBMTP_PROPERTY_UseCount, | ||||
LIBMTP_PROPERTY_SkipCount, | ||||
LIBMTP_PROPERTY_LastAccessed, | ||||
LIBMTP_PROPERTY_ParentalRating, | ||||
LIBMTP_PROPERTY_MetaGenre, | ||||
LIBMTP_PROPERTY_Composer, | ||||
LIBMTP_PROPERTY_EffectiveRating, | ||||
LIBMTP_PROPERTY_Subtitle, | ||||
LIBMTP_PROPERTY_OriginalReleaseDate, | ||||
LIBMTP_PROPERTY_AlbumName, | ||||
LIBMTP_PROPERTY_AlbumArtist, | ||||
LIBMTP_PROPERTY_Mood, | ||||
LIBMTP_PROPERTY_DRMStatus, | ||||
LIBMTP_PROPERTY_SubDescription, | ||||
LIBMTP_PROPERTY_IsCropped, | ||||
LIBMTP_PROPERTY_IsColorCorrected, | ||||
LIBMTP_PROPERTY_ImageBitDepth, | ||||
LIBMTP_PROPERTY_Fnumber, | ||||
LIBMTP_PROPERTY_ExposureTime, | ||||
LIBMTP_PROPERTY_ExposureIndex, | ||||
LIBMTP_PROPERTY_DisplayName, | ||||
LIBMTP_PROPERTY_BodyText, | ||||
LIBMTP_PROPERTY_Subject, | ||||
LIBMTP_PROPERTY_Priority, | ||||
LIBMTP_PROPERTY_GivenName, | ||||
LIBMTP_PROPERTY_MiddleNames, | ||||
LIBMTP_PROPERTY_FamilyName, | ||||
LIBMTP_PROPERTY_Prefix, | ||||
LIBMTP_PROPERTY_Suffix, | ||||
LIBMTP_PROPERTY_PhoneticGivenName, | ||||
LIBMTP_PROPERTY_PhoneticFamilyName, | ||||
LIBMTP_PROPERTY_EmailPrimary, | ||||
LIBMTP_PROPERTY_EmailPersonal1, | ||||
LIBMTP_PROPERTY_EmailPersonal2, | ||||
LIBMTP_PROPERTY_EmailBusiness1, | ||||
LIBMTP_PROPERTY_EmailBusiness2, | ||||
LIBMTP_PROPERTY_EmailOthers, | ||||
LIBMTP_PROPERTY_PhoneNumberPrimary, | ||||
LIBMTP_PROPERTY_PhoneNumberPersonal, | ||||
LIBMTP_PROPERTY_PhoneNumberPersonal2, | ||||
LIBMTP_PROPERTY_PhoneNumberBusiness, | ||||
LIBMTP_PROPERTY_PhoneNumberBusiness2, | ||||
LIBMTP_PROPERTY_PhoneNumberMobile, | ||||
LIBMTP_PROPERTY_PhoneNumberMobile2, | ||||
LIBMTP_PROPERTY_FaxNumberPrimary, | ||||
LIBMTP_PROPERTY_FaxNumberPersonal, | ||||
LIBMTP_PROPERTY_FaxNumberBusiness, | ||||
LIBMTP_PROPERTY_PagerNumber, | ||||
LIBMTP_PROPERTY_PhoneNumberOthers, | ||||
LIBMTP_PROPERTY_PrimaryWebAddress, | ||||
LIBMTP_PROPERTY_PersonalWebAddress, | ||||
LIBMTP_PROPERTY_BusinessWebAddress, | ||||
LIBMTP_PROPERTY_InstantMessengerAddress, | ||||
LIBMTP_PROPERTY_InstantMessengerAddress2, | ||||
LIBMTP_PROPERTY_InstantMessengerAddress3, | ||||
LIBMTP_PROPERTY_PostalAddressPersonalFull, | ||||
LIBMTP_PROPERTY_PostalAddressPersonalFullLine1, | ||||
LIBMTP_PROPERTY_PostalAddressPersonalFullLine2, | ||||
LIBMTP_PROPERTY_PostalAddressPersonalFullCity, | ||||
LIBMTP_PROPERTY_PostalAddressPersonalFullRegion, | ||||
LIBMTP_PROPERTY_PostalAddressPersonalFullPostalCode, | ||||
LIBMTP_PROPERTY_PostalAddressPersonalFullCountry, | ||||
LIBMTP_PROPERTY_PostalAddressBusinessFull, | ||||
LIBMTP_PROPERTY_PostalAddressBusinessLine1, | ||||
LIBMTP_PROPERTY_PostalAddressBusinessLine2, | ||||
LIBMTP_PROPERTY_PostalAddressBusinessCity, | ||||
LIBMTP_PROPERTY_PostalAddressBusinessRegion, | ||||
LIBMTP_PROPERTY_PostalAddressBusinessPostalCode, | ||||
LIBMTP_PROPERTY_PostalAddressBusinessCountry, | ||||
LIBMTP_PROPERTY_PostalAddressOtherFull, | ||||
LIBMTP_PROPERTY_PostalAddressOtherLine1, | ||||
LIBMTP_PROPERTY_PostalAddressOtherLine2, | ||||
LIBMTP_PROPERTY_PostalAddressOtherCity, | ||||
LIBMTP_PROPERTY_PostalAddressOtherRegion, | ||||
LIBMTP_PROPERTY_PostalAddressOtherPostalCode, | ||||
LIBMTP_PROPERTY_PostalAddressOtherCountry, | ||||
LIBMTP_PROPERTY_OrganizationName, | ||||
LIBMTP_PROPERTY_PhoneticOrganizationName, | ||||
LIBMTP_PROPERTY_Role, | ||||
LIBMTP_PROPERTY_Birthdate, | ||||
LIBMTP_PROPERTY_MessageTo, | ||||
LIBMTP_PROPERTY_MessageCC, | ||||
LIBMTP_PROPERTY_MessageBCC, | ||||
LIBMTP_PROPERTY_MessageRead, | ||||
LIBMTP_PROPERTY_MessageReceivedTime, | ||||
LIBMTP_PROPERTY_MessageSender, | ||||
LIBMTP_PROPERTY_ActivityBeginTime, | ||||
LIBMTP_PROPERTY_ActivityEndTime, | ||||
LIBMTP_PROPERTY_ActivityLocation, | ||||
LIBMTP_PROPERTY_ActivityRequiredAttendees, | ||||
LIBMTP_PROPERTY_ActivityOptionalAttendees, | ||||
LIBMTP_PROPERTY_ActivityResources, | ||||
LIBMTP_PROPERTY_ActivityAccepted, | ||||
LIBMTP_PROPERTY_Owner, | ||||
LIBMTP_PROPERTY_Editor, | ||||
LIBMTP_PROPERTY_Webmaster, | ||||
LIBMTP_PROPERTY_URLSource, | ||||
LIBMTP_PROPERTY_URLDestination, | ||||
LIBMTP_PROPERTY_TimeBookmark, | ||||
LIBMTP_PROPERTY_ObjectBookmark, | ||||
LIBMTP_PROPERTY_ByteBookmark, | ||||
LIBMTP_PROPERTY_LastBuildDate, | ||||
LIBMTP_PROPERTY_TimetoLive, | ||||
LIBMTP_PROPERTY_MediaGUID, | ||||
LIBMTP_PROPERTY_TotalBitRate, | ||||
LIBMTP_PROPERTY_BitRateType, | ||||
LIBMTP_PROPERTY_SampleRate, | ||||
LIBMTP_PROPERTY_NumberOfChannels, | ||||
LIBMTP_PROPERTY_AudioBitDepth, | ||||
LIBMTP_PROPERTY_ScanDepth, | ||||
LIBMTP_PROPERTY_AudioWAVECodec, | ||||
LIBMTP_PROPERTY_AudioBitRate, | ||||
LIBMTP_PROPERTY_VideoFourCCCodec, | ||||
LIBMTP_PROPERTY_VideoBitRate, | ||||
LIBMTP_PROPERTY_FramesPerThousandSeconds, | ||||
LIBMTP_PROPERTY_KeyFrameDistance, | ||||
LIBMTP_PROPERTY_BufferSize, | ||||
LIBMTP_PROPERTY_EncodingQuality, | ||||
LIBMTP_PROPERTY_EncodingProfile, | ||||
LIBMTP_PROPERTY_BuyFlag, | ||||
LIBMTP_PROPERTY_UNKNOWN | ||||
} LIBMTP_property_t; | ||||
/** | ||||
* These are the data types | ||||
*/ | ||||
typedef enum { | ||||
LIBMTP_DATATYPE_INT8, | ||||
LIBMTP_DATATYPE_UINT8, | ||||
LIBMTP_DATATYPE_INT16, | ||||
LIBMTP_DATATYPE_UINT16, | ||||
LIBMTP_DATATYPE_INT32, | ||||
LIBMTP_DATATYPE_UINT32, | ||||
LIBMTP_DATATYPE_INT64, | ||||
LIBMTP_DATATYPE_UINT64, | ||||
} LIBMTP_datatype_t; | ||||
/** | ||||
* These are the numbered error codes. You can also | * These are the numbered error codes. You can also | |||
* get string representations for errors. | * get string representations for errors. | |||
*/ | */ | |||
typedef enum { | typedef enum { | |||
LIBMTP_ERROR_NONE, | LIBMTP_ERROR_NONE, | |||
LIBMTP_ERROR_GENERAL, | LIBMTP_ERROR_GENERAL, | |||
LIBMTP_ERROR_PTP_LAYER, | LIBMTP_ERROR_PTP_LAYER, | |||
LIBMTP_ERROR_USB_LAYER, | LIBMTP_ERROR_USB_LAYER, | |||
LIBMTP_ERROR_MEMORY_ALLOCATION, | LIBMTP_ERROR_MEMORY_ALLOCATION, | |||
LIBMTP_ERROR_NO_DEVICE_ATTACHED, | LIBMTP_ERROR_NO_DEVICE_ATTACHED, | |||
LIBMTP_ERROR_STORAGE_FULL, | LIBMTP_ERROR_STORAGE_FULL, | |||
LIBMTP_ERROR_CONNECTING, | LIBMTP_ERROR_CONNECTING, | |||
LIBMTP_ERROR_CANCELLED | LIBMTP_ERROR_CANCELLED | |||
} LIBMTP_error_number_t; | } LIBMTP_error_number_t; | |||
typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */ | typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */ | |||
typedef struct LIBMTP_raw_device_struct LIBMTP_raw_device_t; /**< @see LIBM TP_raw_device_struct */ | typedef struct LIBMTP_raw_device_struct LIBMTP_raw_device_t; /**< @see LIBM TP_raw_device_struct */ | |||
typedef struct LIBMTP_error_struct LIBMTP_error_t; /**< @see LIBMTP_error_s truct */ | typedef struct LIBMTP_error_struct LIBMTP_error_t; /**< @see LIBMTP_error_s truct */ | |||
typedef struct LIBMTP_allowed_values_struct LIBMTP_allowed_values_t; /**< @ see LIBMTP_allowed_values_struct */ | ||||
typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; /**< @see LIBMTP _mtpdevice_struct */ | typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; /**< @see LIBMTP _mtpdevice_struct */ | |||
typedef struct LIBMTP_file_struct LIBMTP_file_t; /**< @see LIBMTP_file_stru ct */ | typedef struct LIBMTP_file_struct LIBMTP_file_t; /**< @see LIBMTP_file_stru ct */ | |||
typedef struct LIBMTP_track_struct LIBMTP_track_t; /**< @see LIBMTP_track_s truct */ | typedef struct LIBMTP_track_struct LIBMTP_track_t; /**< @see LIBMTP_track_s truct */ | |||
typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t; /**< @see LIBMTP_p laylist_struct */ | typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t; /**< @see LIBMTP_p laylist_struct */ | |||
typedef struct LIBMTP_album_struct LIBMTP_album_t; /**< @see LIBMTP_album_s truct */ | typedef struct LIBMTP_album_struct LIBMTP_album_t; /**< @see LIBMTP_album_s truct */ | |||
typedef struct LIBMTP_folder_struct LIBMTP_folder_t; /**< @see LIBMTP_folde r_t */ | typedef struct LIBMTP_folder_struct LIBMTP_folder_t; /**< @see LIBMTP_folde r_t */ | |||
typedef struct LIBMTP_object_struct LIBMTP_object_t; /**< @see LIBMTP_objec t_t */ | typedef struct LIBMTP_object_struct LIBMTP_object_t; /**< @see LIBMTP_objec t_t */ | |||
typedef struct LIBMTP_filesampledata_struct LIBMTP_filesampledata_t; /**< @ see LIBMTP_filesample_t */ | typedef struct LIBMTP_filesampledata_struct LIBMTP_filesampledata_t; /**< @ see LIBMTP_filesample_t */ | |||
typedef struct LIBMTP_devicestorage_struct LIBMTP_devicestorage_t; /**< @se e LIBMTP_devicestorage_t */ | typedef struct LIBMTP_devicestorage_struct LIBMTP_devicestorage_t; /**< @se e LIBMTP_devicestorage_t */ | |||
skipping to change at line 236 | skipping to change at line 429 | |||
* @param sent the number of bytes sent so far | * @param sent the number of bytes sent so far | |||
* @param total the total number of bytes to send | * @param total the total number of bytes to send | |||
* @param data a user-defined dereferencable pointer | * @param data a user-defined dereferencable pointer | |||
* @return if anything else than 0 is returned, the current transfer will b e | * @return if anything else than 0 is returned, the current transfer will b e | |||
* interrupted / cancelled. | * interrupted / cancelled. | |||
*/ | */ | |||
typedef int (* LIBMTP_progressfunc_t) (uint64_t const sent, uint64_t const total, | typedef int (* LIBMTP_progressfunc_t) (uint64_t const sent, uint64_t const total, | |||
void const * const data); | void const * const data); | |||
/** | /** | |||
* Callback function for get by handler function | ||||
* @param params the device parameters | ||||
* @param priv a user-defined dereferencable pointer | ||||
* @param wantlen the number of bytes wanted | ||||
* @param data a buffer to write the data to | ||||
* @param gotlen pointer to the number of bytes actually written | ||||
* to data | ||||
* @return LIBMTP_HANDLER_RETURN_OK if successful, | ||||
* LIBMTP_HANDLER_RETURN_ERROR on error or | ||||
* LIBMTP_HANDLER_RETURN_CANCEL to cancel the transfer | ||||
*/ | ||||
typedef uint16_t (* MTPDataGetFunc) (void* params, void* priv, | ||||
uint32_t wantlen, unsigned char *dat | ||||
a, uint32_t *gotlen); | ||||
/** | ||||
* Callback function for put by handler function | ||||
* @param params the device parameters | ||||
* @param priv a user-defined dereferencable pointer | ||||
* @param sendlen the number of bytes available | ||||
* @param data a buffer to read the data from | ||||
* @param putlen pointer to the number of bytes actually read | ||||
* from data | ||||
* @return LIBMTP_HANDLER_RETURN_OK if successful, | ||||
* LIBMTP_HANDLER_RETURN_ERROR on error or | ||||
* LIBMTP_HANDLER_RETURN_CANCEL to cancel the transfer | ||||
*/ | ||||
typedef uint16_t (* MTPDataPutFunc) (void* params, void* priv, | ||||
uint32_t sendlen, unsigned char *dat | ||||
a, uint32_t *putlen); | ||||
/** | ||||
* The return codes for the get/put functions | ||||
*/ | ||||
#define LIBMTP_HANDLER_RETURN_OK 0 | ||||
#define LIBMTP_HANDLER_RETURN_ERROR 1 | ||||
#define LIBMTP_HANDLER_RETURN_CANCEL 2 | ||||
/** | ||||
* @} | * @} | |||
* @defgroup structar libmtp data structures | * @defgroup structar libmtp data structures | |||
* @{ | * @{ | |||
*/ | */ | |||
/** | /** | |||
* A data structure to hold MTP device entries. | * A data structure to hold MTP device entries. | |||
*/ | */ | |||
struct LIBMTP_device_entry_struct { | struct LIBMTP_device_entry_struct { | |||
char *vendor; /**< The vendor of this device */ | char *vendor; /**< The vendor of this device */ | |||
skipping to change at line 272 | skipping to change at line 502 | |||
/** | /** | |||
* A data structure to hold errors from the library. | * A data structure to hold errors from the library. | |||
*/ | */ | |||
struct LIBMTP_error_struct { | struct LIBMTP_error_struct { | |||
LIBMTP_error_number_t errornumber; | LIBMTP_error_number_t errornumber; | |||
char *error_text; | char *error_text; | |||
LIBMTP_error_t *next; | LIBMTP_error_t *next; | |||
}; | }; | |||
/** | /** | |||
* A data structure to hold allowed ranges of values | ||||
*/ | ||||
struct LIBMTP_allowed_values_struct { | ||||
uint8_t u8max; | ||||
uint8_t u8min; | ||||
uint8_t u8step; | ||||
uint8_t* u8vals; | ||||
int8_t i8max; | ||||
int8_t i8min; | ||||
int8_t i8step; | ||||
int8_t* i8vals; | ||||
uint16_t u16max; | ||||
uint16_t u16min; | ||||
uint16_t u16step; | ||||
uint16_t* u16vals; | ||||
int16_t i16max; | ||||
int16_t i16min; | ||||
int16_t i16step; | ||||
int16_t* i16vals; | ||||
uint32_t u32max; | ||||
uint32_t u32min; | ||||
uint32_t u32step; | ||||
uint32_t* u32vals; | ||||
int32_t i32max; | ||||
int32_t i32min; | ||||
int32_t i32step; | ||||
int32_t* i32vals; | ||||
uint64_t u64max; | ||||
uint64_t u64min; | ||||
uint64_t u64step; | ||||
uint64_t* u64vals; | ||||
int64_t i64max; | ||||
int64_t i64min; | ||||
int64_t i64step; | ||||
int64_t* i64vals; | ||||
/** | ||||
* Number of entries in the vals array | ||||
*/ | ||||
uint16_t num_entries; | ||||
/** | ||||
* The datatype specifying which of the above is used | ||||
*/ | ||||
LIBMTP_datatype_t datatype; | ||||
/** | ||||
* Non zero for range, 0 for enum | ||||
*/ | ||||
int is_range; | ||||
}; | ||||
/** | ||||
* Main MTP device object struct | * Main MTP device object struct | |||
*/ | */ | |||
struct LIBMTP_mtpdevice_struct { | struct LIBMTP_mtpdevice_struct { | |||
/** | /** | |||
* Object bitsize, typically 32 or 64. | * Object bitsize, typically 32 or 64. | |||
*/ | */ | |||
uint8_t object_bitsize; | uint8_t object_bitsize; | |||
/** | /** | |||
* Parameters for this device, must be cast into | * Parameters for this device, must be cast into | |||
* \c (PTPParams*) before internal use. | * \c (PTPParams*) before internal use. | |||
skipping to change at line 335 | skipping to change at line 615 | |||
/** | /** | |||
* MTP file struct | * MTP file struct | |||
*/ | */ | |||
struct LIBMTP_file_struct { | struct LIBMTP_file_struct { | |||
uint32_t item_id; /**< Unique item ID */ | uint32_t item_id; /**< Unique item ID */ | |||
uint32_t parent_id; /**< ID of parent folder */ | uint32_t parent_id; /**< ID of parent folder */ | |||
uint32_t storage_id; /**< ID of storage holding this file */ | uint32_t storage_id; /**< ID of storage holding this file */ | |||
char *filename; /**< Filename of this file */ | char *filename; /**< Filename of this file */ | |||
uint64_t filesize; /**< Size of file in bytes */ | uint64_t filesize; /**< Size of file in bytes */ | |||
time_t modificationdate; /**< Date of last alteration of the file */ | ||||
LIBMTP_filetype_t filetype; /**< Filetype used for the current file */ | LIBMTP_filetype_t filetype; /**< Filetype used for the current file */ | |||
LIBMTP_file_t *next; /**< Next file in list or NULL if last file */ | LIBMTP_file_t *next; /**< Next file in list or NULL if last file */ | |||
}; | }; | |||
/** | /** | |||
* MTP track struct | * MTP track struct | |||
*/ | */ | |||
struct LIBMTP_track_struct { | struct LIBMTP_track_struct { | |||
uint32_t item_id; /**< Unique item ID */ | uint32_t item_id; /**< Unique item ID */ | |||
uint32_t parent_id; /**< ID of parent folder */ | uint32_t parent_id; /**< ID of parent folder */ | |||
skipping to change at line 363 | skipping to change at line 644 | |||
uint16_t tracknumber; /**< Track number (in sequence on recording) */ | uint16_t tracknumber; /**< Track number (in sequence on recording) */ | |||
uint32_t duration; /**< Duration in milliseconds */ | uint32_t duration; /**< Duration in milliseconds */ | |||
uint32_t samplerate; /**< Sample rate of original file, min 0x1f80 max 0x bb80 */ | uint32_t samplerate; /**< Sample rate of original file, min 0x1f80 max 0x bb80 */ | |||
uint16_t nochannels; /**< Number of channels in this recording 0 = unknow n, 1 or 2 */ | uint16_t nochannels; /**< Number of channels in this recording 0 = unknow n, 1 or 2 */ | |||
uint32_t wavecodec; /**< FourCC wave codec name */ | uint32_t wavecodec; /**< FourCC wave codec name */ | |||
uint32_t bitrate; /**< (Average) bitrate for this file min=1 max=0x16e360 */ | uint32_t bitrate; /**< (Average) bitrate for this file min=1 max=0x16e360 */ | |||
uint16_t bitratetype; /**< 0 = unused, 1 = constant, 2 = VBR, 3 = free */ | uint16_t bitratetype; /**< 0 = unused, 1 = constant, 2 = VBR, 3 = free */ | |||
uint16_t rating; /**< User rating 0-100 (0x00-0x64) */ | uint16_t rating; /**< User rating 0-100 (0x00-0x64) */ | |||
uint32_t usecount; /**< Number of times used/played */ | uint32_t usecount; /**< Number of times used/played */ | |||
uint64_t filesize; /**< Size of track file in bytes */ | uint64_t filesize; /**< Size of track file in bytes */ | |||
time_t modificationdate; /**< Date of last alteration of the track */ | ||||
LIBMTP_filetype_t filetype; /**< Filetype used for the current track */ | LIBMTP_filetype_t filetype; /**< Filetype used for the current track */ | |||
LIBMTP_track_t *next; /**< Next track in list or NULL if last track */ | LIBMTP_track_t *next; /**< Next track in list or NULL if last track */ | |||
}; | }; | |||
/** | /** | |||
* MTP Playlist structure | * MTP Playlist structure | |||
*/ | */ | |||
struct LIBMTP_playlist_struct { | struct LIBMTP_playlist_struct { | |||
uint32_t playlist_id; /**< Unique playlist ID */ | uint32_t playlist_id; /**< Unique playlist ID */ | |||
uint32_t parent_id; /**< ID of parent folder */ | uint32_t parent_id; /**< ID of parent folder */ | |||
skipping to change at line 492 | skipping to change at line 774 | |||
void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t*); | void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t*); | |||
#define LIBMTP_STORAGE_SORTBY_NOTSORTED 0 | #define LIBMTP_STORAGE_SORTBY_NOTSORTED 0 | |||
#define LIBMTP_STORAGE_SORTBY_FREESPACE 1 | #define LIBMTP_STORAGE_SORTBY_FREESPACE 1 | |||
#define LIBMTP_STORAGE_SORTBY_MAXSPACE 2 | #define LIBMTP_STORAGE_SORTBY_MAXSPACE 2 | |||
int LIBMTP_Get_Storage(LIBMTP_mtpdevice_t *, int const); | int LIBMTP_Get_Storage(LIBMTP_mtpdevice_t *, int const); | |||
int LIBMTP_Format_Storage(LIBMTP_mtpdevice_t *, LIBMTP_devicestorage_t *); | int LIBMTP_Format_Storage(LIBMTP_mtpdevice_t *, LIBMTP_devicestorage_t *); | |||
/** | /** | |||
* Get/set arbitrary properties. These do not update the cache; should onl | ||||
y be used on | ||||
* properties not stored in structs | ||||
*/ | ||||
char *LIBMTP_Get_String_From_Object(LIBMTP_mtpdevice_t *, uint32_t const, L | ||||
IBMTP_property_t const); | ||||
uint64_t LIBMTP_Get_u64_From_Object(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, uint64_t const); | ||||
uint32_t LIBMTP_Get_u32_From_Object(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, uint32_t const); | ||||
uint16_t LIBMTP_Get_u16_From_Object(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, uint16_t const); | ||||
uint8_t LIBMTP_Get_u8_From_Object(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, uint8_t const); | ||||
int LIBMTP_Set_Object_String(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, char const * const); | ||||
int LIBMTP_Set_Object_u32(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, uint32_t const); | ||||
int LIBMTP_Set_Object_u16(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, uint16_t const); | ||||
int LIBMTP_Set_Object_u8(LIBMTP_mtpdevice_t *, uint32_t const, | ||||
LIBMTP_property_t const, uint8_t const); | ||||
char const * LIBMTP_Get_Property_Description(LIBMTP_property_t inproperty); | ||||
int LIBMTP_Is_Property_Supported(LIBMTP_mtpdevice_t*, LIBMTP_property_t con | ||||
st, | ||||
LIBMTP_filetype_t const); | ||||
int LIBMTP_Get_Allowed_Property_Values(LIBMTP_mtpdevice_t*, LIBMTP_property | ||||
_t const, | ||||
LIBMTP_filetype_t const, LIBMTP_allowed_values_t*); | ||||
void LIBMTP_destroy_allowed_values_t(LIBMTP_allowed_values_t*); | ||||
/** | ||||
* @} | * @} | |||
* @defgroup files The file management API. | * @defgroup files The file management API. | |||
* @{ | * @{ | |||
*/ | */ | |||
LIBMTP_file_t *LIBMTP_new_file_t(void); | LIBMTP_file_t *LIBMTP_new_file_t(void); | |||
void LIBMTP_destroy_file_t(LIBMTP_file_t*); | void LIBMTP_destroy_file_t(LIBMTP_file_t*); | |||
char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t); | char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t); | |||
LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *); | LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *); | |||
LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *, | LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *, | |||
LIBMTP_progressfunc_t const, void const * const); | LIBMTP_progressfunc_t const, void const * const); | |||
LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const ); | LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const ); | |||
int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * con st, | int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * con st, | |||
LIBMTP_progressfunc_t const, void const * const); | LIBMTP_progressfunc_t const, void const * const); | |||
int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const, | int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const, | |||
LIBMTP_progressfunc_t const, void const * const); | LIBMTP_progressfunc_t const, void const * const); | |||
int LIBMTP_Get_File_To_Handler(LIBMTP_mtpdevice_t *, uint32_t const, MTPDat | ||||
aPutFunc, void *, | ||||
LIBMTP_progressfunc_t const, void const * const); | ||||
int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const, | int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const, | |||
LIBMTP_file_t * const, LIBMTP_progressfunc_t const, | LIBMTP_file_t * const, LIBMTP_progressfunc_t const, | |||
void const * const); | void const * const); | |||
int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const, | int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const, | |||
LIBMTP_file_t * const, LIBMTP_progressfunc_t const, | LIBMTP_file_t * const, LIBMTP_progressfunc_t const, | |||
void const * const); | void const * const); | |||
int LIBMTP_Send_File_From_Handler(LIBMTP_mtpdevice_t *, MTPDataGetFunc, voi | ||||
d *, | ||||
LIBMTP_file_t * const, LIBMTP_progressfunc_t const, void const * cons | ||||
t); | ||||
int LIBMTP_Set_File_Name(LIBMTP_mtpdevice_t *, LIBMTP_file_t *, const char *); | int LIBMTP_Set_File_Name(LIBMTP_mtpdevice_t *, LIBMTP_file_t *, const char *); | |||
LIBMTP_filesampledata_t *LIBMTP_new_filesampledata_t(void); | LIBMTP_filesampledata_t *LIBMTP_new_filesampledata_t(void); | |||
void LIBMTP_destroy_filesampledata_t(LIBMTP_filesampledata_t *); | void LIBMTP_destroy_filesampledata_t(LIBMTP_filesampledata_t *); | |||
int LIBMTP_Get_Representative_Sample_Format(LIBMTP_mtpdevice_t *, | int LIBMTP_Get_Representative_Sample_Format(LIBMTP_mtpdevice_t *, | |||
LIBMTP_filetype_t const, | LIBMTP_filetype_t const, | |||
LIBMTP_filesampledata_t **); | LIBMTP_filesampledata_t **); | |||
int LIBMTP_Send_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, | int LIBMTP_Send_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, | |||
LIBMTP_filesampledata_t *); | LIBMTP_filesampledata_t *); | |||
int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, | int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, | |||
LIBMTP_filesampledata_t *); | LIBMTP_filesampledata_t *); | |||
skipping to change at line 539 | skipping to change at line 853 | |||
LIBMTP_track_t *LIBMTP_new_track_t(void); | LIBMTP_track_t *LIBMTP_new_track_t(void); | |||
void LIBMTP_destroy_track_t(LIBMTP_track_t*); | void LIBMTP_destroy_track_t(LIBMTP_track_t*); | |||
LIBMTP_track_t *LIBMTP_Get_Tracklisting(LIBMTP_mtpdevice_t*); | LIBMTP_track_t *LIBMTP_Get_Tracklisting(LIBMTP_mtpdevice_t*); | |||
LIBMTP_track_t *LIBMTP_Get_Tracklisting_With_Callback(LIBMTP_mtpdevice_t*, | LIBMTP_track_t *LIBMTP_Get_Tracklisting_With_Callback(LIBMTP_mtpdevice_t*, | |||
LIBMTP_progressfunc_t const, void const * const); | LIBMTP_progressfunc_t const, void const * const); | |||
LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t*, uint32_t cons t); | LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t*, uint32_t cons t); | |||
int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * co nst, | int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * co nst, | |||
LIBMTP_progressfunc_t const, void const * const); | LIBMTP_progressfunc_t const, void const * const); | |||
int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const , int const, | int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const , int const, | |||
LIBMTP_progressfunc_t const, void const * const); | LIBMTP_progressfunc_t const, void const * const); | |||
int LIBMTP_Get_Track_To_Handler(LIBMTP_mtpdevice_t *, uint32_t const, MTPDa | ||||
taPutFunc, | ||||
void *, LIBMTP_progressfunc_t const, void const * const); | ||||
int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *, | int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *, | |||
char const * const, LIBMTP_track_t * const, | char const * const, LIBMTP_track_t * const, | |||
LIBMTP_progressfunc_t const, | LIBMTP_progressfunc_t const, | |||
void const * const); | void const * const); | |||
int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *, | int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *, | |||
int const, LIBMTP_track_t * const, | int const, LIBMTP_track_t * const, | |||
LIBMTP_progressfunc_t const, | LIBMTP_progressfunc_t const, | |||
void const * const); | void const * const); | |||
int LIBMTP_Send_Track_From_Handler(LIBMTP_mtpdevice_t *, | ||||
MTPDataGetFunc, void *, LIBMTP_track_t * const, | ||||
LIBMTP_progressfunc_t const, | ||||
void const * const); | ||||
int LIBMTP_Update_Track_Metadata(LIBMTP_mtpdevice_t *, | int LIBMTP_Update_Track_Metadata(LIBMTP_mtpdevice_t *, | |||
LIBMTP_track_t const * const); | LIBMTP_track_t const * const); | |||
int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t); | int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t); | |||
int LIBMTP_Set_Track_Name(LIBMTP_mtpdevice_t *, LIBMTP_track_t *, const cha r *); | int LIBMTP_Set_Track_Name(LIBMTP_mtpdevice_t *, LIBMTP_track_t *, const cha r *); | |||
/** @} */ | /** @} */ | |||
/** | /** | |||
* @} | * @} | |||
* @defgroup folders The folder management API. | * @defgroup folders The folder management API. | |||
* @{ | * @{ | |||
End of changes. 14 change blocks. | ||||
2 lines changed or deleted | 332 lines changed or added | |||