New MTP types and defs
diff --git a/AUTHORS b/AUTHORS
index 5f4ae3a..33fbb9a 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -23,3 +23,4 @@
 Dave Kelly <[email protected]>
 Matthew Wilcox <[email protected]>
 Robert Reardon <[email protected]>
+Orson Teodoro <[email protected]>
diff --git a/ChangeLog b/ChangeLog
index 0a5934e..cfae659 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2006-12-30  Orson Teodoro <[email protected]>
+
+	* src/ptp.h: added WMDRMPD, WMDRMND, WMPPD, WPDWCN extension
+	  codes. added more format object codes flac, m4a, 3gp, aac,
+          xml, xls, ppt, etc.  0x9101-0x910B identfiers are infixed
+	  with WMDRMPD. Added more object properties codes (0xDCD3-0xDD72).
+	  Added more device property codes.
+	  Changed PTP_OFC_MTP_WindowsImageFormat to 0xb881 reflect spec.
+        * src/ptp.c: added changes to reflect new extensions, object
+	  codes, device property codes.
+	* src/libmtp.c: modified mp4 to reflect it is a container format
+	  not a codec.  Added more descriptions in init_filemap(). mp4
+          container format is ambiguous in
+	  LIBMTP_Send_File_From_File_Descriptor(). Audio? video? both?.
+	  mp4 searched in video by default.  Added comments about this.
+          Added support for the new format object types.
+	* src/libmtp.h.in: added constants to reflect changes to
+          init_filemap().
+
 2006-12-30  Richard Low <[email protected]>
 
 	* src/libusb-glue.c: fixed bug in debug printing
diff --git a/src/libmtp.c b/src/libmtp.c
index ceced61..0eab8d4 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -189,12 +189,17 @@
 
 static void init_filemap()
 {
+  register_filetype("MediaCard", LIBMTP_FILETYPE_MEDIACARD, PTP_OFC_MTP_MediaCard);
   register_filetype("RIFF WAVE file", LIBMTP_FILETYPE_WAV, PTP_OFC_WAV);
-  register_filetype("ISO MPEG Audio Layer 3", LIBMTP_FILETYPE_MP3, PTP_OFC_MP3);
+  register_filetype("ISO MPEG-1 Audio Layer 3", LIBMTP_FILETYPE_MP3, PTP_OFC_MP3);
+  register_filetype("ISO MPEG-1 Audio Layer 2", LIBMTP_FILETYPE_MP2, PTP_OFC_MTP_MP2);
   register_filetype("Microsoft Windows Media Audio", LIBMTP_FILETYPE_WMA, PTP_OFC_MTP_WMA);
   register_filetype("Ogg container format", LIBMTP_FILETYPE_OGG, PTP_OFC_MTP_OGG);
+  register_filetype("Free Lossless Audio Codec (FLAC)", LIBMTP_FILETYPE_FLAC, PTP_OFC_MTP_FLAC);
+  register_filetype("Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3", LIBMTP_FILETYPE_AAC, PTP_OFC_MTP_AAC);
+  register_filetype("MPEG-4 Part 14 Container Format (Audio Empahsis)", LIBMTP_FILETYPE_M4A, PTP_OFC_MTP_M4A);
+  register_filetype("MPEG-4 Part 14 Container Format (Audio+Video Empahsis)", LIBMTP_FILETYPE_MP4, PTP_OFC_MTP_MP4);
   register_filetype("Audible.com Audio Codec", LIBMTP_FILETYPE_AUDIBLE, PTP_OFC_MTP_AudibleCodec);
-  register_filetype("Advanced Acoustic Coding", LIBMTP_FILETYPE_MP4, PTP_OFC_MTP_MP4);
   register_filetype("Undefined audio file", LIBMTP_FILETYPE_UNDEF_AUDIO, PTP_OFC_MTP_UndefinedAudio);
   register_filetype("Microsoft Windows Media Video", LIBMTP_FILETYPE_WMV, PTP_OFC_MTP_WMV);
   register_filetype("Audio Video Interleave", LIBMTP_FILETYPE_AVI, PTP_OFC_AVI);
@@ -203,6 +208,8 @@
   register_filetype("Apple Quicktime container format", LIBMTP_FILETYPE_QT, PTP_OFC_QT);
   register_filetype("Undefined video file", LIBMTP_FILETYPE_UNDEF_VIDEO, PTP_OFC_MTP_UndefinedVideo);
   register_filetype("JPEG file", LIBMTP_FILETYPE_JPEG, PTP_OFC_EXIF_JPEG);
+  register_filetype("JP2 file", LIBMTP_FILETYPE_JP2, PTP_OFC_JP2);
+  register_filetype("JPX file", LIBMTP_FILETYPE_JPX, PTP_OFC_JPX);
   register_filetype("JFIF file", LIBMTP_FILETYPE_JFIF, PTP_OFC_JFIF);
   register_filetype("TIFF bitmap file", LIBMTP_FILETYPE_TIFF, PTP_OFC_TIFF);
   register_filetype("BMP bitmap file", LIBMTP_FILETYPE_BMP, PTP_OFC_BMP);
@@ -217,6 +224,11 @@
   register_filetype("Undefined Windows executable file", LIBMTP_FILETYPE_WINEXEC, PTP_OFC_MTP_UndefinedWindowsExecutable);
   register_filetype("Text file", LIBMTP_FILETYPE_TEXT, PTP_OFC_Text);
   register_filetype("HTML file", LIBMTP_FILETYPE_HTML, PTP_OFC_HTML);
+  register_filetype("XML file", LIBMTP_FILETYPE_XML, PTP_OFC_MTP_XMLDocument);
+  register_filetype("DOC file", LIBMTP_FILETYPE_DOC, PTP_OFC_MTP_MSWordDocument);
+  register_filetype("XLS file", LIBMTP_FILETYPE_XLS, PTP_OFC_MTP_MSExcelSpreadsheetXLS);
+  register_filetype("PPT file", LIBMTP_FILETYPE_PPT, PTP_OFC_MTP_MSPowerpointPresentationPPT);
+  register_filetype("MHT file", LIBMTP_FILETYPE_MHT, PTP_OFC_MTP_MHTCompiledHTMLDocument);
   register_filetype("Firmware file", LIBMTP_FILETYPE_FIRMWARE, PTP_OFC_MTP_Firmware);
   register_filetype("Undefined filetype", LIBMTP_FILETYPE_UNKNOWN, PTP_OFC_Undefined);
 }
