2 * Routines for PTP/IP (Picture Transfer Protocol) packet dissection
5 * Wireshark - Network traffic analyzer
6 * By Gerald Combs <gerald@wireshark.org>
7 * Copyright 1998 Gerald Combs
9 * SPDX-License-Identifier: GPL-2.0-or-later
14 * [1] CIPA DC-X005-2005 - PTP-IP
15 * [2] BS ISO 15740:2008 - Photography Electronic still picture imaging - Picture transfer protocol (PTP)
16 * for digital still photography devices
17 * [3] gPhoto's Reversed Engineered PTP/IP documentation - http://gphoto.sourceforge.net/doc/ptpip.php
18 * [4] gPhoto's ptp2 header file https://gphoto.svn.sourceforge.net/svnroot/gphoto/trunk/libgphoto2/camlibs/ptp2/ptp.h
22 /* String Names of packet types [3] & [4]
23 * Opcode 0x1000 - 0x1025 defined in Table 22 of [2]
24 * Remainder of Opcodes from [4]. Enums reformatted from [4] ptp.h
27 /* PTP v1.0 operation codes */
28 PTP_OC_Undefined
= 0x1000,
29 PTP_OC_GetDeviceInfo
= 0x1001,
30 PTP_OC_OpenSession
= 0x1002,
31 PTP_OC_CloseSession
= 0x1003,
32 PTP_OC_GetStorageIDs
= 0x1004,
33 PTP_OC_GetStorageInfo
= 0x1005,
34 PTP_OC_GetNumObjects
= 0x1006,
35 PTP_OC_GetObjectHandles
= 0x1007,
36 PTP_OC_GetObjectInfo
= 0x1008,
37 PTP_OC_GetObject
= 0x1009,
38 PTP_OC_GetThumb
= 0x100A,
39 PTP_OC_DeleteObject
= 0x100B,
40 PTP_OC_SendObjectInfo
= 0x100C,
41 PTP_OC_SendObject
= 0x100D,
42 PTP_OC_InitiateCapture
= 0x100E,
43 PTP_OC_FormatStore
= 0x100F,
44 PTP_OC_ResetDevice
= 0x1010,
45 PTP_OC_SelfTest
= 0x1011,
46 PTP_OC_SetObjectProtection
= 0x1012,
47 PTP_OC_PowerDown
= 0x1013,
48 PTP_OC_GetDevicePropDesc
= 0x1014,
49 PTP_OC_GetDevicePropValue
= 0x1015,
50 PTP_OC_SetDevicePropValue
= 0x1016,
51 PTP_OC_ResetDevicePropValue
= 0x1017,
52 PTP_OC_TerminateOpenCapture
= 0x1018,
53 PTP_OC_MoveObject
= 0x1019,
54 PTP_OC_CopyObject
= 0x101A,
55 PTP_OC_GetPartialObject
= 0x101B,
56 PTP_OC_InitiateOpenCapture
= 0x101C,
57 /* PTP v1.1 operation codes */
58 PTP_OC_StartEnumHandles
= 0x101D,
59 PTP_OC_EnumHandles
= 0x101E,
60 PTP_OC_StopEnumHandles
= 0x101F,
61 PTP_OC_GetVendorExtensionMaps
= 0x1020,
62 PTP_OC_GetVendorDeviceInfo
= 0x1021,
63 PTP_OC_GetResizedImageObject
= 0x1022,
64 PTP_OC_GetFilesystemManifest
= 0x1023,
65 PTP_OC_GetStreamInfo
= 0x1024,
66 PTP_OC_GetStream
= 0x1025,
68 /* Eastman Kodak extension Operation Codes */
69 PTP_OC_EK_GetSerial
= 0x9003,
70 PTP_OC_EK_SetSerial
= 0x9004,
71 PTP_OC_EK_SendFileObjectInfo
= 0x9005,
72 PTP_OC_EK_SendFileObject
= 0x9006,
73 PTP_OC_EK_SetText
= 0x9008,
75 /* Canon extension Operation Codes */
76 PTP_OC_CANON_GetPartialObjectInfo
= 0x9001,
77 /* 9002 - sends 2 uint32, nothing back */
78 PTP_OC_CANON_SetObjectArchive
= 0x9002,
79 PTP_OC_CANON_KeepDeviceOn
= 0x9003,
80 PTP_OC_CANON_LockDeviceUI
= 0x9004,
81 PTP_OC_CANON_UnlockDeviceUI
= 0x9005,
82 PTP_OC_CANON_GetObjectHandleByName
= 0x9006,
83 /* no 9007 observed yet */
84 PTP_OC_CANON_InitiateReleaseControl
= 0x9008,
85 PTP_OC_CANON_TerminateReleaseControl
= 0x9009,
86 PTP_OC_CANON_TerminatePlaybackMode
= 0x900A,
87 PTP_OC_CANON_ViewfinderOn
= 0x900B,
88 PTP_OC_CANON_ViewfinderOff
= 0x900C,
89 PTP_OC_CANON_DoAeAfAwb
= 0x900D,
91 /* 900e - send nothing, gets 5 uint16t in 32bit entities back in 20byte datablob */
92 PTP_OC_CANON_GetCustomizeSpec
= 0x900E,
93 PTP_OC_CANON_GetCustomizeItemInfo
= 0x900F,
94 PTP_OC_CANON_GetCustomizeData
= 0x9010,
95 PTP_OC_CANON_SetCustomizeData
= 0x9011,
96 PTP_OC_CANON_GetCaptureStatus
= 0x9012,
97 PTP_OC_CANON_CheckEvent
= 0x9013,
98 PTP_OC_CANON_FocusLock
= 0x9014,
99 PTP_OC_CANON_FocusUnlock
= 0x9015,
100 PTP_OC_CANON_GetLocalReleaseParam
= 0x9016,
101 PTP_OC_CANON_SetLocalReleaseParam
= 0x9017,
102 PTP_OC_CANON_AskAboutPcEvf
= 0x9018,
103 PTP_OC_CANON_SendPartialObject
= 0x9019,
104 PTP_OC_CANON_InitiateCaptureInMemory
= 0x901A,
105 PTP_OC_CANON_GetPartialObjectEx
= 0x901B,
106 PTP_OC_CANON_SetObjectTime
= 0x901C,
107 PTP_OC_CANON_GetViewfinderImage
= 0x901D,
108 PTP_OC_CANON_GetObjectAttributes
= 0x901E,
109 PTP_OC_CANON_ChangeUSBProtocol
= 0x901F,
110 PTP_OC_CANON_GetChanges
= 0x9020,
111 PTP_OC_CANON_GetObjectInfoEx
= 0x9021,
112 PTP_OC_CANON_InitiateDirectTransfer
= 0x9022,
113 PTP_OC_CANON_TerminateDirectTransfer
= 0x9023,
114 PTP_OC_CANON_SendObjectInfoByPath
= 0x9024,
115 PTP_OC_CANON_SendObjectByPath
= 0x9025,
116 PTP_OC_CANON_InitiateDirectTransferEx
= 0x9026,
117 PTP_OC_CANON_GetAncillaryObjectHandles
= 0x9027,
118 PTP_OC_CANON_GetTreeInfo
= 0x9028,
119 PTP_OC_CANON_GetTreeSize
= 0x9029,
120 PTP_OC_CANON_NotifyProgress
= 0x902A,
121 PTP_OC_CANON_NotifyCancelAccepted
= 0x902B,
122 /* 902c: no parms, read 3 uint32 in data, no response parms */
123 PTP_OC_CANON_902C
= 0x902C,
124 PTP_OC_CANON_GetDirectory
= 0x902D,
125 PTP_OC_CANON_SetPairingInfo
= 0x9030,
126 PTP_OC_CANON_GetPairingInfo
= 0x9031,
127 PTP_OC_CANON_DeletePairingInfo
= 0x9032,
128 PTP_OC_CANON_GetMACAddress
= 0x9033,
129 /* 9034: 1 param, no parms returned */
130 PTP_OC_CANON_SetDisplayMonitor
= 0x9034,
131 PTP_OC_CANON_PairingComplete
= 0x9035,
132 PTP_OC_CANON_GetWirelessMAXChannel
= 0x9036,
133 /* 9101: no args, 8 byte data (01 00 00 00 00 00 00 00), no resp data. */
134 PTP_OC_CANON_EOS_GetStorageIDs
= 0x9101,
136 * = 0x28 bytes of data:
137 00000000: 34 00 00 00 02 00 02 91 0a 00 00 00 04 00 03 00
138 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
139 00000020: 00 00 ff ff ff ff 03 43 00 46 00 00 00 03 41 00
140 00000030: 3a 00 00 00
143 PTP_OC_CANON_EOS_GetStorageInfo
= 0x9102,
144 PTP_OC_CANON_EOS_GetObjectInfo
= 0x9103,
145 PTP_OC_CANON_EOS_GetObject
= 0x9104,
146 PTP_OC_CANON_EOS_DeleteObject
= 0x9105,
147 PTP_OC_CANON_EOS_FormatStore
= 0x9106,
148 PTP_OC_CANON_EOS_GetPartialObject
= 0x9107,
149 PTP_OC_CANON_EOS_GetDeviceInfoEx
= 0x9108,
152 * 3 cmdargs: 1, = 0xffffffff,00 00 10 00;
154 00000000: 48 00 00 00 02 00 09 91 12 00 00 00 01 00 00 00
155 00000010: 38 00 00 00 00 00 00 30 01 00 00 00 01 30 00 00
156 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 20
157 00000030: 00 00 00 30 44 43 49 4d 00 00 00 00 00 00 00 00 DCIM
158 00000040: 00 00 00 00 cc c3 01 46
159 * 2 respargs: = 0x0, = 0x3c
163 00000000: 18 00 00 00 01 00 09 91 15 00 00 00 01 00 00 00
164 00000010: 00 00 00 30 00 00 10 00
166 00000000: 48 00 00 00 02 00 09 91 15 00 00 00 01 00 00 00
167 00000010: 38 00 00 00 00 00 9c 33 01 00 00 00 01 30 00 00
168 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 30
169 00000030: 00 00 9c 33 32 33 31 43 41 4e 4f 4e 00 00 00 00 231CANON
170 00000040: 00 00 00 00 cc c3 01 46
173 PTP_OC_CANON_EOS_GetObjectInfoEx
= 0x9109,
174 PTP_OC_CANON_EOS_GetThumbEx
= 0x910A,
175 PTP_OC_CANON_EOS_SendPartialObject
= 0x910B,
176 PTP_OC_CANON_EOS_SetObjectAttributes
= 0x910C,
177 PTP_OC_CANON_EOS_GetObjectTime
= 0x910D,
178 PTP_OC_CANON_EOS_SetObjectTime
= 0x910E,
180 /* 910f: no args, no data, 1 response arg (0). */
181 PTP_OC_CANON_EOS_RemoteRelease
= 0x910F,
182 /* Marcus: looks more like "Set DeviceProperty" in the trace.
185 * data phase ( = 0xc, = 0xd11c, = 0x1)
188 PTP_OC_CANON_EOS_SetDevicePropValueEx
= 0x9110,
189 PTP_OC_CANON_EOS_GetRemoteMode
= 0x9113,
190 /* 9114: 1 arg ( = 0x1), no data, no resp data. */
191 PTP_OC_CANON_EOS_SetRemoteMode
= 0x9114,
192 /* 9115: 1 arg ( = 0x1), no data, no resp data. */
193 PTP_OC_CANON_EOS_SetEventMode
= 0x9115,
194 /* 9116: no args, data phase, no resp data. */
195 PTP_OC_CANON_EOS_GetEvent
= 0x9116,
196 PTP_OC_CANON_EOS_TransferComplete
= 0x9117,
197 PTP_OC_CANON_EOS_CancelTransfer
= 0x9118,
198 PTP_OC_CANON_EOS_ResetTransfer
= 0x9119,
200 /* 911a: 3 args ( = 0xfffffff7, = 0x00001000, = 0x00000001), no data, no resp data. */
201 /* 911a: 3 args ( = 0x001dfc60, = 0x00001000, = 0x00000001), no data, no resp data. */
202 PTP_OC_CANON_EOS_PCHDDCapacity
= 0x911A,
204 /* 911b: no cmd args, no data, no resp args */
205 PTP_OC_CANON_EOS_SetUILock
= 0x911B,
206 /* 911c: no cmd args, no data, no resp args */
207 PTP_OC_CANON_EOS_ResetUILock
= 0x911C,
208 PTP_OC_CANON_EOS_KeepDeviceOn
= 0x911D,
209 PTP_OC_CANON_EOS_SetNullPacketMode
= 0x911E,
210 PTP_OC_CANON_EOS_UpdateFirmware
= 0x911F,
211 PTP_OC_CANON_EOS_TransferCompleteDT
= 0x9120,
212 PTP_OC_CANON_EOS_CancelTransferDT
= 0x9121,
213 PTP_OC_CANON_EOS_SetWftProfile
= 0x9122,
214 PTP_OC_CANON_EOS_GetWftProfile
= 0x9123,
215 PTP_OC_CANON_EOS_SetProfileToWft
= 0x9124,
216 PTP_OC_CANON_EOS_BulbStart
= 0x9125,
217 PTP_OC_CANON_EOS_BulbEnd
= 0x9126,
218 PTP_OC_CANON_EOS_RequestDevicePropValue
= 0x9127,
220 /* = 0x9128 args (= 0x1/= 0x2, = 0x0), no data, no resp args */
221 PTP_OC_CANON_EOS_RemoteReleaseOn
= 0x9128,
222 /* = 0x9129 args (= 0x1/= 0x2), no data, no resp args */
223 PTP_OC_CANON_EOS_RemoteReleaseOff
= 0x9129,
224 PTP_OC_CANON_EOS_InitiateViewfinder
= 0x9151,
225 PTP_OC_CANON_EOS_TerminateViewfinder
= 0x9152,
226 PTP_OC_CANON_EOS_GetViewFinderData
= 0x9153,
227 PTP_OC_CANON_EOS_DoAf
= 0x9154,
228 PTP_OC_CANON_EOS_DriveLens
= 0x9155,
229 PTP_OC_CANON_EOS_DepthOfFieldPreview
= 0x9156,
230 PTP_OC_CANON_EOS_ClickWB
= 0x9157,
231 PTP_OC_CANON_EOS_Zoom
= 0x9158,
232 PTP_OC_CANON_EOS_ZoomPosition
= 0x9159,
233 PTP_OC_CANON_EOS_SetLiveAfFrame
= 0x915a,
234 PTP_OC_CANON_EOS_AfCancel
= 0x9160,
235 PTP_OC_CANON_EOS_FAPIMessageTX
= 0x91FE,
236 PTP_OC_CANON_EOS_FAPIMessageRX
= 0x91FF,
238 /* Nikon extension Operation Codes */
239 PTP_OC_NIKON_GetProfileAllData
= 0x9006,
240 PTP_OC_NIKON_SendProfileData
= 0x9007,
241 PTP_OC_NIKON_DeleteProfile
= 0x9008,
242 PTP_OC_NIKON_SetProfileData
= 0x9009,
243 PTP_OC_NIKON_AdvancedTransfer
= 0x9010,
244 PTP_OC_NIKON_GetFileInfoInBlock
= 0x9011,
245 PTP_OC_NIKON_Capture
= 0x90C0, /* 1 param, no data */
246 PTP_OC_NIKON_AfDrive
= 0x90C1, /* no params, no data */
247 PTP_OC_NIKON_SetControlMode
= 0x90C2, /* 1 param, no data */
248 PTP_OC_NIKON_DelImageSDRAM
= 0x90C3, /* no params, no data */
249 PTP_OC_NIKON_GetLargeThumb
= 0x90C4,
250 PTP_OC_NIKON_CurveDownload
= 0x90C5, /* 1 param, data in */
251 PTP_OC_NIKON_CurveUpload
= 0x90C6, /* 1 param, data out */
252 PTP_OC_NIKON_CheckEvent
= 0x90C7, /* no params, data in */
253 PTP_OC_NIKON_DeviceReady
= 0x90C8, /* no params, no data */
254 PTP_OC_NIKON_SetPreWBData
= 0x90C9, /* 3 params, data out */
255 PTP_OC_NIKON_GetVendorPropCodes
= 0x90CA, /* 0 params, data in */
256 PTP_OC_NIKON_AfCaptureSDRAM
= 0x90CB, /* no params, no data */
257 PTP_OC_NIKON_GetPictCtrlData
= 0x90CC,
258 PTP_OC_NIKON_SetPictCtrlData
= 0x90CD,
259 PTP_OC_NIKON_DelCstPicCtrl
= 0x90CE,
260 PTP_OC_NIKON_GetPicCtrlCapability
= 0x90CF,
262 /* Nikon Liveview stuff */
263 PTP_OC_NIKON_GetPreviewImg
= 0x9200,
264 PTP_OC_NIKON_StartLiveView
= 0x9201,
265 PTP_OC_NIKON_EndLiveView
= 0x9202,
266 PTP_OC_NIKON_GetLiveViewImg
= 0x9203,
267 PTP_OC_NIKON_MfDrive
= 0x9204,
268 PTP_OC_NIKON_ChangeAfArea
= 0x9205,
269 PTP_OC_NIKON_AfDriveCancel
= 0x9206,
270 PTP_OC_NIKON_GetDevicePTPIPInfo
= 0x90E0,
272 /* Casio EX-F1 (from http://code.google.com/p/exf1ctrl/ ) */
273 PTP_OC_CASIO_STILL_START
= 0x9001,
274 PTP_OC_CASIO_STILL_STOP
= 0x9002,
275 PTP_OC_CASIO_FOCUS
= 0x9007,
276 PTP_OC_CASIO_CF_PRESS
= 0x9009,
277 PTP_OC_CASIO_CF_RELEASE
= 0x900A,
278 PTP_OC_CASIO_GET_OBJECT_INFO
= 0x900C,
279 PTP_OC_CASIO_SHUTTER
= 0x9024,
280 PTP_OC_CASIO_GET_STILL_HANDLES
= 0x9027,
281 PTP_OC_CASIO_STILL_RESET
= 0x9028,
282 PTP_OC_CASIO_HALF_PRESS
= 0x9029,
283 PTP_OC_CASIO_HALF_RELEASE
= 0x902A,
284 PTP_OC_CASIO_CS_PRESS
= 0x902B,
285 PTP_OC_CASIO_CS_RELEASE
= 0x902C,
286 PTP_OC_CASIO_ZOOM
= 0x902D,
287 PTP_OC_CASIO_CZ_PRESS
= 0x902E,
288 PTP_OC_CASIO_CZ_RELEASE
= 0x902F,
289 PTP_OC_CASIO_MOVIE_START
= 0x9041,
290 PTP_OC_CASIO_MOVIE_STOP
= 0x9042,
291 PTP_OC_CASIO_MOVIE_PRESS
= 0x9043,
292 PTP_OC_CASIO_MOVIE_RELEASE
= 0x9044,
293 PTP_OC_CASIO_GET_MOVIE_HANDLES
= 0x9045,
294 PTP_OC_CASIO_MOVIE_RESET
= 0x9046,
295 PTP_OC_CASIO_GET_OBJECT
= 0x9025,
296 PTP_OC_CASIO_GET_THUMBNAIL
= 0x9026,
298 /* Microsoft / MTP extension codes */
299 PTP_OC_MTP_GetObjectPropsSupported
= 0x9801,
300 PTP_OC_MTP_GetObjectPropDesc
= 0x9802,
301 PTP_OC_MTP_GetObjectPropValue
= 0x9803,
302 PTP_OC_MTP_SetObjectPropValue
= 0x9804,
303 PTP_OC_MTP_GetObjPropList
= 0x9805,
304 PTP_OC_MTP_SetObjPropList
= 0x9806,
305 PTP_OC_MTP_GetInterdependendPropdesc
= 0x9807,
306 PTP_OC_MTP_SendObjectPropList
= 0x9808,
307 PTP_OC_MTP_GetObjectReferences
= 0x9810,
308 PTP_OC_MTP_SetObjectReferences
= 0x9811,
309 PTP_OC_MTP_UpdateDeviceFirmware
= 0x9812,
310 PTP_OC_MTP_Skip
= 0x9820,
313 * Windows Media Digital Rights Management for Portable Devices
314 * Extension Codes (microsoft.com/WMDRMPD: 10.1)
316 PTP_OC_MTP_WMDRMPD_GetSecureTimeChallenge
= 0x9101,
317 PTP_OC_MTP_WMDRMPD_GetSecureTimeResponse
= 0x9102,
318 PTP_OC_MTP_WMDRMPD_SetLicenseResponse
= 0x9103,
319 PTP_OC_MTP_WMDRMPD_GetSyncList
= 0x9104,
320 PTP_OC_MTP_WMDRMPD_SendMeterChallengeQuery
= 0x9105,
321 PTP_OC_MTP_WMDRMPD_GetMeterChallenge
= 0x9106,
322 PTP_OC_MTP_WMDRMPD_SetMeterResponse
= 0x9107,
323 PTP_OC_MTP_WMDRMPD_CleanDataStore
= 0x9108,
324 PTP_OC_MTP_WMDRMPD_GetLicenseState
= 0x9109,
325 PTP_OC_MTP_WMDRMPD_SendWMDRMPDCommand
= 0x910A,
326 PTP_OC_MTP_WMDRMPD_SendWMDRMPDRequest
= 0x910B,
329 * Windows Media Digital Rights Management for Portable Devices
330 * Extension Codes (microsoft.com/WMDRMPD: 10.1)
331 * Below are operations that have no public documented identifier
332 * associated with them "Vendor-defined Command Code"
334 PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest
= 0x9212,
335 PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse
= 0x9213,
336 PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations
= 0x9214,
337 PTP_OC_MTP_WMDRMPD_DisableTrustedFilesOperations
= 0x9215,
338 PTP_OC_MTP_WMDRMPD_EndTrustedAppSession
= 0x9216,
342 * Microsoft Advanced Audio/Video Transfer
343 * Extensions (microsoft.com/AAVT: 1.0)
345 PTP_OC_MTP_AAVT_OpenMediaSession
= 0x9170,
346 PTP_OC_MTP_AAVT_CloseMediaSession
= 0x9171,
347 PTP_OC_MTP_AAVT_GetNextDataBlock
= 0x9172,
348 PTP_OC_MTP_AAVT_SetCurrentTimePosition
= 0x9173,
351 * Windows Media Digital Rights Management for Network Devices
352 * Extensions (microsoft.com/WMDRMND: 1.0) MTP/IP?
354 PTP_OC_MTP_WMDRMND_SendRegistrationRequest
= 0x9180,
355 PTP_OC_MTP_WMDRMND_GetRegistrationResponse
= 0x9181,
356 PTP_OC_MTP_WMDRMND_GetProximityChallenge
= 0x9182,
357 PTP_OC_MTP_WMDRMND_SendProximityResponse
= 0x9183,
358 PTP_OC_MTP_WMDRMND_SendWMDRMNDLicenseRequest
= 0x9184,
359 PTP_OC_MTP_WMDRMND_GetWMDRMNDLicenseResponse
= 0x9185,
362 * Windows Media Player Portiable Devices
363 * Extension Codes (microsoft.com/WMPPD: 11.1)
365 PTP_OC_MTP_WMPPD_ReportAddedDeletedItems
= 0x9201,
366 PTP_OC_MTP_WMPPD_ReportAcquiredItems
= 0x9202,
367 PTP_OC_MTP_WMPPD_PlaylistObjectPref
= 0x9203,
370 * Undocumented Zune Operation Codes
371 * maybe related to WMPPD extension set?
373 PTP_OC_MTP_ZUNE_GETUNDEFINED001
= 0x9204,
375 /* WiFi Provisioning MTP Extension Codes (microsoft.com/WPDWCN: 1.0) */
376 PTP_OC_MTP_WPDWCN_ProcessWFCObject
= 0x9122,
378 /* Olympus E series commands */
379 PTP_OC_OLYMPUS_Capture
= 0x9101,
380 PTP_OC_OLYMPUS_SelfCleaning
= 0x9103,
381 PTP_OC_OLYMPUS_SetRGBGain
= 0x9106,
382 PTP_OC_OLYMPUS_SetPresetMode
= 0x9107,
383 PTP_OC_OLYMPUS_SetWBBiasAll
= 0x9108,
384 PTP_OC_OLYMPUS_GetCameraControlMode
= 0x910a,
385 PTP_OC_OLYMPUS_SetCameraControlMode
= 0x910b,
386 PTP_OC_OLYMPUS_SetWBRGBGain
= 0x910c,
387 PTP_OC_OLYMPUS_GetDeviceInfo
= 0x9301,
388 PTP_OC_OLYMPUS_Init1
= 0x9302,
389 PTP_OC_OLYMPUS_SetDateTime
= 0x9402,
390 PTP_OC_OLYMPUS_GetDateTime
= 0x9482,
391 PTP_OC_OLYMPUS_SetCameraID
= 0x9501,
392 PTP_OC_OLYMPUS_GetCameraID
= 0x9581,
394 /* Proprietary vendor extension operations mask */
395 PTP_OC_EXTENSION_MASK
= 0xF000,
396 PTP_OC_EXTENSION
= 0x9000
400 * String Names of packet types [3] & [4]
401 * Response codes 0x2000 - 0x2023 defined in Table 27 of [2]
402 * Remainder of Response codes from [4]. Enums reformatted from [4] ptp.h */
405 /* PTP v1.0 response codes */
406 PTP_RC_Undefined
= 0x2000,
408 PTP_RC_GeneralError
= 0x2002,
409 PTP_RC_SessionNotOpen
= 0x2003,
410 PTP_RC_InvalidTransactionID
= 0x2004,
411 PTP_RC_OperationNotSupported
= 0x2005,
412 PTP_RC_ParameterNotSupported
= 0x2006,
413 PTP_RC_IncompleteTransfer
= 0x2007,
414 PTP_RC_InvalidStorageId
= 0x2008,
415 PTP_RC_InvalidObjectHandle
= 0x2009,
416 PTP_RC_DevicePropNotSupported
= 0x200A,
417 PTP_RC_InvalidObjectFormatCode
= 0x200B,
418 PTP_RC_StoreFull
= 0x200C,
419 PTP_RC_ObjectWriteProtected
= 0x200D,
420 PTP_RC_StoreReadOnly
= 0x200E,
421 PTP_RC_AccessDenied
= 0x200F,
422 PTP_RC_NoThumbnailPresent
= 0x2010,
423 PTP_RC_SelfTestFailed
= 0x2011,
424 PTP_RC_PartialDeletion
= 0x2012,
425 PTP_RC_StoreNotAvailable
= 0x2013,
426 PTP_RC_SpecificationByFormatUnsupported
= 0x2014,
427 PTP_RC_NoValidObjectInfo
= 0x2015,
428 PTP_RC_InvalidCodeFormat
= 0x2016,
429 PTP_RC_UnknownVendorCode
= 0x2017,
430 PTP_RC_CaptureAlreadyTerminated
= 0x2018,
431 PTP_RC_DeviceBusy
= 0x2019,
432 PTP_RC_InvalidParentObject
= 0x201A,
433 PTP_RC_InvalidDevicePropFormat
= 0x201B,
434 PTP_RC_InvalidDevicePropValue
= 0x201C,
435 PTP_RC_InvalidParameter
= 0x201D,
436 PTP_RC_SessionAlreadyOpened
= 0x201E,
437 PTP_RC_TransactionCanceled
= 0x201F,
438 PTP_RC_SpecificationOfDestinationUnsupported
= 0x2020,
439 /* PTP v1.1 response codes */
440 PTP_RC_InvalidEnumHandle
= 0x2021,
441 PTP_RC_NoStreamEnabled
= 0x2022,
442 PTP_RC_InvalidDataSet
= 0x2023,
444 /* Eastman Kodak extension Response Codes */
445 PTP_RC_EK_FilenameRequired
= 0xA001,
446 PTP_RC_EK_FilenameConflicts
= 0xA002,
447 PTP_RC_EK_FilenameInvalid
= 0xA003,
449 /* Nikon specific response codes */
450 PTP_RC_NIKON_HardwareError
= 0xA001,
451 PTP_RC_NIKON_OutOfFocus
= 0xA002,
452 PTP_RC_NIKON_ChangeCameraModeFailed
= 0xA003,
453 PTP_RC_NIKON_InvalidStatus
= 0xA004,
454 PTP_RC_NIKON_SetPropertyNotSupported
= 0xA005,
455 PTP_RC_NIKON_WbResetError
= 0xA006,
456 PTP_RC_NIKON_DustReferenceError
= 0xA007,
457 PTP_RC_NIKON_ShutterSpeedBulb
= 0xA008,
458 PTP_RC_NIKON_MirrorUpSequence
= 0xA009,
459 PTP_RC_NIKON_CameraModeNotAdjustFNumber
= 0xA00A,
460 PTP_RC_NIKON_NotLiveView
= 0xA00B,
461 PTP_RC_NIKON_MfDriveStepEnd
= 0xA00C,
462 PTP_RC_NIKON_MfDriveStepInsufficiency
= 0xA00E,
463 PTP_RC_NIKON_AdvancedTransferCancel
= 0xA022,
465 /* Canon specific response codes */
466 PTP_RC_CANON_UNKNOWN_COMMAND
= 0xA001,
467 PTP_RC_CANON_OPERATION_REFUSED
= 0xA005,
468 PTP_RC_CANON_LENS_COVER
= 0xA006,
469 PTP_RC_CANON_BATTERY_LOW
= 0xA101,
470 PTP_RC_CANON_NOT_READY
= 0xA102,
471 PTP_RC_CANON_A009
= 0xA009,
472 /* Microsoft/MTP specific codes */
473 PTP_RC_MTP_Undefined
= 0xA800,
474 PTP_RC_MTP_Invalid_ObjectPropCode
= 0xA801,
475 PTP_RC_MTP_Invalid_ObjectProp_Format
= 0xA802,
476 PTP_RC_MTP_Invalid_ObjectProp_Value
= 0xA803,
477 PTP_RC_MTP_Invalid_ObjectReference
= 0xA804,
478 PTP_RC_MTP_Invalid_Dataset
= 0xA806,
479 PTP_RC_MTP_Specification_By_Group_Unsupported
= 0xA807,
480 PTP_RC_MTP_Specification_By_Depth_Unsupported
= 0xA808,
481 PTP_RC_MTP_Object_Too_Large
= 0xA809,
482 PTP_RC_MTP_ObjectProp_Not_Supported
= 0xA80A,
484 /* Microsoft Advanced Audio/Video Transfer response codes
485 (microsoft.com/AAVT 1.0) */
486 PTP_RC_MTP_Invalid_Media_Session_ID
= 0xA170,
487 PTP_RC_MTP_Media_Session_Limit_Reached
= 0xA171,
488 PTP_RC_MTP_No_More_Data
= 0xA172,
490 /* WiFi Provisioning MTP Extension Error Codes (microsoft.com/WPDWCN: 1.0) */
491 PTP_RC_MTP_Invalid_WFC_Syntax
= 0xA121,
492 PTP_RC_MTP_WFC_Version_Not_Supported
= 0xA122
496 /* function prototypes */
497 void dissect_ptp_opCode_openSession(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, uint16_t *offset
);
498 void dissect_ptp_transactionID (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, uint16_t *offset
);