---
name: "types"
section: "3"
platform: "linux"
package: "libmtp"
version: "1.1.23-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/types"
---

# types(3)

libmtp global type definitions

## NAME

types - libmtp global type definitions

## SYNOPSIS

### Macros

\#define **LIBMTP\_DEBUG\_NONE**   0x00\
 \#define **LIBMTP\_DEBUG\_PTP**   0x01\
 \#define **LIBMTP\_DEBUG\_PLST**   0x02\
 \#define **LIBMTP\_DEBUG\_USB**   0x04\
 \#define **LIBMTP\_DEBUG\_DATA**   0x08\
 \#define **LIBMTP\_DEBUG\_ALL**   0xFF\
 \#define **LIBMTP\_FILETYPE\_IS\_AUDIO**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_VIDEO**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_AUDIOVIDEO**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_TRACK**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_IMAGE**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_ADDRESSBOOK**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_CALENDAR**(a)\
 \#define **LIBMTP\_HANDLER\_RETURN\_OK**   0\
 \#define **LIBMTP\_HANDLER\_RETURN\_ERROR**   1\
 \#define **LIBMTP\_HANDLER\_RETURN\_CANCEL**   2\

### Typedefs

typedef struct **LIBMTP\_device\_entry\_struct** **LIBMTP\_device\_entry\_t**\
 typedef struct **LIBMTP\_raw\_device\_struct** **LIBMTP\_raw\_device\_t**\
 typedef struct **LIBMTP\_error\_struct** **LIBMTP\_error\_t**\
 typedef struct **LIBMTP\_allowed\_values\_struct** **LIBMTP\_allowed\_values\_t**\
 typedef struct **LIBMTP\_device\_extension\_struct** **LIBMTP\_device\_extension\_t**\
 typedef struct **LIBMTP\_mtpdevice\_struct** **LIBMTP\_mtpdevice\_t**\
 typedef struct **LIBMTP\_file\_struct** **LIBMTP\_file\_t**\
 typedef struct **LIBMTP\_track\_struct** **LIBMTP\_track\_t**\
 typedef struct **LIBMTP\_playlist\_struct** **LIBMTP\_playlist\_t**\
 typedef struct **LIBMTP\_album\_struct** **LIBMTP\_album\_t**\
 typedef struct **LIBMTP\_folder\_struct** **LIBMTP\_folder\_t**\
 typedef struct **LIBMTP\_filesampledata\_struct** **LIBMTP\_filesampledata\_t**\
 typedef struct **LIBMTP\_devicestorage\_struct** **LIBMTP\_devicestorage\_t**\
 typedef int(\* **LIBMTP\_progressfunc\_t**) (uint64\_t const sent, uint64\_t const total, void const \*const data)\
 typedef uint16\_t(\* **MTPDataGetFunc**) (void \*params, void \*priv, uint32\_t wantlen, unsigned char \*data, uint32\_t \*gotlen)\
 typedef uint16\_t(\* **MTPDataPutFunc**) (void \*params, void \*priv, uint32\_t sendlen, unsigned char \*data, uint32\_t \*putlen)\

### Enumerations