@@ -2081,8 +2093,12 @@
       // all known audio track files?
       if ( oi.ObjectFormat != PTP_OFC_WAV &&
 	   oi.ObjectFormat != PTP_OFC_MP3 &&
+	   oi.ObjectFormat != PTP_OFC_MTP_MP2 &&
 	   oi.ObjectFormat != PTP_OFC_MTP_WMA &&
 	   oi.ObjectFormat != PTP_OFC_MTP_OGG &&
+	   oi.ObjectFormat != PTP_OFC_MTP_FLAC &&
+	   oi.ObjectFormat != PTP_OFC_MTP_AAC &&
+	   oi.ObjectFormat != PTP_OFC_MTP_M4A &&
 	   oi.ObjectFormat != PTP_OFC_MTP_MP4 &&
 	   oi.ObjectFormat != PTP_OFC_MTP_UndefinedAudio ) {
 	// printf("Not a music track (format: %d), skipping...\n",oi.ObjectFormat);
@@ -2164,8 +2180,12 @@
       // Ignore stuff we don't know how to handle...
       if ( oi.ObjectFormat != PTP_OFC_WAV &&
 	   oi.ObjectFormat != PTP_OFC_MP3 &&
+	   oi.ObjectFormat != PTP_OFC_MTP_MP2 &&
 	   oi.ObjectFormat != PTP_OFC_MTP_WMA &&
 	   oi.ObjectFormat != PTP_OFC_MTP_OGG &&
+	   oi.ObjectFormat != PTP_OFC_MTP_FLAC &&
+	   oi.ObjectFormat != PTP_OFC_MTP_AAC &&
+	   oi.ObjectFormat != PTP_OFC_MTP_M4A &&
 	   oi.ObjectFormat != PTP_OFC_MTP_MP4 &&
 	   oi.ObjectFormat != PTP_OFC_MTP_UndefinedAudio ) {
 	return NULL;
@@ -2502,8 +2522,12 @@
   // Sanity check, is this really a track?
   if (metadata->filetype != LIBMTP_FILETYPE_WAV &&
       metadata->filetype != LIBMTP_FILETYPE_MP3 &&
+      metadata->filetype != LIBMTP_FILETYPE_MP2 &&
       metadata->filetype != LIBMTP_FILETYPE_WMA &&
       metadata->filetype != LIBMTP_FILETYPE_OGG &&
+      metadata->filetype != LIBMTP_FILETYPE_FLAC &&
+      metadata->filetype != LIBMTP_FILETYPE_AAC &&
+      metadata->filetype != LIBMTP_FILETYPE_M4A &&
       metadata->filetype != LIBMTP_FILETYPE_MP4 &&
       metadata->filetype != LIBMTP_FILETYPE_UNDEF_AUDIO) {
     printf("LIBMTP_Send_Track_From_File_Descriptor: I don't think this is actually a track, strange filetype...\n");
@@ -2898,9 +2922,15 @@
     uint16_t of = new_file.ObjectFormat;
     if (of == PTP_OFC_WAV ||
 	of == PTP_OFC_MP3 ||
+	of == PTP_OFC_MTP_MP2 ||
 	of == PTP_OFC_MTP_WMA ||
 	of == PTP_OFC_MTP_OGG ||
-	of == PTP_OFC_MTP_MP4 ||
+	of == PTP_OFC_MTP_FLAC ||
+	of == PTP_OFC_MTP_AAC ||
+	of == PTP_OFC_MTP_M4A ||
+	of == PTP_OFC_AIFF ||
+	//of == PTP_OFC_MTP_MP4 || 	/* ambiguous mp4 can contain video */
+	of == PTP_OFC_MTP_AudibleCodec ||
 	of == PTP_OFC_MTP_UndefinedAudio) {
       localph = device->default_music_folder;
     } else if (of == PTP_OFC_MTP_WMV ||
@@ -2908,11 +2938,16 @@
 	       of == PTP_OFC_MPEG ||
 	       of == PTP_OFC_ASF ||
 	       of == PTP_OFC_QT ||
+	       of == PTP_OFC_MTP_3GP ||
+	       of == PTP_OFC_MTP_MP4 || /* ambiguous mp4 can also contain only audio */
 	       of == PTP_OFC_MTP_UndefinedVideo) {
       localph = device->default_video_folder;
     } else if (of == PTP_OFC_EXIF_JPEG ||
+	       of == PTP_OFC_JP2 ||
+	       of == PTP_OFC_JPX ||
 	       of == PTP_OFC_JFIF ||
 	       of == PTP_OFC_TIFF ||
+	       of == PTP_OFC_TIFF_IT ||
 	       of == PTP_OFC_BMP ||
 	       of == PTP_OFC_GIF ||
 	       of == PTP_OFC_PICT ||
@@ -2926,7 +2961,8 @@
 	       of == PTP_OFC_MTP_vCard3 ||
 	       of == PTP_OFC_MTP_UndefinedCalendarItem) {
       localph = device->default_organizer_folder;
-    } else if (of == PTP_OFC_Text) {
+    } else if (of == PTP_OFC_Text
+		) {
       localph = device->default_text_folder;
     }
   }
diff --git a/src/libmtp.h.in b/src/libmtp.h.in
index 222c416..8962633 100644
--- a/src/libmtp.h.in
+++ b/src/libmtp.h.in
@@ -75,6 +75,18 @@
   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_UNKNOWN
 } LIBMTP_filetype_t;
 typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */
diff --git a/src/ptp.c b/src/ptp.c
index 6a253e9..407f1be 100644
--- a/src/ptp.c
+++ b/src/ptp.c
@@ -3352,6 +3352,8 @@
 		{PTP_DPC_MTP_PlaybackContainerIndex,
 		 N_("Playback Container Index")},
 		{PTP_DPC_MTP_PlaybackPosition,  N_("Playback Position")},
+		{PTP_DPC_MTP_RevocationInfo,    N_("RevocationInfo")},
+		{PTP_DPC_MTP_PlaysForSureID,    N_("PlaysForSureID")},
 		{0,NULL}
         };
 
