types(3)

πŸ“¦
version 1.1.23 Β· 3 versions
, in arch rolling

πŸ’– NAME πŸ’–

okay bestie, welcome to types(3) β€” the libmtp global type definitions page from the Library Functions Manual. This is part 1, so we are not signing off yet. πŸ’…

types - libmtp global type definitions. That's the name line, periodt.


✨ SYNOPSIS ✨

the synopsis is giving β€œhere’s every macro, typedef, and enum you need to know” energy. Let’s get into it. πŸ¦‹

🧚 Macros

here’s the macro lineup, bestie β€” every define exactly as it appears, no cap:

#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

the debug crew is LIBMTP_DEBUG_NONE through LIBMTP_DEBUG_ALL, the filetype checks all take (a), and the handler returns are 0, 1, and 2. iconic, honestly. πŸŽ€

πŸ¦‹ Typedefs

these typedefs are the main characters of the type-definition world, and we’re keeping every single one exactly as written:

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

enums are the moment here β€” they’re long, they’re detailed, and we’re keeping every value. 🌈

πŸŽ€ enum LIBMTP_filetype_t

this one is the filetype buffet, from LIBMTP_FILETYPE_FOLDER all the way to LIBMTP_FILETYPE_UNKNOWN:

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

the property enum is the moment β€” it’s massive, it’s detailed, and not a single value is missing. πŸ’œ

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

the datatype enum is short and sweet, and every value is here:

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

device capability enum, looking iconic:

enum LIBMTP_devicecap_t { LIBMTP_DEVICECAP_GetPartialObject,
    LIBMTP_DEVICECAP_SendPartialObject, LIBMTP_DEVICECAP_EditObjects,
    LIBMTP_DEVICECAP_MoveObject, LIBMTP_DEVICECAP_CopyObject }

πŸ“ enum LIBMTP_error_number_t

the error-number enum, keeping every single error value exactly as it is:

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 πŸ’…

okay bestie, this is where the Detailed Description heading lives in part 1 β€” more parts are literally coming, so don’t sign off yet. πŸ’–

πŸŽ€ MACRO DEFINITION DOCUMENTATION πŸŽ€

Ok so first up, the macros β€” these are the little guys you'll be sprinkling into your code like glitter ✨


#define LIBMTP_DEBUG_NONE 0x00

Bestie, heads up: the debug flags defined here are the external flags used by the libmtp library interface.

🫢 Real talk: please keep this list in sync with libmtp.c. Like, actually. Future you says thank you.

#define LIBMTP_FILETYPE_IS_ADDRESSBOOK( a)

Value:

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

The addressbook and business card filetype test πŸ’… β€” if it's giving contacts, it's giving true.


#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)

The audio filetype test 🎧✨

🌸 For filetypes that can be either audio or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO instead. She's the main character for those.

#define LIBMTP_FILETYPE_IS_AUDIOVIDEO( a)

Value:

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

Audio and/or video filetype test πŸ¦‹ β€” the "why not both" of filetype checks, honestly iconic.


#define LIBMTP_FILETYPE_IS_CALENDAR( a)

Value:

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

The calendar and appointment filetype test πŸ“… β€” for when the vibe is scheduled and booked.


#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)

The image filetype test πŸ“Έ β€” ten whole formats, she's thorough, she ate.


#define LIBMTP_FILETYPE_IS_TRACK( a)

Value:

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

Test if the filetype is a track 🎡✨ Use this to determine whether the File API or the Track API should be used to upload or download an object. Basically: which line do I join at the club, bestie?

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)

The video filetype test 🎬

🌈 For filetypes that can be either audio or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO. Same rule as her audio sister, no cap.

#define LIBMTP_HANDLER_RETURN_OK 0

The return codes for the get/put functions β€” 0 is the "we slayed" value, if you were wondering πŸ’œ


πŸ¦‹ TYPEDEF DOCUMENTATION πŸ¦‹

LIBMTP_album_t

typedef struct LIBMTP_album_struct LIBMTP_album_t

See also: LIBMTP_album_struct

Examples: sendtr.c.


LIBMTP_allowed_values_t

typedef struct LIBMTP_allowed_values_struct LIBMTP_allowed_values_t

See also: LIBMTP_allowed_values_struct


LIBMTP_device_entry_t

typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t

See also: LIBMTP_device_entry_struct


LIBMTP_devicestorage_t

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.


LIBMTP_error_t

typedef struct LIBMTP_error_struct LIBMTP_error_t

See also: LIBMTP_error_struct


LIBMTP_file_t

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.


LIBMTP_filesampledata_t

typedef struct LIBMTP_filesampledata_struct LIBMTP_filesampledata_t

See also: LIBMTP_filesample_t


LIBMTP_folder_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.


LIBMTP_mtpdevice_t

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.

πŸ‘‘ This one shows up in thirteen example files. She's literally everywhere, and honestly? Deserved.

LIBMTP_playlist_t

typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t

See also: LIBMTP_playlist_struct

Examples: getplaylist.c, and playlists.c.


LIBMTP_progressfunc_t

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. Math class but make it cute.

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. So like… return 0 unless you mean it 😭


LIBMTP_raw_device_t

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.


LIBMTP_track_t

typedef struct LIBMTP_track_struct LIBMTP_track_t

See also: LIBMTP_track_struct

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


MTPDataGetFunc

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. Three moods, pick one πŸ’€


MTPDataPutFunc

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. Same three moods, mirrored 🀝


🌈 ENUMERATION TYPE DOCUMENTATION 🌈

enum LIBMTP_datatype_t

These are the data types πŸ“


enum LIBMTP_devicecap_t

These are device capabilities ✨ β€” like a little resume of what your device can actually do.

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 β€” so you don't have to speak in numbers, iykyk.

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 β€” don't mix them up bestie, they're cousins not twins πŸ’€


enum LIBMTP_property_t

The properties defined here are the external types used by the libmtp library interface. Same energy, different enum 🌸


πŸ’– AUTHOR πŸ’–

Generated automatically by Doxygen for libmtp from the source code. Not a human, just a very diligent little robot πŸ€–βœ¨


Ok that's the whole page, bestie β€” you made it to the end, and honestly? Iconic behavior. This was types(3) from libmtp, Version 1.1.23, brought to you by the source code and Doxygen doing its thing. Go forth and check your filetypes with confidence πŸ‘‘πŸ’…πŸ¦‹

πŸ“¦ where this page comes from