enum **LIBMTP\_filetype\_t** { **LIBMTP\_FILETYPE\_FOLDER**, **LIBMTP\_FILETYPE\_WAV**, **LIBMTP\_FILETYPE\_MP3**, **LIBMTP\_FILETYPE\_WMA**, **LIBMTP\_FILETYPE\_OGG**, **LIBMTP\_FILETYPE\_AUDIBLE**, **LIBMTP\_FILETYPE\_MP4**, **LIBMTP\_FILETYPE\_UNDEF\_AUDIO**, **LIBMTP\_FILETYPE\_WMV**, **LIBMTP\_FILETYPE\_AVI**, **LIBMTP\_FILETYPE\_MPEG**, **LIBMTP\_FILETYPE\_ASF**, **LIBMTP\_FILETYPE\_QT**, **LIBMTP\_FILETYPE\_UNDEF\_VIDEO**, **LIBMTP\_FILETYPE\_JPEG**, **LIBMTP\_FILETYPE\_JFIF**, **LIBMTP\_FILETYPE\_TIFF**, **LIBMTP\_FILETYPE\_BMP**, **LIBMTP\_FILETYPE\_GIF**, **LIBMTP\_FILETYPE\_PICT**, **LIBMTP\_FILETYPE\_PNG**, **LIBMTP\_FILETYPE\_VCALENDAR1**, **LIBMTP\_FILETYPE\_VCALENDAR2**, **LIBMTP\_FILETYPE\_VCARD2**, **LIBMTP\_FILETYPE\_VCARD3**, **LIBMTP\_FILETYPE\_WINDOWSIMAGEFORMAT**, **LIBMTP\_FILETYPE\_WINEXEC**, **LIBMTP\_FILETYPE\_TEXT**, **LIBMTP\_FILETYPE\_HTML**, **LIBMTP\_FILETYPE\_FIRMWARE**, **LIBMTP\_FILETYPE\_AAC**, **LIBMTP\_FILETYPE\_MEDIACARD**, **LIBMTP\_FILETYPE\_FLAC**, **LIBMTP\_FILETYPE\_MP2**, **LIBMTP\_FILETYPE\_M4A**, **LIBMTP\_FILETYPE\_DOC**, **LIBMTP\_FILETYPE\_XML**, **LIBMTP\_FILETYPE\_XLS**, **LIBMTP\_FILETYPE\_PPT**, **LIBMTP\_FILETYPE\_MHT**, **LIBMTP\_FILETYPE\_JP2**, **LIBMTP\_FILETYPE\_JPX**, **LIBMTP\_FILETYPE\_ALBUM**, **LIBMTP\_FILETYPE\_PLAYLIST**, **LIBMTP\_FILETYPE\_UNKNOWN** }\
 enum **LIBMTP\_property\_t** { **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** }\
 enum **LIBMTP\_datatype\_t** { **LIBMTP\_DATATYPE\_INT8**, **LIBMTP\_DATATYPE\_UINT8**, **LIBMTP\_DATATYPE\_INT16**, **LIBMTP\_DATATYPE\_UINT16**, **LIBMTP\_DATATYPE\_INT32**, **LIBMTP\_DATATYPE\_UINT32**, **LIBMTP\_DATATYPE\_INT64**, **LIBMTP\_DATATYPE\_UINT64** }\
 enum **LIBMTP\_devicecap\_t** { **LIBMTP\_DEVICECAP\_GetPartialObject**, **LIBMTP\_DEVICECAP\_SendPartialObject**, **LIBMTP\_DEVICECAP\_EditObjects**, **LIBMTP\_DEVICECAP\_MoveObject**, **LIBMTP\_DEVICECAP\_CopyObject** }\
 enum **LIBMTP\_error\_number\_t** { **LIBMTP\_ERROR\_NONE**, **LIBMTP\_ERROR\_GENERAL**, **LIBMTP\_ERROR\_PTP\_LAYER**, **LIBMTP\_ERROR\_USB\_LAYER**, **LIBMTP\_ERROR\_MEMORY\_ALLOCATION**, **LIBMTP\_ERROR\_NO\_DEVICE\_ATTACHED**, **LIBMTP\_ERROR\_STORAGE\_FULL**, **LIBMTP\_ERROR\_CONNECTING**, **LIBMTP\_ERROR\_CANCELLED** }\

## Detailed Description

## Macro Definition Documentation

### #define LIBMTP\_DEBUG\_NONE 0x00

The debug flags defined here are the external flags used by the libmtp library interface.

Please keep this list in sync with **libmtp.c**.

### #define LIBMTP\_FILETYPE\_IS\_ADDRESSBOOK( a)

**Value:**

```
(a == LIBMTP_FILETYPE_VCARD2 ||\
a == LIBMTP_FILETYPE_VCARD3)
```

Addressbook and Business card filetype test

### #define LIBMTP\_FILETYPE\_IS\_AUDIO( a)

**Value:**

```
(a == LIBMTP_FILETYPE_WAV ||\
 a == LIBMTP_FILETYPE_MP3 ||\
 a == LIBMTP_FILETYPE_MP2 ||\
 a == LIBMTP_FILETYPE_WMA ||\
 a == LIBMTP_FILETYPE_OGG ||\
 a == LIBMTP_FILETYPE_FLAC ||\
 a == LIBMTP_FILETYPE_AAC ||\
 a == LIBMTP_FILETYPE_M4A ||\
 a == LIBMTP_FILETYPE_AUDIBLE ||\
 a == LIBMTP_FILETYPE_UNDEF_AUDIO)
```

Audio filetype test.