@@ -3662,6 +3664,7 @@
 	const char *format;
 } ptp_ofc_trans[] = {
 	{PTP_OFC_Undefined,"Undefined Type"},
+	{PTP_OFC_Defined,"Defined Type"},
 	{PTP_OFC_Association,"Association/Directory"},
 	{PTP_OFC_Script,"Script"},
 	{PTP_OFC_Executable,"Executable"},
@@ -3695,15 +3698,24 @@
 	uint16_t ofc;
 	const char *format;
 } ptp_ofc_mtp_trans[] = {
+	{PTP_OFC_MTP_MediaCard,N_("MediaCard")},
+	{PTP_OFC_MTP_MediaCardGroup,N_("MediaCardGroup")},
+	{PTP_OFC_MTP_Encounter,N_("Encounter")},
+	{PTP_OFC_MTP_EncounterBox,N_("EncounterBox")},
+	{PTP_OFC_MTP_M4A,N_("M4A")},
 	{PTP_OFC_MTP_Firmware,N_("Firmware")},
 	{PTP_OFC_MTP_WindowsImageFormat,N_("WindowsImageFormat")},
 	{PTP_OFC_MTP_UndefinedAudio,N_("Undefined Audio")},
 	{PTP_OFC_MTP_WMA,"WMA"},
 	{PTP_OFC_MTP_OGG,"OGG"},
+	{PTP_OFC_MTP_AAC,"AAC"},
 	{PTP_OFC_MTP_AudibleCodec,N_("Audible.com Codec")},
+	{PTP_OFC_MTP_FLAC,"FLAC"},
 	{PTP_OFC_MTP_UndefinedVideo,N_("Undefined Video")},
 	{PTP_OFC_MTP_WMV,"WMV"},
 	{PTP_OFC_MTP_MP4,"MP4"},
+	{PTP_OFC_MTP_MP2,"MP2"},
+	{PTP_OFC_MTP_3GP,"3GP"},
 	{PTP_OFC_MTP_UndefinedCollection,N_("Undefined Collection")},
 	{PTP_OFC_MTP_AbstractMultimediaAlbum,N_("Abstract Multimedia Album")},
 	{PTP_OFC_MTP_AbstractImageAlbum,N_("Abstract Image Album")},
@@ -3713,6 +3725,9 @@
 	{PTP_OFC_MTP_AbstractContactGroup,N_("Abstract Contact Group")},
 	{PTP_OFC_MTP_AbstractMessageFolder,N_("Abstract Message Folder")},
 	{PTP_OFC_MTP_AbstractChapteredProduction,N_("Abstract Chaptered Production")},
+	{PTP_OFC_MTP_AbstractAudioPlaylist,N_("Abstract Audio Playlist")},
+	{PTP_OFC_MTP_AbstractVideoPlaylist,N_("Abstract Video Playlist")},
+	{PTP_OFC_MTP_AbstractMediacast,N_("Abstract Mediacast")},
 	{PTP_OFC_MTP_WPLPlaylist,N_("WPL Playlist")},
 	{PTP_OFC_MTP_M3UPlaylist,N_("M3U Playlist")},
 	{PTP_OFC_MTP_MPLPlaylist,N_("MPL Playlist")},
@@ -3720,6 +3735,11 @@
 	{PTP_OFC_MTP_PLSPlaylist,N_("PLS Playlist")},
 	{PTP_OFC_MTP_UndefinedDocument,N_("UndefinedDocument")},
 	{PTP_OFC_MTP_AbstractDocument,N_("AbstractDocument")},
+	{PTP_OFC_MTP_XMLDocument,N_("XMLDocument")},
+	{PTP_OFC_MTP_MSWordDocument,N_("Microsoft Word Document")},
+	{PTP_OFC_MTP_MHTCompiledHTMLDocument,N_("MHT Compiled HTML Document")},
+	{PTP_OFC_MTP_MSExcelSpreadsheetXLS,N_("Microsoft Excel Spreadsheet (.xls)")},
+	{PTP_OFC_MTP_MSPowerpointPresentationPPT,N_("Microsoft Powerpoint (.ppt)")},
 	{PTP_OFC_MTP_UndefinedMessage,N_("UndefinedMessage")},
 	{PTP_OFC_MTP_AbstractMessage,N_("AbstractMessage")},
 	{PTP_OFC_MTP_UndefinedContact,N_("UndefinedContact")},
@@ -3802,15 +3822,6 @@
 	uint16_t opcode;
 	const char *name;
 } ptp_opcode_mtp_trans[] = {
-	{PTP_OC_MTP_GetSecureTimeChallenge,N_("Get secure time challenge")},
-	{PTP_OC_MTP_GetSecureTimeResponse,N_("Get secure time response")},
-	{PTP_OC_MTP_SetLicenseResponse,N_("Set license response")},
-	{PTP_OC_MTP_GetSyncList,N_("Get sync list")},
-	{PTP_OC_MTP_SendMeterChallengeQuery,N_("Send meter challenge query")},
-	{PTP_OC_MTP_GetMeterChallenge,N_("Get meter challenge")},
-	{PTP_OC_MTP_SetMeterResponse,N_("Get meter response")},
-	{PTP_OC_MTP_CleanDataStore,N_("Clean data store")},
-	{PTP_OC_MTP_GetLicenseState,N_("Get license state")},
 	{PTP_OC_MTP_GetObjectPropsSupported,N_("Get object properties supported")},
 	{PTP_OC_MTP_GetObjectPropDesc,N_("Get object property description")},
 	{PTP_OC_MTP_GetObjectPropValue,N_("Get object property value")},
@@ -3822,7 +3833,47 @@
 	{PTP_OC_MTP_GetObjectReferences,N_("Get object references")},
 	{PTP_OC_MTP_SetObjectReferences,N_("Set object references")},
 	{PTP_OC_MTP_UpdateDeviceFirmware,N_("Update device firmware")},
-	{PTP_OC_MTP_Skip,N_("Skip to next position in playlist")}
+	{PTP_OC_MTP_Skip,N_("Skip to next position in playlist")},
+
+	/* WMDRMPD Extensions */
+	{PTP_OC_MTP_WMDRMPD_GetSecureTimeChallenge,N_("Get secure time challenge")},
+	{PTP_OC_MTP_WMDRMPD_GetSecureTimeResponse,N_("Get secure time response")},
+	{PTP_OC_MTP_WMDRMPD_SetLicenseResponse,N_("Set license response")},
+	{PTP_OC_MTP_WMDRMPD_GetSyncList,N_("Get sync list")},
+	{PTP_OC_MTP_WMDRMPD_SendMeterChallengeQuery,N_("Send meter challenge query")},
+	{PTP_OC_MTP_WMDRMPD_GetMeterChallenge,N_("Get meter challenge")},
+	{PTP_OC_MTP_WMDRMPD_SetMeterResponse,N_("Get meter response")},
+	{PTP_OC_MTP_WMDRMPD_CleanDataStore,N_("Clean data store")},
+	{PTP_OC_MTP_WMDRMPD_GetLicenseState,N_("Get license state")},
+	{PTP_OC_MTP_WMDRMPD_SendWMDRMPDCommand,N_("Send WMDRM-PD Command")},
+	{PTP_OC_MTP_WMDRMPD_SendWMDRMPDRequest,N_("Send WMDRM-PD Request")},
+
+	/* WMPPD Extensions */
+	{PTP_OC_MTP_WMPPD_ReportAddedDeletedItems,N_("Report Added/Deleted Items")},
+	{PTP_OC_MTP_WMPPD_ReportAcquiredItems,N_("Report Acquired Items")},
+	{PTP_OC_MTP_WMPPD_PlaylistObjectPref,N_("Get type of playlists that are allowed to be transfered")},
+
+	/* WMDRMPD Extensions... these have no identifiers associated with them */
+	{PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest,N_("Send WMDRM-PD Application Request")},
+	{PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse,N_("Get WMDRM-PD Application Response")},
+	{PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations,N_("Enable trusted file operations")},
+	{PTP_OC_MTP_WMDRMPD_DisableTrustedFilesOperations,N_("Disable trusted file operations")},
+	{PTP_OC_MTP_WMDRMPD_EndTrustedAppSession,N_("End trusted application session")},
+
+	/* WMDRMND Extensions */
+	{PTP_OC_MTP_WMDRMND_OpenMediaSession1,N_("Open Media Session")},
+	{PTP_OC_MTP_WMDRMND_OpenMediaSession2,N_("Open Media Session")},
+	{PTP_OC_MTP_WMDRMND_GetNextDataBlock,N_("Get Next Data Block")},
+	{PTP_OC_MTP_WMDRMND_SetCurrentTimePosition,N_("Set Current Time Position")},
+	{PTP_OC_MTP_WMDRMND_SendRegistrationRequest,N_("Send Registration Request")},
+	{PTP_OC_MTP_WMDRMND_GetRegistrationResponse,N_("Get Registration Response")},
+	{PTP_OC_MTP_WMDRMND_GetProximityChallenge,N_("Get Proximity Challenge")},
+	{PTP_OC_MTP_WMDRMND_SendProximityResponse,N_("Send Proximity Response")},
+	{PTP_OC_MTP_WMDRMND_SendWMDRMNDLicenseRequest,N_("Send WMDRM-ND License Request")},
+	{PTP_OC_MTP_WMDRMND_GetWMDRMNDLicenseResponse,N_("Get WMDRM-ND License Response")},
+
+	/* WiFi Provisioning MTP Extension Codes (microsoft.com/WPDWCN: 1.0) */
+	{PTP_OC_MTP_WPDWCN_ProcessWFCObject,N_("Process WFC Object")}
 };
 
 int
@@ -3863,6 +3914,9 @@
 	{PTP_OPC_DateModified,"DateModified"},
 	{PTP_OPC_Keywords,"Keywords"},
 	{PTP_OPC_ParentObject,"ParentObject"},
+	{PTP_OPC_AllowedFolderContents,"AllowedFolderContents"},
+	{PTP_OPC_Hidden,"Hidden"},
+	{PTP_OPC_SystemObject,"SystemObject"},
 	{PTP_OPC_PersistantUniqueObjectIdentifier,"PersistantUniqueObjectIdentifier"},
 	{PTP_OPC_SyncID,"SyncID"},
 	{PTP_OPC_PropertyBag,"PropertyBag"},
@@ -3879,6 +3933,7 @@
 	{PTP_OPC_DateAdded,"DateAdded"},
 	{PTP_OPC_NonConsumable,"NonConsumable"},
 	{PTP_OPC_CorruptOrUnplayable,"CorruptOrUnplayable"},
+	{PTP_OPC_ProducerSerialNumber,"ProducerSerialNumber"},
 	{PTP_OPC_RepresentativeSampleFormat,"RepresentativeSampleFormat"},
 	{PTP_OPC_RepresentativeSampleSize,"RepresentativeSampleSize"},
 	{PTP_OPC_RepresentativeSampleHeight,"RepresentativeSampleHeight"},
@@ -3911,6 +3966,95 @@
 	{PTP_OPC_SubDescription,"SubDescription"},
 	{PTP_OPC_IsCropped,"IsCropped"},
 	{PTP_OPC_IsColorCorrected,"IsColorCorrected"},