For filetypes that can be either audio or video, use LIBMTP\_FILETYPE\_IS\_AUDIOVIDEO

### #define LIBMTP\_FILETYPE\_IS\_AUDIOVIDEO( a)

**Value:**

```
(a == LIBMTP_FILETYPE_MP4 ||\
 a == LIBMTP_FILETYPE_ASF ||\
 a == LIBMTP_FILETYPE_QT)
```

Audio and&slash;or video filetype test.

### #define LIBMTP\_FILETYPE\_IS\_CALENDAR( a)

**Value:**

```
(a == LIBMTP_FILETYPE_VCALENDAR1 ||\
a == LIBMTP_FILETYPE_VCALENDAR2)
```

Calendar and Appointment filetype test

### #define LIBMTP\_FILETYPE\_IS\_IMAGE( a)

**Value:**

```
(a == LIBMTP_FILETYPE_JPEG ||\
a == LIBMTP_FILETYPE_JFIF ||\
a == LIBMTP_FILETYPE_TIFF ||\
a == LIBMTP_FILETYPE_BMP ||\
a == LIBMTP_FILETYPE_GIF ||\
a == LIBMTP_FILETYPE_PICT ||\
a == LIBMTP_FILETYPE_PNG ||\
a == LIBMTP_FILETYPE_JP2 ||\
a == LIBMTP_FILETYPE_JPX ||\
a == LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT)
```

Image filetype test

### #define LIBMTP\_FILETYPE\_IS\_TRACK( a)

**Value:**

```
(LIBMTP_FILETYPE_IS_AUDIO(a) ||\
 LIBMTP_FILETYPE_IS_VIDEO(a) ||\
 LIBMTP_FILETYPE_IS_AUDIOVIDEO(a))
```

Test if filetype is a track. Use this to determine if the File API or Track API should be used to upload or download an object.

**Examples** **sendtr.c**, and **tracks.c**.

Referenced by **LIBMTP\_Get\_Tracklisting\_With\_Callback\_For\_Storage()**, **LIBMTP\_Get\_Trackmetadata()**, **LIBMTP\_Send\_Track\_From\_File\_Descriptor()**, and **LIBMTP\_Send\_Track\_From\_Handler()**.

### #define LIBMTP\_FILETYPE\_IS\_VIDEO( a)

**Value:**

```
(a == LIBMTP_FILETYPE_WMV ||\
 a == LIBMTP_FILETYPE_AVI ||\
 a == LIBMTP_FILETYPE_MPEG ||\
 a == LIBMTP_FILETYPE_UNDEF_VIDEO)
```

Video filetype test.

For filetypes that can be either audio or video, use LIBMTP\_FILETYPE\_IS\_AUDIOVIDEO

### #define LIBMTP\_HANDLER\_RETURN\_OK 0

The return codes for the get/put functions

## Typedef Documentation

### typedef struct LIBMTP\_album\_struct LIBMTP\_album\_t

**See also**

**LIBMTP\_album\_struct**

**Examples** **sendtr.c**.

### typedef struct LIBMTP\_allowed\_values\_struct LIBMTP\_allowed\_values\_t

**See also**

**LIBMTP\_allowed\_values\_struct**

### typedef struct LIBMTP\_device\_entry\_struct LIBMTP\_device\_entry\_t

**See also**

**LIBMTP\_device\_entry\_struct**

### typedef struct LIBMTP\_devicestorage\_struct LIBMTP\_devicestorage\_t

**See also**

**LIBMTP\_devicestorage\_t**

**Examples** **detect.c**, **files.c**, **folders.c**, **sendtr.c**, and **tracks.c**.

### typedef struct LIBMTP\_error\_struct LIBMTP\_error\_t

**See also**

**LIBMTP\_error\_struct**

### typedef struct LIBMTP\_file\_struct LIBMTP\_file\_t

**See also**

**LIBMTP\_file\_struct**

**Examples** **delfile.c**, **detect.c**, **files.c**, **getfile.c**, **newfolder.c**, **sendfile.c**, **sendtr.c**, and **tracks.c**.

### typedef struct LIBMTP\_filesampledata\_struct LIBMTP\_filesampledata\_t

**See also**

LIBMTP\_filesample\_t

### typedef struct LIBMTP\_folder\_struct LIBMTP\_folder\_t

**See also**

**LIBMTP\_folder\_t**