+	{PTP_OPC_ImageBitDepth,"ImageBitDepth"},
+	{PTP_OPC_Fnumber,"Fnumber"},
+	{PTP_OPC_ExposureTime,"ExposureTime"},
+	{PTP_OPC_ExposureIndex,"ExposureIndex"},
+	{PTP_OPC_DisplayName,"DisplayName"},
+	{PTP_OPC_BodyText,"BodyText"},
+	{PTP_OPC_Subject,"Subject"},
+	{PTP_OPC_Prority,"Prority"},
+	{PTP_OPC_GivenName,"GivenName"},
+	{PTP_OPC_MiddleNames,"MiddleNames"},
+	{PTP_OPC_FamilyName,"FamilyName"},
+
+	{PTP_OPC_Prefix,"Prefix"},
+	{PTP_OPC_Suffix,"Suffix"},
+	{PTP_OPC_PhoneticGivenName,"PhoneticGivenName"},
+	{PTP_OPC_PhoneticFamilyName,"PhoneticFamilyName"},
+	{PTP_OPC_EmailPrimary,"EmailPrimary"},
+	{PTP_OPC_EmailPersonal1,"EmailPersonal1"},
+	{PTP_OPC_EmailPersonal2,"EmailPersonal2"},
+	{PTP_OPC_EmailBusiness1,"EmailBusiness1"},
+	{PTP_OPC_EmailBusiness2,"EmailBusiness2"},
+	{PTP_OPC_EmailOthers,"EmailOthers"},
+	{PTP_OPC_PhoneNumberPrimary,"PhoneNumberPrimary"},
+	{PTP_OPC_PhoneNumberPersonal,"PhoneNumberPersonal"},
+	{PTP_OPC_PhoneNumberPersonal2,"PhoneNumberPersonal2"},
+	{PTP_OPC_PhoneNumberBusiness,"PhoneNumberBusiness"},
+	{PTP_OPC_PhoneNumberBusiness2,"PhoneNumberBusiness2"},
+	{PTP_OPC_PhoneNumberMobile,"PhoneNumberMobile"},
+	{PTP_OPC_PhoneNumberMobile2,"PhoneNumberMobile2"},
+	{PTP_OPC_FaxNumberPrimary,"FaxNumberPrimary"},
+	{PTP_OPC_FaxNumberPersonal,"FaxNumberPersonal"},
+	{PTP_OPC_FaxNumberBusiness,"FaxNumberBusiness"},
+	{PTP_OPC_PagerNumber,"PagerNumber"},
+	{PTP_OPC_PhoneNumberOthers,"PhoneNumberOthers"},
+	{PTP_OPC_PrimaryWebAddress,"PrimaryWebAddress"},
+	{PTP_OPC_PersonalWebAddress,"PersonalWebAddress"},
+	{PTP_OPC_BusinessWebAddress,"BusinessWebAddress"},
+	{PTP_OPC_InstantMessengerAddress,"InstantMessengerAddress"},
+	{PTP_OPC_InstantMessengerAddress2,"InstantMessengerAddress2"},
+	{PTP_OPC_InstantMessengerAddress3,"InstantMessengerAddress3"},
+	{PTP_OPC_PostalAddressPersonalFull,"PostalAddressPersonalFull"},
+	{PTP_OPC_PostalAddressPersonalFullLine1,"PostalAddressPersonalFullLine1"},
+	{PTP_OPC_PostalAddressPersonalFullLine2,"PostalAddressPersonalFullLine2"},
+	{PTP_OPC_PostalAddressPersonalFullCity,"PostalAddressPersonalFullCity"},
+	{PTP_OPC_PostalAddressPersonalFullRegion,"PostalAddressPersonalFullRegion"},
+	{PTP_OPC_PostalAddressPersonalFullPostalCode,"PostalAddressPersonalFullPostalCode"},
+	{PTP_OPC_PostalAddressPersonalFullCountry,"PostalAddressPersonalFullCountry"},
+	{PTP_OPC_PostalAddressBusinessFull,"PostalAddressBusinessFull"},
+	{PTP_OPC_PostalAddressBusinessLine1,"PostalAddressBusinessLine1"},
+	{PTP_OPC_PostalAddressBusinessLine2,"PostalAddressBusinessLine2"},
+	{PTP_OPC_PostalAddressBusinessCity,"PostalAddressBusinessCity"},
+	{PTP_OPC_PostalAddressBusinessRegion,"PostalAddressBusinessRegion"},
+	{PTP_OPC_PostalAddressBusinessPostalCode,"PostalAddressBusinessPostalCode"},
+	{PTP_OPC_PostalAddressBusinessCountry,"PostalAddressBusinessCountry"},
+	{PTP_OPC_PostalAddressOtherFull,"PostalAddressOtherFull"},
+	{PTP_OPC_PostalAddressOtherLine1,"PostalAddressOtherLine1"},
+	{PTP_OPC_PostalAddressOtherLine2,"PostalAddressOtherLine2"},
+	{PTP_OPC_PostalAddressOtherCity,"PostalAddressOtherCity"},
+	{PTP_OPC_PostalAddressOtherRegion,"PostalAddressOtherRegion"},
+	{PTP_OPC_PostalAddressOtherPostalCode,"PostalAddressOtherPostalCode"},
+	{PTP_OPC_PostalAddressOtherCountry,"PostalAddressOtherCountry"},
+	{PTP_OPC_OrganizationName,"OrganizationName"},
+	{PTP_OPC_PhoneticOrganizationName,"PhoneticOrganizationName"},
+	{PTP_OPC_Role,"Role"},
+	{PTP_OPC_Birthdate,"Birthdate"},
+	{PTP_OPC_MessageTo,"MessageTo"},
+	{PTP_OPC_MessageCC,"MessageCC"},
+	{PTP_OPC_MessageBCC,"MessageBCC"},
+	{PTP_OPC_MessageRead,"MessageRead"},
+	{PTP_OPC_MessageReceivedTime,"MessageReceivedTime"},
+	{PTP_OPC_MessageSender,"MessageSender"},
+	{PTP_OPC_ActivityBeginTime,"ActivityBeginTime"},
+	{PTP_OPC_ActivityEndTime,"ActivityEndTime"},
+	{PTP_OPC_ActivityLocation,"ActivityLocation"},
+	{PTP_OPC_ActivityRequiredAttendees,"ActivityRequiredAttendees"},
+	{PTP_OPC_ActivityOptionalAttendees,"ActivityOptionalAttendees"},
+	{PTP_OPC_ActivityResources,"ActivityResources"},
+	{PTP_OPC_ActivityAccepted,"ActivityAccepted"},
+	{PTP_OPC_Owner,"Owner"},
+	{PTP_OPC_Editor,"Editor"},
+	{PTP_OPC_Webmaster,"Webmaster"},
+	{PTP_OPC_URLSource,"URLSource"},
+	{PTP_OPC_URLDestination,"URLDestination"},
+	{PTP_OPC_TimeBookmark,"TimeBookmark"},
+	{PTP_OPC_ObjectBookmark,"ObjectBookmark"},
+	{PTP_OPC_ByteBookmark,"ByteBookmark"},
+	{PTP_OPC_LastBuildDate,"LastBuildDate"},
+	{PTP_OPC_TimetoLive,"TimetoLive"},
+	{PTP_OPC_MediaGUID,"MediaGUID"},
 	{PTP_OPC_TotalBitRate,"TotalBitRate"},
 	{PTP_OPC_BitRateType,"BitRateType"},
 	{PTP_OPC_SampleRate,"SampleRate"},
diff --git a/src/ptp.h b/src/ptp.h
index bc1848f..1cf003c 100644
--- a/src/ptp.h
+++ b/src/ptp.h
@@ -255,15 +255,7 @@
 #define PTP_OC_NIKON_GetDevicePTPIPInfo	0x90E0
 
 /* Microsoft / MTP extension codes */
-#define PTP_OC_MTP_GetSecureTimeChallenge	0x9101
-#define PTP_OC_MTP_GetSecureTimeResponse	0x9102
-#define PTP_OC_MTP_SetLicenseResponse		0x9103
-#define PTP_OC_MTP_GetSyncList			0x9104
-#define PTP_OC_MTP_SendMeterChallengeQuery	0x9105
-#define PTP_OC_MTP_GetMeterChallenge		0x9106
-#define PTP_OC_MTP_SetMeterResponse		0x9107
-#define PTP_OC_MTP_CleanDataStore		0x9108
-#define PTP_OC_MTP_GetLicenseState		0x9109
+
 #define PTP_OC_MTP_GetObjectPropsSupported	0x9801
 #define PTP_OC_MTP_GetObjectPropDesc		0x9802
 #define PTP_OC_MTP_GetObjectPropValue		0x9803
@@ -277,6 +269,67 @@
 #define PTP_OC_MTP_UpdateDeviceFirmware		0x9812
 #define PTP_OC_MTP_Skip				0x9820
 
+/*
+ * Windows Media Digital Rights Management for Portable Devices 
+ * Extension Codes (microsoft.com/WMDRMPD: 10.1)
+ */
+#define PTP_OC_MTP_WMDRMPD_GetSecureTimeChallenge	0x9101
+#define PTP_OC_MTP_WMDRMPD_GetSecureTimeResponse	0x9102
+#define PTP_OC_MTP_WMDRMPD_SetLicenseResponse	0x9103
+#define PTP_OC_MTP_WMDRMPD_GetSyncList		0x9104
+#define PTP_OC_MTP_WMDRMPD_SendMeterChallengeQuery	0x9105
+#define PTP_OC_MTP_WMDRMPD_GetMeterChallenge	0x9106
+#define PTP_OC_MTP_WMDRMPD_SetMeterResponse		0x9107
+#define PTP_OC_MTP_WMDRMPD_CleanDataStore		0x9108
+#define PTP_OC_MTP_WMDRMPD_GetLicenseState		0x9109
+#define PTP_OC_MTP_WMDRMPD_SendWMDRMPDCommand	0x910A
+#define PTP_OC_MTP_WMDRMPD_SendWMDRMPDRequest	0x910B
+
+/* 
+ * Windows Media Digital Rights Management for Portable Devices 
+ * Extension Codes (microsoft.com/WMDRMPD: 10.1)
+ * Below are operations that have no public documented identifier 
+ * associated with them "Vendor-defined Command Code"
+ */
+#define PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest	0x9212
+#define PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse	0x9213
+#define PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations	0x9214
+#define PTP_OC_MTP_WMDRMPD_DisableTrustedFilesOperations 0x9215
+#define PTP_OC_MTP_WMDRMPD_EndTrustedAppSession		0x9216
+/* ^^^ guess ^^^ */
+
+/*
+ * Windows Media Digital Rights Management for Network Devices 
+ * Extensions (microsoft.com/WMDRMND: 1.0) MTP/IP?
+ */
+#define PTP_OC_MTP_WMDRMND_OpenMediaSession1		0x9170
+#define PTP_OC_MTP_WMDRMND_OpenMediaSession2		0x9171
+#define PTP_OC_MTP_WMDRMND_GetNextDataBlock		0x9172
+#define PTP_OC_MTP_WMDRMND_SetCurrentTimePosition	0x9173
+#define PTP_OC_MTP_WMDRMND_SendRegistrationRequest	0x9180
+#define PTP_OC_MTP_WMDRMND_GetRegistrationResponse	0x9181
+#define PTP_OC_MTP_WMDRMND_GetProximityChallenge	0x9182
+#define PTP_OC_MTP_WMDRMND_SendProximityResponse	0x9183
+#define PTP_OC_MTP_WMDRMND_SendWMDRMNDLicenseRequest	0x9184
+#define PTP_OC_MTP_WMDRMND_GetWMDRMNDLicenseResponse	0x9185
+
+/* 
+ * Windows Media Player Portiable Devices 
+ * Extension Codes (microsoft.com/WMPPD: 11.1)
+ */
+#define PTP_OC_MTP_WMPPD_ReportAddedDeletedItems	0x9201
+#define PTP_OC_MTP_WMPPD_ReportAcquiredItems 	        0x9202
+#define PTP_OC_MTP_WMPPD_PlaylistObjectPref		0x9203
+
+/*
+ * Undocumented Zune Operation Codes 
+ * maybe related to WMPPD extension set?
+ */
+#define PTP_OC_MTP_ZUNE_GETUNDEFINED001		        0x9204
+
+/* WiFi Provisioning MTP Extension Codes (microsoft.com/WPDWCN: 1.0) */
+#define PTP_OC_MTP_WPDWCN_ProcessWFCObject		0x9122
+
 /* Proprietary vendor extension operations mask */
 #define PTP_OC_EXTENSION_MASK           0xF000
 #define PTP_OC_EXTENSION                0x9000
@@ -335,6 +388,10 @@
 #define PTP_RC_MTP_Specification_By_Group_Unsupported		0xA808
 #define PTP_RC_MTP_Object_Too_Large		0xA809
 
+/* WiFi Provisioning MTP Extension Error Codes (microsoft.com/WPDWCN: 1.0) */
+#define PTP_RC_MTP_Invalid_WFC_Syntax		0xA121
+#define PTP_RC_MTP_WFC_Version_Not_Supported	0xA122
+
 /* libptp2 extended ERROR codes */
 #define PTP_ERROR_IO			0x02FF
 #define PTP_ERROR_DATA_EXPECTED		0x02FE
@@ -470,6 +527,7 @@
 
 /* ancillary formats */
 #define PTP_OFC_Undefined			0x3000
+#define PTP_OFC_Defined				0x3800
 #define PTP_OFC_Association			0x3001
 #define PTP_OFC_Script				0x3002
 #define PTP_OFC_Executable			0x3003
@@ -503,15 +561,25 @@
 /* Eastman Kodak extension ancillary format */
 #define PTP_OFC_EK_M3U				0xb002
 /* MTP extensions */
+#define PTP_OFC_MTP_MediaCard			0xb211
+#define PTP_OFC_MTP_MediaCardGroup		0xb212
+#define PTP_OFC_MTP_Encounter			0xb213
+#define PTP_OFC_MTP_EncounterBox		0xb214
+#define PTP_OFC_MTP_M4A				0xb215
+#define PTP_OFC_MTP_ZUNEUNDEFINED		0xb217 /* Unknown file type */
 #define PTP_OFC_MTP_Firmware			0xb802