**Examples** **delfile.c**, **folders.c**, **getfile.c**, **newfolder.c**, **sendfile.c**, and **sendtr.c**.

### typedef struct LIBMTP\_mtpdevice\_struct LIBMTP\_mtpdevice\_t

\<

**See also**

**LIBMTP\_device\_extension\_struct**

**LIBMTP\_mtpdevice\_struct**

**Examples** **delfile.c**, **detect.c**, **files.c**, **folders.c**, **getfile.c**, **getplaylist.c**, **newfolder.c**, **playlists.c**, **sendfile.c**, **sendtr.c**, **tracks.c**, and **trexist.c**.

### typedef struct LIBMTP\_playlist\_struct LIBMTP\_playlist\_t

**See also**

**LIBMTP\_playlist\_struct**

**Examples** **getplaylist.c**, and **playlists.c**.

### typedef int(\* LIBMTP\_progressfunc\_t) (uint64\_t const sent, uint64\_t const total, void const \*const data)

The callback type definition. Notice that a progress percentage ratio is easy to calculate by dividing sent by total.

**Parameters**

*sent* the number of bytes sent so far \
 *total* the total number of bytes to send \
 *data* a user-defined dereferencable pointer

**Returns**

if anything else than 0 is returned, the current transfer will be interrupted / cancelled.

### typedef struct LIBMTP\_raw\_device\_struct LIBMTP\_raw\_device\_t

**See also**

**LIBMTP\_raw\_device\_struct**

**Examples** **detect.c**, **files.c**, **folders.c**, and **tracks.c**.

### typedef struct LIBMTP\_track\_struct LIBMTP\_track\_t

**See also**

**LIBMTP\_track\_struct**

**Examples** **getplaylist.c**, **playlists.c**, **sendtr.c**, and **tracks.c**.

### typedef uint16\_t(\* MTPDataGetFunc) (void \*params, void \*priv, uint32\_t wantlen, unsigned char \*data, uint32\_t \*gotlen)

Callback function for get by handler function

**Parameters**

*params* the device parameters \
 *priv* a user-defined dereferencable pointer \
 *wantlen* the number of bytes wanted \
 *data* a buffer to write the data to \
 *gotlen* pointer to the number of bytes actually written to data

**Returns**

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 \*data, uint32\_t \*putlen)

Callback function for put by handler function

**Parameters**

*params* the device parameters \
 *priv* a user-defined dereferencable pointer \
 *sendlen* the number of bytes available \
 *data* a buffer to read the data from \
 *putlen* pointer to the number of bytes actually read from data

**Returns**

LIBMTP\_HANDLER\_RETURN\_OK if successful, LIBMTP\_HANDLER\_RETURN\_ERROR on error or LIBMTP\_HANDLER\_RETURN\_CANCEL to cancel the transfer

## Enumeration Type Documentation

### enum LIBMTP\_datatype\_t

These are the data types

### enum LIBMTP\_devicecap\_t

These are device capabilities

**Enumerator**

- ***LIBMTP\_DEVICECAP\_GetPartialObject***

  This capability tells whether you can call the function getting partial objects,

**See also**

LIBMTP\_GetPartialObject()

- ***LIBMTP\_DEVICECAP\_SendPartialObject***

  This capability tells whether you can call the function sending partial objects.

**See also**

LIBMTP\_SendPartialObject()

- ***LIBMTP\_DEVICECAP\_EditObjects***

  This capability tells whether you can call the functions editing objects in-place on a device.

**See also**

LIBMTP\_BeginEditObject()

LIBMTP\_EndEditObject()

LIBMTP\_TruncateObject()

- ***LIBMTP\_DEVICECAP\_MoveObject***

  This capability tells whether you can call the function to move an object,

**See also**

LIBMTP\_MoveObject()

- ***LIBMTP\_DEVICECAP\_CopyObject***

  This capability tells whether you can call the function to copy an object,

**See also**

LIBMTP\_CopyObject()

### enum LIBMTP\_error\_number\_t

These are the numbered error codes. You can also get string representations for errors.

**Examples** **detect.c**, **files.c**, and **tracks.c**.

### enum LIBMTP\_filetype\_t

The filetypes defined here are the external types used by the libmtp library interface. The types used internally as PTP-defined enumerator types is something different.

### enum LIBMTP\_property\_t

The properties defined here are the external types used by the libmtp library interface.

## Author

Generated automatically by Doxygen for libmtp from the source code.