-#define PTP_OFC_MTP_WindowsImageFormat		0xb882
+#define PTP_OFC_MTP_WindowsImageFormat		0xb881
 #define PTP_OFC_MTP_UndefinedAudio		0xb900
 #define PTP_OFC_MTP_WMA				0xb901
 #define PTP_OFC_MTP_OGG				0xb902
+#define PTP_OFC_MTP_AAC				0xb903
 #define PTP_OFC_MTP_AudibleCodec		0xb904
+#define PTP_OFC_MTP_FLAC			0xb906
 #define PTP_OFC_MTP_UndefinedVideo		0xb980
 #define PTP_OFC_MTP_WMV				0xb981
 #define PTP_OFC_MTP_MP4				0xb982
+#define PTP_OFC_MTP_MP2				0xb983
+#define PTP_OFC_MTP_3GP				0xb984
 #define PTP_OFC_MTP_UndefinedCollection		0xba00
 #define PTP_OFC_MTP_AbstractMultimediaAlbum	0xba01
 #define PTP_OFC_MTP_AbstractImageAlbum		0xba02
@@ -521,6 +589,9 @@
 #define PTP_OFC_MTP_AbstractContactGroup	0xba06
 #define PTP_OFC_MTP_AbstractMessageFolder	0xba07
 #define PTP_OFC_MTP_AbstractChapteredProduction	0xba08
+#define PTP_OFC_MTP_AbstractAudioPlaylist	0xba09
+#define PTP_OFC_MTP_AbstractVideoPlaylist	0xba0a
+#define PTP_OFC_MTP_AbstractMediacast		0xba0b
 #define PTP_OFC_MTP_WPLPlaylist			0xba10
 #define PTP_OFC_MTP_M3UPlaylist			0xba11
 #define PTP_OFC_MTP_MPLPlaylist			0xba12
@@ -528,6 +599,11 @@
 #define PTP_OFC_MTP_PLSPlaylist			0xba14
 #define PTP_OFC_MTP_UndefinedDocument		0xba80
 #define PTP_OFC_MTP_AbstractDocument		0xba81
+#define PTP_OFC_MTP_XMLDocument			0xba82
+#define PTP_OFC_MTP_MSWordDocument		0xba83
+#define PTP_OFC_MTP_MHTCompiledHTMLDocument	0xba84
+#define PTP_OFC_MTP_MSExcelSpreadsheetXLS	0xba85
+#define PTP_OFC_MTP_MSPowerpointPresentationPPT	0xba86
 #define PTP_OFC_MTP_UndefinedMessage		0xbb00
 #define PTP_OFC_MTP_AbstractMessage		0xbb01
 #define PTP_OFC_MTP_UndefinedContact		0xbb80
@@ -540,6 +616,7 @@
 #define PTP_OFC_MTP_vCalendar2			0xbe03
 #define PTP_OFC_MTP_UndefinedWindowsExecutable	0xbe80
 
+
 /* PTP Association Types */
 #define PTP_AT_Undefined			0x0000
 #define PTP_AT_GenericFolder			0x0001
@@ -806,7 +883,11 @@
 #define PTP_DPC_EXTENSION_MASK		0xF000
 #define PTP_DPC_EXTENSION		0xD000
 
-/* Vendor Extensions device property codes */
+/* Zune extension device property codes */
+#define PTP_DPC_MTP_ZUNE_UNKNOWN1	0xD181
+#define PTP_DPC_MTP_ZUNE_UNKNOWN2	0xD132
+#define PTP_DPC_MTP_ZUNE_UNKNOWN3	0xD215
+#define PTP_DPC_MTP_ZUNE_UNKNOWN4	0xD216
 
 /* Eastman Kodak extension device property codes */
 #define PTP_DPC_EK_ColorTemperature	0xD001
@@ -969,6 +1050,7 @@
 /* Microsoft/MTP specific */
 #define PTP_DPC_MTP_SecureTime                          0xD101
 #define PTP_DPC_MTP_DeviceCertificate                   0xD102
+#define PTP_DPC_MTP_RevocationInfo                      0xD103
 #define PTP_DPC_MTP_SynchronizationPartner              0xD401
 #define PTP_DPC_MTP_DeviceFriendlyName                  0xD402
 #define PTP_DPC_MTP_VolumeLevel                         0xD403
@@ -977,6 +1059,10 @@
 #define PTP_DPC_MTP_PlaybackObject                      0xD411
 #define PTP_DPC_MTP_PlaybackContainerIndex              0xD412
 #define PTP_DPC_MTP_PlaybackPosition                    0xD413
+#define PTP_DPC_MTP_PlaysForSureID                      0xD131
+
+/* Zune specific property codes */
+#define PTP_DPC_MTP_Zune_UnknownVersion			0xD181
 
 /* MTP specific Object Properties */
 #define PTP_OPC_StorageID				0xDC01
@@ -990,6 +1076,9 @@
 #define PTP_OPC_DateModified				0xDC09
 #define PTP_OPC_Keywords				0xDC0A
 #define PTP_OPC_ParentObject				0xDC0B
+#define PTP_OPC_AllowedFolderContents			0xDC0C
+#define PTP_OPC_Hidden					0xDC0D
+#define PTP_OPC_SystemObject				0xDC0E
 #define PTP_OPC_PersistantUniqueObjectIdentifier	0xDC41
 #define PTP_OPC_SyncID					0xDC42
 #define PTP_OPC_PropertyBag				0xDC43
@@ -1006,6 +1095,7 @@
 #define PTP_OPC_DateAdded				0xDC4E
 #define PTP_OPC_NonConsumable				0xDC4F
 #define PTP_OPC_CorruptOrUnplayable			0xDC50
+#define PTP_OPC_ProducerSerialNumber			0xDC51
 #define PTP_OPC_RepresentativeSampleFormat		0xDC81
 #define PTP_OPC_RepresentativeSampleSize		0xDC82
 #define PTP_OPC_RepresentativeSampleHeight		0xDC83
@@ -1038,6 +1128,94 @@
 #define PTP_OPC_SubDescription				0xDC9E
 #define PTP_OPC_IsCropped				0xDCD1
 #define PTP_OPC_IsColorCorrected			0xDCD2
+#define PTP_OPC_ImageBitDepth				0xDCD3
+#define PTP_OPC_Fnumber					0xDCD4
+#define PTP_OPC_ExposureTime				0xDCD5
+#define PTP_OPC_ExposureIndex				0xDCD6
+#define PTP_OPC_DisplayName				0xDCE0
+#define PTP_OPC_BodyText				0xDCE1
+#define PTP_OPC_Subject					0xDCE2
+#define PTP_OPC_Prority					0xDCE3
+#define PTP_OPC_GivenName				0xDD00
+#define PTP_OPC_MiddleNames				0xDD01
+#define PTP_OPC_FamilyName				0xDD02
+#define PTP_OPC_Prefix					0xDD03
+#define PTP_OPC_Suffix					0xDD04
+#define PTP_OPC_PhoneticGivenName			0xDD05
+#define PTP_OPC_PhoneticFamilyName			0xDD06
+#define PTP_OPC_EmailPrimary				0xDD07
+#define PTP_OPC_EmailPersonal1				0xDD08
+#define PTP_OPC_EmailPersonal2				0xDD09
+#define PTP_OPC_EmailBusiness1				0xDD0A
+#define PTP_OPC_EmailBusiness2				0xDD0B
+#define PTP_OPC_EmailOthers				0xDD0C
+#define PTP_OPC_PhoneNumberPrimary			0xDD0D
+#define PTP_OPC_PhoneNumberPersonal			0xDD0E
+#define PTP_OPC_PhoneNumberPersonal2			0xDD0F
+#define PTP_OPC_PhoneNumberBusiness			0xDD10
+#define PTP_OPC_PhoneNumberBusiness2			0xDD11
+#define PTP_OPC_PhoneNumberMobile			0xDD12
+#define PTP_OPC_PhoneNumberMobile2			0xDD13
+#define PTP_OPC_FaxNumberPrimary			0xDD14
+#define PTP_OPC_FaxNumberPersonal			0xDD15
+#define PTP_OPC_FaxNumberBusiness			0xDD16
+#define PTP_OPC_PagerNumber				0xDD17
+#define PTP_OPC_PhoneNumberOthers			0xDD18
+#define PTP_OPC_PrimaryWebAddress			0xDD19
+#define PTP_OPC_PersonalWebAddress			0xDD1A
+#define PTP_OPC_BusinessWebAddress			0xDD1B
+#define PTP_OPC_InstantMessengerAddress			0xDD1C
+#define PTP_OPC_InstantMessengerAddress2		0xDD1D
+#define PTP_OPC_InstantMessengerAddress3		0xDD1E
+#define PTP_OPC_PostalAddressPersonalFull		0xDD1F
+#define PTP_OPC_PostalAddressPersonalFullLine1		0xDD20
+#define PTP_OPC_PostalAddressPersonalFullLine2		0xDD21
+#define PTP_OPC_PostalAddressPersonalFullCity		0xDD22
+#define PTP_OPC_PostalAddressPersonalFullRegion		0xDD23
+#define PTP_OPC_PostalAddressPersonalFullPostalCode	0xDD24
+#define PTP_OPC_PostalAddressPersonalFullCountry	0xDD25
+#define PTP_OPC_PostalAddressBusinessFull		0xDD26
+#define PTP_OPC_PostalAddressBusinessLine1		0xDD27
+#define PTP_OPC_PostalAddressBusinessLine2		0xDD28
+#define PTP_OPC_PostalAddressBusinessCity		0xDD29
+#define PTP_OPC_PostalAddressBusinessRegion		0xDD2A
+#define PTP_OPC_PostalAddressBusinessPostalCode		0xDD2B
+#define PTP_OPC_PostalAddressBusinessCountry		0xDD2C
+#define PTP_OPC_PostalAddressOtherFull			0xDD2D
+#define PTP_OPC_PostalAddressOtherLine1			0xDD2E
+#define PTP_OPC_PostalAddressOtherLine2			0xDD2F
+#define PTP_OPC_PostalAddressOtherCity			0xDD30
+#define PTP_OPC_PostalAddressOtherRegion		0xDD31
+#define PTP_OPC_PostalAddressOtherPostalCode		0xDD32
+#define PTP_OPC_PostalAddressOtherCountry		0xDD33
+#define PTP_OPC_OrganizationName			0xDD34
+#define PTP_OPC_PhoneticOrganizationName		0xDD35
+#define PTP_OPC_Role					0xDD36
+#define PTP_OPC_Birthdate				0xDD37
+#define PTP_OPC_MessageTo				0xDD40
+#define PTP_OPC_MessageCC				0xDD41
+#define PTP_OPC_MessageBCC				0xDD42
+#define PTP_OPC_MessageRead				0xDD43
+#define PTP_OPC_MessageReceivedTime			0xDD44
+#define PTP_OPC_MessageSender				0xDD45
+#define PTP_OPC_ActivityBeginTime			0xDD50
+#define PTP_OPC_ActivityEndTime				0xDD51
+#define PTP_OPC_ActivityLocation			0xDD52
+#define PTP_OPC_ActivityRequiredAttendees		0xDD54
+#define PTP_OPC_ActivityOptionalAttendees		0xDD55
+#define PTP_OPC_ActivityResources			0xDD56
+#define PTP_OPC_ActivityAccepted			0xDD57
+#define PTP_OPC_Owner					0xDD5D
+#define PTP_OPC_Editor					0xDD5E
+#define PTP_OPC_Webmaster				0xDD5F
+#define PTP_OPC_URLSource				0xDD60
+#define PTP_OPC_URLDestination				0xDD61
+#define PTP_OPC_TimeBookmark				0xDD62
+#define PTP_OPC_ObjectBookmark				0xDD63
+#define PTP_OPC_ByteBookmark				0xDD64
+#define PTP_OPC_LastBuildDate				0xDD70
+#define PTP_OPC_TimetoLive				0xDD71
+#define PTP_OPC_MediaGUID				0xDD72
 #define PTP_OPC_TotalBitRate				0xDE91
 #define PTP_OPC_BitRateType				0xDE92
 #define PTP_OPC_SampleRate				0xDE93
@@ -1054,6 +1232,9 @@
 #define PTP_OPC_EncodingQuality				0xDEA0
 #define PTP_OPC_BuyFlag					0xD901
 
+/* WiFi Provisioning MTP Extension property codes */
+#define PTP_OPC_WirelessConfigurationFile		0xB104
+
 /* Device Property Form Flag */
 
 #define PTP_DPFF_None			0x00