"Fossies" - the Fresh Open Source Software Archive 
Member "libgphoto2-2.5.27/camlibs/ptp2/ptp.h" (14 Feb 2021, 198744 Bytes) of package /linux/privat/libgphoto2-2.5.27.tar.bz2:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "ptp.h" see the
Fossies "Dox" file reference documentation and the latest
Fossies "Diffs" side-by-side code changes report:
2.5.26_vs_2.5.27.
1 /* ptp.h
2 *
3 * Copyright (C) 2001 Mariusz Woloszyn <emsi@ipartners.pl>
4 * Copyright (C) 2003-2020 Marcus Meissner <marcus@jet.franken.de>
5 * Copyright (C) 2006-2008 Linus Walleij <triad@df.lth.se>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301 USA
21 */
22
23 #ifndef __PTP_H__
24 #define __PTP_H__
25
26 #include <stdarg.h>
27 #include <time.h>
28 #include <sys/time.h>
29 #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H)
30 #include <iconv.h>
31 #endif
32 #include "gphoto2-endian.h"
33 #include "device-flags.h"
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif /* __cplusplus */
38
39 /* PTP datalayer byteorder */
40
41 #define PTP_DL_BE 0xF0
42 #define PTP_DL_LE 0x0F
43
44 /* USB interface class */
45 #ifndef USB_CLASS_PTP
46 #define USB_CLASS_PTP 6
47 #endif
48
49 /* PTP request/response/event general PTP container (transport independent) */
50
51 struct _PTPContainer {
52 uint16_t Code;
53 uint32_t SessionID;
54 uint32_t Transaction_ID;
55 /* params may be of any type of size less or equal to uint32_t */
56 uint32_t Param1;
57 uint32_t Param2;
58 uint32_t Param3;
59 /* events can only have three parameters */
60 uint32_t Param4;
61 uint32_t Param5;
62 /* the number of meaningfull parameters */
63 uint8_t Nparam;
64 };
65 typedef struct _PTPContainer PTPContainer;
66
67 /* PTP USB Bulk-Pipe container */
68 /* USB bulk max packet length for high speed endpoints */
69 /* The max packet is set to 512 bytes. The spec says
70 * "end of data transfers are signaled by short packets or NULL
71 * packets". It never says anything about 512, but current
72 * implementations seem to have chosen this value, which also
73 * happens to be the size of an USB 2.0 HS endpoint, even though
74 * this is not necessary.
75 *
76 * Previously we had this as 4096 for MTP devices. We have found
77 * and fixed the bugs that made this necessary and it can be 512 again.
78 *
79 * USB 3.0 has now 1024 byte EPs.
80 */
81 #define PTP_USB_BULK_HS_MAX_PACKET_LEN_WRITE 512
82 #define PTP_USB_BULK_HS_MAX_PACKET_LEN_READ 512
83 #define PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE 1024
84 #define PTP_USB_BULK_SS_MAX_PACKET_LEN_READ 1024
85 #define PTP_USB_BULK_HDR_LEN (2*sizeof(uint32_t)+2*sizeof(uint16_t))
86 #define PTP_USB_BULK_PAYLOAD_LEN_WRITE (PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE-PTP_USB_BULK_HDR_LEN)
87 #define PTP_USB_BULK_PAYLOAD_LEN_READ (PTP_USB_BULK_SS_MAX_PACKET_LEN_READ-PTP_USB_BULK_HDR_LEN)
88 #define PTP_USB_BULK_REQ_LEN (PTP_USB_BULK_HDR_LEN+5*sizeof(uint32_t))
89
90 struct _PTPUSBBulkContainer {
91 uint32_t length;
92 uint16_t type;
93 uint16_t code;
94 uint32_t trans_id;
95 union {
96 struct {
97 uint32_t param1;
98 uint32_t param2;
99 uint32_t param3;
100 uint32_t param4;
101 uint32_t param5;
102 } params;
103 /* this must be set to the maximum of PTP_USB_BULK_PAYLOAD_LEN_WRITE
104 * and PTP_USB_BULK_PAYLOAD_LEN_READ */
105 unsigned char data[PTP_USB_BULK_PAYLOAD_LEN_READ];
106 } payload;
107 };
108 typedef struct _PTPUSBBulkContainer PTPUSBBulkContainer;
109
110 /* PTP USB Asynchronous Event Interrupt Data Format */
111 struct _PTPUSBEventContainer {
112 uint32_t length;
113 uint16_t type;
114 uint16_t code;
115 uint32_t trans_id;
116 uint32_t param1;
117 uint32_t param2;
118 uint32_t param3;
119 };
120 typedef struct _PTPUSBEventContainer PTPUSBEventContainer;
121
122 struct _PTPCanon_directtransfer_entry {
123 uint32_t oid;
124 char *str;
125 };
126 typedef struct _PTPCanon_directtransfer_entry PTPCanon_directtransfer_entry;
127
128 /* USB container types */
129
130 #define PTP_USB_CONTAINER_UNDEFINED 0x0000
131 #define PTP_USB_CONTAINER_COMMAND 0x0001
132 #define PTP_USB_CONTAINER_DATA 0x0002
133 #define PTP_USB_CONTAINER_RESPONSE 0x0003
134 #define PTP_USB_CONTAINER_EVENT 0x0004
135
136 /* PTP/IP definitions */
137 #define PTPIP_INIT_COMMAND_REQUEST 1
138 #define PTPIP_INIT_COMMAND_ACK 2
139 #define PTPIP_INIT_EVENT_REQUEST 3
140 #define PTPIP_INIT_EVENT_ACK 4
141 #define PTPIP_INIT_FAIL 5
142 #define PTPIP_CMD_REQUEST 6
143 #define PTPIP_CMD_RESPONSE 7
144 #define PTPIP_EVENT 8
145 #define PTPIP_START_DATA_PACKET 9
146 #define PTPIP_DATA_PACKET 10
147 #define PTPIP_CANCEL_TRANSACTION 11
148 #define PTPIP_END_DATA_PACKET 12
149 #define PTPIP_PING 13
150 #define PTPIP_PONG 14
151
152 struct _PTPIPHeader {
153 uint32_t length;
154 uint32_t type;
155 };
156 typedef struct _PTPIPHeader PTPIPHeader;
157
158 /* Vendor IDs */
159 /* List is linked from here: http://www.imaging.org/site/IST/Standards/PTP_Standards.aspx */
160 #define PTP_VENDOR_EASTMAN_KODAK 0x00000001
161 #define PTP_VENDOR_SEIKO_EPSON 0x00000002
162 #define PTP_VENDOR_AGILENT 0x00000003
163 #define PTP_VENDOR_POLAROID 0x00000004
164 #define PTP_VENDOR_AGFA_GEVAERT 0x00000005
165 #define PTP_VENDOR_MICROSOFT 0x00000006
166 #define PTP_VENDOR_EQUINOX 0x00000007
167 #define PTP_VENDOR_VIEWQUEST 0x00000008
168 #define PTP_VENDOR_STMICROELECTRONICS 0x00000009
169 #define PTP_VENDOR_NIKON 0x0000000A
170 #define PTP_VENDOR_CANON 0x0000000B
171 #define PTP_VENDOR_FOTONATION 0x0000000C
172 #define PTP_VENDOR_PENTAX 0x0000000D
173 #define PTP_VENDOR_FUJI 0x0000000E
174 #define PTP_VENDOR_NDD_MEDICAL_TECHNOLOGIES 0x00000012
175 #define PTP_VENDOR_SAMSUNG 0x0000001a
176 #define PTP_VENDOR_PARROT 0x0000001b
177 #define PTP_VENDOR_PANASONIC 0x0000001c
178 /* not from standards papers, but from traces: */
179 #define PTP_VENDOR_SONY 0x00000011 /* observed in the A900 */
180
181 /* Vendor extension ID used for MTP (occasionally, usually 6 is used) */
182 #define PTP_VENDOR_MTP 0xffffffff
183
184 /* gphoto overrides */
185 #define PTP_VENDOR_GP_OLYMPUS 0x0000fffe
186 #define PTP_VENDOR_GP_OLYMPUS_OMD 0x0000fffd
187 #define PTP_VENDOR_GP_LEICA 0x0000fffc
188
189
190 /* Operation Codes */
191
192 /* PTP v1.0 operation codes */
193 #define PTP_OC_Undefined 0x1000
194 #define PTP_OC_GetDeviceInfo 0x1001
195 #define PTP_OC_OpenSession 0x1002
196 #define PTP_OC_CloseSession 0x1003
197 #define PTP_OC_GetStorageIDs 0x1004
198 #define PTP_OC_GetStorageInfo 0x1005
199 #define PTP_OC_GetNumObjects 0x1006
200 #define PTP_OC_GetObjectHandles 0x1007
201 #define PTP_OC_GetObjectInfo 0x1008
202 #define PTP_OC_GetObject 0x1009
203 #define PTP_OC_GetThumb 0x100A
204 #define PTP_OC_DeleteObject 0x100B
205 #define PTP_OC_SendObjectInfo 0x100C
206 #define PTP_OC_SendObject 0x100D
207 #define PTP_OC_InitiateCapture 0x100E
208 #define PTP_OC_FormatStore 0x100F
209 #define PTP_OC_ResetDevice 0x1010
210 #define PTP_OC_SelfTest 0x1011
211 #define PTP_OC_SetObjectProtection 0x1012
212 #define PTP_OC_PowerDown 0x1013
213 #define PTP_OC_GetDevicePropDesc 0x1014
214 #define PTP_OC_GetDevicePropValue 0x1015
215 #define PTP_OC_SetDevicePropValue 0x1016
216 #define PTP_OC_ResetDevicePropValue 0x1017
217 #define PTP_OC_TerminateOpenCapture 0x1018
218 #define PTP_OC_MoveObject 0x1019
219 #define PTP_OC_CopyObject 0x101A
220 #define PTP_OC_GetPartialObject 0x101B
221 #define PTP_OC_InitiateOpenCapture 0x101C
222 /* PTP v1.1 operation codes */
223 #define PTP_OC_StartEnumHandles 0x101D
224 #define PTP_OC_EnumHandles 0x101E
225 #define PTP_OC_StopEnumHandles 0x101F
226 #define PTP_OC_GetVendorExtensionMaps 0x1020
227 #define PTP_OC_GetVendorDeviceInfo 0x1021
228 #define PTP_OC_GetResizedImageObject 0x1022
229 #define PTP_OC_GetFilesystemManifest 0x1023
230 #define PTP_OC_GetStreamInfo 0x1024
231 #define PTP_OC_GetStream 0x1025
232
233 /* Eastman Kodak extension Operation Codes */
234 #define PTP_OC_EK_GetSerial 0x9003
235 #define PTP_OC_EK_SetSerial 0x9004
236 #define PTP_OC_EK_SendFileObjectInfo 0x9005
237 #define PTP_OC_EK_SendFileObject 0x9006
238 #define PTP_OC_EK_SetText 0x9008
239
240 /* Canon extension Operation Codes */
241 #define PTP_OC_CANON_GetPartialObjectInfo 0x9001
242 /* 9002 - sends 2 uint32, nothing back */
243 #define PTP_OC_CANON_SetObjectArchive 0x9002
244 #define PTP_OC_CANON_KeepDeviceOn 0x9003
245 #define PTP_OC_CANON_LockDeviceUI 0x9004
246 #define PTP_OC_CANON_UnlockDeviceUI 0x9005
247 #define PTP_OC_CANON_GetObjectHandleByName 0x9006
248 /* no 9007 observed yet */
249 #define PTP_OC_CANON_InitiateReleaseControl 0x9008
250 #define PTP_OC_CANON_TerminateReleaseControl 0x9009
251 #define PTP_OC_CANON_TerminatePlaybackMode 0x900A
252 #define PTP_OC_CANON_ViewfinderOn 0x900B
253 #define PTP_OC_CANON_ViewfinderOff 0x900C
254 #define PTP_OC_CANON_DoAeAfAwb 0x900D
255
256 /* 900e - send nothing, gets 5 uint16t in 32bit entities back in 20byte datablob */
257 #define PTP_OC_CANON_GetCustomizeSpec 0x900E
258 #define PTP_OC_CANON_GetCustomizeItemInfo 0x900F
259 #define PTP_OC_CANON_GetCustomizeData 0x9010
260 #define PTP_OC_CANON_SetCustomizeData 0x9011
261 #define PTP_OC_CANON_GetCaptureStatus 0x9012
262 #define PTP_OC_CANON_CheckEvent 0x9013
263 #define PTP_OC_CANON_FocusLock 0x9014
264 #define PTP_OC_CANON_FocusUnlock 0x9015
265 #define PTP_OC_CANON_GetLocalReleaseParam 0x9016
266 #define PTP_OC_CANON_SetLocalReleaseParam 0x9017
267 #define PTP_OC_CANON_AskAboutPcEvf 0x9018
268 #define PTP_OC_CANON_SendPartialObject 0x9019
269 #define PTP_OC_CANON_InitiateCaptureInMemory 0x901A
270 #define PTP_OC_CANON_GetPartialObjectEx 0x901B
271 #define PTP_OC_CANON_SetObjectTime 0x901C
272 #define PTP_OC_CANON_GetViewfinderImage 0x901D
273 #define PTP_OC_CANON_GetObjectAttributes 0x901E
274 #define PTP_OC_CANON_ChangeUSBProtocol 0x901F
275 #define PTP_OC_CANON_GetChanges 0x9020
276 #define PTP_OC_CANON_GetObjectInfoEx 0x9021
277 #define PTP_OC_CANON_InitiateDirectTransfer 0x9022
278 #define PTP_OC_CANON_TerminateDirectTransfer 0x9023
279 #define PTP_OC_CANON_SendObjectInfoByPath 0x9024
280 #define PTP_OC_CANON_SendObjectByPath 0x9025
281 #define PTP_OC_CANON_InitiateDirectTansferEx 0x9026
282 #define PTP_OC_CANON_GetAncillaryObjectHandles 0x9027
283 #define PTP_OC_CANON_GetTreeInfo 0x9028
284 #define PTP_OC_CANON_GetTreeSize 0x9029
285 #define PTP_OC_CANON_NotifyProgress 0x902A
286 #define PTP_OC_CANON_NotifyCancelAccepted 0x902B
287 /* 902c: no parms, read 3 uint32 in data, no response parms */
288 #define PTP_OC_CANON_902C 0x902C
289 #define PTP_OC_CANON_GetDirectory 0x902D
290 #define PTP_OC_CANON_902E 0x902E
291 #define PTP_OC_CANON_902F 0x902F /* used during camera init */
292
293 #define PTP_OC_CANON_SetPairingInfo 0x9030
294 #define PTP_OC_CANON_GetPairingInfo 0x9031
295 #define PTP_OC_CANON_DeletePairingInfo 0x9032
296 #define PTP_OC_CANON_GetMACAddress 0x9033 /* no args */
297 /*
298 0000 12 00 00 00 02 00 33 90-1a 00 00 00 2c 9e fc c8 ......3.....,...
299 0010 33 e3 - 3.
300 */
301
302 /* 9034: 1 param, no parms returned */
303 #define PTP_OC_CANON_SetDisplayMonitor 0x9034
304 #define PTP_OC_CANON_PairingComplete 0x9035
305 #define PTP_OC_CANON_GetWirelessMAXChannel 0x9036
306
307 #define PTP_OC_CANON_GetWebServiceSpec 0x9068 /* no args */
308 /* data returned:
309 0000 1e 00 00 00 02 00 68 90-1a 00 00 00 00 01 08 00 ......h.........
310 0010 14 00 bc ce 00 00 78 00-78 00 00 14 00 00 ......x.x.....
311 */
312
313 #define PTP_OC_CANON_GetWebServiceData 0x9069 /* no args */
314 #define PTP_OC_CANON_SetWebServiceData 0x906A
315 #define PTP_OC_CANON_DeleteWebServiceData 0x906B
316 #define PTP_OC_CANON_GetRootCertificateSpec 0x906C /* no args */
317 /*
318 0000 12 00 00 00 02 00 6c 90-1a 00 00 00 00 01 6c 30 ......l.......l0
319 0010 00 00 - ..
320 */
321 #define PTP_OC_CANON_GetRootCertificateData 0x906D /* no args */
322 #define PTP_OC_CANON_SetRootCertificateData 0x906E
323 #define PTP_OC_CANON_DeleteRootCertificateData 0x906F
324 #define PTP_OC_CANON_GetGpsMobilelinkObjectInfo 0x9075 /* 2 args: utcstart, utcend */
325 #define PTP_OC_CANON_SendGpsTagInfo 0x9076 /* 1 arg: oid */
326 #define PTP_OC_CANON_GetTranscodeApproxSize 0x9077 /* 1 arg: oid? */
327 #define PTP_OC_CANON_RequestTranscodeStart 0x9078 /* 1 arg: oid? */
328 #define PTP_OC_CANON_RequestTranscodeCancel 0x9079 /* 1 arg: oid? */
329
330 #define PTP_OC_CANON_SetRemoteShootingMode 0x9086
331
332 /* 9101: no args, 8 byte data (01 00 00 00 00 00 00 00), no resp data. */
333 #define PTP_OC_CANON_EOS_GetStorageIDs 0x9101
334 /* 9102: 1 arg (0)
335 * 0x28 bytes of data:
336 00000000: 34 00 00 00 02 00 02 91 0a 00 00 00 04 00 03 00
337 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
338 00000020: 00 00 ff ff ff ff 03 43 00 46 00 00 00 03 41 00
339 00000030: 3a 00 00 00
340 * no resp args
341 */
342 #define PTP_OC_CANON_EOS_GetStorageInfo 0x9102
343 #define PTP_OC_CANON_EOS_GetObjectInfo 0x9103
344 #define PTP_OC_CANON_EOS_GetObject 0x9104
345 #define PTP_OC_CANON_EOS_DeleteObject 0x9105
346 #define PTP_OC_CANON_EOS_FormatStore 0x9106
347 #define PTP_OC_CANON_EOS_GetPartialObject 0x9107
348 #define PTP_OC_CANON_EOS_GetDeviceInfoEx 0x9108
349
350 /* sample1:
351 * 3 cmdargs: 1,0xffffffff,00 00 10 00;
352 * data:
353 00000000: 48 00 00 00 02 00 09 91 12 00 00 00 01 00 00 00
354 00000010: 38 00 00 00 00 00 00 30 01 00 00 00 01 30 00 00
355 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 20
356 00000030: 00 00 00 30 44 43 49 4d 00 00 00 00 00 00 00 00 DCIM
357 00000040: 00 00 00 00 cc c3 01 46
358 * 2 respargs: 0x0, 0x3c
359 *
360 * sample2:
361 *
362 00000000: 18 00 00 00 01 00 09 91 15 00 00 00 01 00 00 00
363 00000010: 00 00 00 30 00 00 10 00
364
365 00000000: 48 00 00 00 02 00 09 91 15 00 00 00 01 00 00 00
366 00000010: 38 00 00 00 00 00 9c 33 01 00 00 00 01 30 00 00
367 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 30
368 00000030: 00 00 9c 33 32 33 31 43 41 4e 4f 4e 00 00 00 00 231CANON
369 00000040: 00 00 00 00 cc c3 01 46
370
371 */
372 #define PTP_OC_CANON_EOS_GetObjectInfoEx 0x9109
373 #define PTP_OC_CANON_EOS_GetThumbEx 0x910A
374 #define PTP_OC_CANON_EOS_SendPartialObject 0x910B
375 #define PTP_OC_CANON_EOS_SetObjectAttributes 0x910C
376 #define PTP_OC_CANON_EOS_GetObjectTime 0x910D
377 #define PTP_OC_CANON_EOS_SetObjectTime 0x910E
378
379 /* 910f: no args, no data, 1 response arg (0). */
380 #define PTP_OC_CANON_EOS_RemoteRelease 0x910F
381 /* Marcus: looks more like "Set DeviceProperty" in the trace.
382 *
383 * no cmd args
384 * data phase (0xc, 0xd11c, 0x1)
385 * no resp args
386 */
387 #define PTP_OC_CANON_EOS_SetDevicePropValueEx 0x9110
388 #define PTP_OC_CANON_EOS_GetRemoteMode 0x9113
389 /* 9114: 1 arg (0x1), no data, no resp data. */
390 #define PTP_OC_CANON_EOS_SetRemoteMode 0x9114
391 /* 9115: 1 arg (0x1), no data, no resp data. */
392 #define PTP_OC_CANON_EOS_SetEventMode 0x9115
393 /* 9116: no args, data phase, no resp data. */
394 #define PTP_OC_CANON_EOS_GetEvent 0x9116
395 #define PTP_OC_CANON_EOS_TransferComplete 0x9117
396 #define PTP_OC_CANON_EOS_CancelTransfer 0x9118
397 #define PTP_OC_CANON_EOS_ResetTransfer 0x9119
398
399 /* 911a: 3 args (0xfffffff7, 0x00001000, 0x00000001), no data, no resp data. */
400 /* 911a: 3 args (0x001dfc60, 0x00001000, 0x00000001), no data, no resp data. */
401 #define PTP_OC_CANON_EOS_PCHDDCapacity 0x911A
402
403 /* 911b: no cmd args, no data, no resp args */
404 #define PTP_OC_CANON_EOS_SetUILock 0x911B
405 /* 911c: no cmd args, no data, no resp args */
406 #define PTP_OC_CANON_EOS_ResetUILock 0x911C
407 #define PTP_OC_CANON_EOS_KeepDeviceOn 0x911D /* no arg */
408 #define PTP_OC_CANON_EOS_SetNullPacketMode 0x911E /* 1 param */
409 #define PTP_OC_CANON_EOS_UpdateFirmware 0x911F
410 #define PTP_OC_CANON_EOS_TransferCompleteDT 0x9120
411 #define PTP_OC_CANON_EOS_CancelTransferDT 0x9121
412 #define PTP_OC_CANON_EOS_SetWftProfile 0x9122
413 #define PTP_OC_CANON_EOS_GetWftProfile 0x9123 /* 2 args: setnum, configid */
414 #define PTP_OC_CANON_EOS_SetProfileToWft 0x9124
415 #define PTP_OC_CANON_EOS_BulbStart 0x9125
416 #define PTP_OC_CANON_EOS_BulbEnd 0x9126
417 #define PTP_OC_CANON_EOS_RequestDevicePropValue 0x9127
418
419 /* 0x9128 args (0x1/0x2, 0x0), no data, no resp args */
420 #define PTP_OC_CANON_EOS_RemoteReleaseOn 0x9128
421 /* 0x9129 args (0x1/0x2), no data, no resp args */
422 #define PTP_OC_CANON_EOS_RemoteReleaseOff 0x9129
423
424 #define PTP_OC_CANON_EOS_RegistBackgroundImage 0x912A
425 #define PTP_OC_CANON_EOS_ChangePhotoStudioMode 0x912B
426 #define PTP_OC_CANON_EOS_GetPartialObjectEx 0x912C
427 #define PTP_OC_CANON_EOS_ResetMirrorLockupState 0x9130 /* no args */
428 #define PTP_OC_CANON_EOS_PopupBuiltinFlash 0x9131
429 #define PTP_OC_CANON_EOS_EndGetPartialObjectEx 0x9132
430 #define PTP_OC_CANON_EOS_MovieSelectSWOn 0x9133 /* no args */
431 #define PTP_OC_CANON_EOS_MovieSelectSWOff 0x9134 /* no args */
432 #define PTP_OC_CANON_EOS_GetCTGInfo 0x9135
433 #define PTP_OC_CANON_EOS_GetLensAdjust 0x9136
434 #define PTP_OC_CANON_EOS_SetLensAdjust 0x9137
435 #define PTP_OC_CANON_EOS_ReadyToSendMusic 0x9138
436 /* 3 paramaeters, no data, OFC, size, unknown */
437 #define PTP_OC_CANON_EOS_CreateHandle 0x9139
438 #define PTP_OC_CANON_EOS_SendPartialObjectEx 0x913A
439 #define PTP_OC_CANON_EOS_EndSendPartialObjectEx 0x913B
440 #define PTP_OC_CANON_EOS_SetCTGInfo 0x913C
441 #define PTP_OC_CANON_EOS_SetRequestOLCInfoGroup 0x913D
442 #define PTP_OC_CANON_EOS_SetRequestRollingPitchingLevel 0x913E /* 1 arg: onoff? */
443 /* 3 args, 0x21201020, 0x110, 0x1000000 (potentially reverse order) */
444
445 /* EOS M6 Mark2: opargs: 0x01000000, 0x000001020, 0 (supportkind, modelid ?),
446 response args: 0x00000811, 0x00000001 */
447
448 #define PTP_OC_CANON_EOS_GetCameraSupport 0x913F
449 #define PTP_OC_CANON_EOS_SetRating 0x9140 /* 2 args, objectid, rating? */
450 #define PTP_OC_CANON_EOS_RequestInnerDevelopStart 0x9141 /* 2 args: 1 type, 1 object? */
451 #define PTP_OC_CANON_EOS_RequestInnerDevelopParamChange 0x9142
452 #define PTP_OC_CANON_EOS_RequestInnerDevelopEnd 0x9143
453 #define PTP_OC_CANON_EOS_GpsLoggingDataMode 0x9144 /* 1 arg */
454 #define PTP_OC_CANON_EOS_GetGpsLogCurrentHandle 0x9145
455 #define PTP_OC_CANON_EOS_SetImageRecoveryData 0x9146 /* sends data? */
456 #define PTP_OC_CANON_EOS_GetImageRecoveryList 0x9147
457 #define PTP_OC_CANON_EOS_FormatImageRecoveryData 0x9148
458 #define PTP_OC_CANON_EOS_GetPresetLensAdjustParam 0x9149 /* no arg */
459 #define PTP_OC_CANON_EOS_GetRawDispImage 0x914A /* ? 2 args ? */
460 #define PTP_OC_CANON_EOS_SaveImageRecoveryData 0x914B
461 #define PTP_OC_CANON_EOS_RequestBLE 0x914C /* 2? args? */
462 #define PTP_OC_CANON_EOS_DrivePowerZoom 0x914D /* 1 arg */
463
464 #define PTP_OC_CANON_EOS_GetIptcData 0x914F
465 #define PTP_OC_CANON_EOS_SetIptcData 0x9150 /* sends data? */
466 #define PTP_OC_CANON_EOS_InitiateViewfinder 0x9151 /* no arg */
467 #define PTP_OC_CANON_EOS_TerminateViewfinder 0x9152
468 /* EOS M2 wlan: 2 params, 0x00200000 0x01000000 */
469 #define PTP_OC_CANON_EOS_GetViewFinderData 0x9153
470 #define PTP_OC_CANON_EOS_DoAf 0x9154
471 #define PTP_OC_CANON_EOS_DriveLens 0x9155
472 #define PTP_OC_CANON_EOS_DepthOfFieldPreview 0x9156 /* 1 arg */
473 #define PTP_OC_CANON_EOS_ClickWB 0x9157 /* 2 args: x,y */
474 #define PTP_OC_CANON_EOS_Zoom 0x9158 /* 1 arg: zoom */
475 #define PTP_OC_CANON_EOS_ZoomPosition 0x9159 /* 2 args: x,y */
476 #define PTP_OC_CANON_EOS_SetLiveAfFrame 0x915A /* sends data? */
477 #define PTP_OC_CANON_EOS_TouchAfPosition 0x915B /* 3 args: type,x,y */
478 #define PTP_OC_CANON_EOS_SetLvPcFlavoreditMode 0x915C /* 1 arg */
479 #define PTP_OC_CANON_EOS_SetLvPcFlavoreditParam 0x915D /* 1 arg */
480 #define PTP_OC_CANON_EOS_RequestSensorCleaning 0x915E /* 1 arg? */
481 #define PTP_OC_CANON_EOS_AfCancel 0x9160
482 #define PTP_OC_CANON_EOS_SetImageRecoveryDataEx 0x916B
483 #define PTP_OC_CANON_EOS_GetImageRecoveryListEx 0x916C
484 #define PTP_OC_CANON_EOS_CompleteAutoSendImages 0x916D
485 #define PTP_OC_CANON_EOS_NotifyAutoTransferStatus 0x916E
486 #define PTP_OC_CANON_EOS_GetReducedObject 0x916F
487 #define PTP_OC_CANON_EOS_GetObjectInfo64 0x9170 /* 1 arg: oid */
488 #define PTP_OC_CANON_EOS_GetObject64 0x9171 /* 1 arg: oid */
489 #define PTP_OC_CANON_EOS_GetPartialObject64 0x9172 /* args: oid, offset, maxbyte */
490 #define PTP_OC_CANON_EOS_GetObjectInfoEx64 0x9173 /* 2 args: storageid, oid ? */
491 #define PTP_OC_CANON_EOS_GetPartialObjectEX64 0x9174 /* args: oid, offset 64bit, maxbyte */
492 #define PTP_OC_CANON_EOS_CreateHandle64 0x9175
493 #define PTP_OC_CANON_EOS_NotifySaveComplete 0x9177
494 #define PTP_OC_CANON_EOS_GetTranscodedBlock 0x9178
495 #define PTP_OC_CANON_EOS_TransferCompleteTranscodedBlock 0x9179
496 #define PTP_OC_CANON_EOS_NotifyEstimateNumberofImport 0x9182 /* 1 arg: importnumber */
497 #define PTP_OC_CANON_EOS_NotifyNumberofImported 0x9183 /* 1 arg: importnumber */
498 #define PTP_OC_CANON_EOS_NotifySizeOfPartialDataTransfer 0x9184 /* 4 args: filesizelow, filesizehigh, downloadsizelow, downloadsizehigh */
499 #define PTP_OC_CANON_EOS_NotifyFinish 0x9185 /* 1 arg: reason */
500 #define PTP_OC_CANON_EOS_GetWFTData 0x9186
501 #define PTP_OC_CANON_EOS_SetWFTData 0x9187
502 #define PTP_OC_CANON_EOS_ChangeWFTSettingNumber 0x9188
503 #define PTP_OC_CANON_EOS_GetPictureStylePCFlavorParam 0x9189
504 #define PTP_OC_CANON_EOS_SetPictureStylePCFlavorParam 0x918A
505 #define PTP_OC_CANON_EOS_GetObjectURL 0x91AB
506 #define PTP_OC_CANON_EOS_SetCAssistMode 0x91AC
507 #define PTP_OC_CANON_EOS_GetCAssistPresetThumb 0x91AD
508 #define PTP_OC_CANON_EOS_SetFELock 0x91B9
509 #define PTP_OC_CANON_EOS_DeleteWFTSettingNumber 0x91BA
510 #define PTP_OC_CANON_EOS_SetDefaultCameraSetting 0x91BE
511 #define PTP_OC_CANON_EOS_GetAEData 0x91BF
512 #define PTP_OC_CANON_EOS_SendHostInfo 0x91E4 /* https://research.checkpoint.com/say-cheese-ransomware-ing-a-dslr-camera/ */
513 #define PTP_OC_CANON_EOS_NotifyNetworkError 0x91E8 /* 1 arg: errorcode */
514 #define PTP_OC_CANON_EOS_AdapterTransferProgress 0x91E9
515 #define PTP_OC_CANON_EOS_TransferCompleteFTP 0x91F0
516 #define PTP_OC_CANON_EOS_CancelTransferFTP 0x91F1
517 #define PTP_OC_CANON_EOS_NotifyBtStatus 0x91F9 /* https://research.checkpoint.com/say-cheese-ransomware-ing-a-dslr-camera/ */
518 #define PTP_OC_CANON_EOS_SetAdapterBatteryReport 0x91FD /* https://research.checkpoint.com/say-cheese-ransomware-ing-a-dslr-camera/ */
519 #define PTP_OC_CANON_EOS_FAPIMessageTX 0x91FE
520 #define PTP_OC_CANON_EOS_FAPIMessageRX 0x91FF
521
522 /* A1E8 ... also seen? is an error code? */
523
524 /* Nikon extension Operation Codes */
525 #define PTP_OC_NIKON_GetProfileAllData 0x9006
526 #define PTP_OC_NIKON_SendProfileData 0x9007
527 #define PTP_OC_NIKON_DeleteProfile 0x9008
528 #define PTP_OC_NIKON_SetProfileData 0x9009
529 #define PTP_OC_NIKON_AdvancedTransfer 0x9010
530 #define PTP_OC_NIKON_GetFileInfoInBlock 0x9011
531 #define PTP_OC_NIKON_InitiateCaptureRecInSdram 0x90C0 /* 1 param, no data */
532 #define PTP_OC_NIKON_AfDrive 0x90C1 /* no params, no data */
533 #define PTP_OC_NIKON_ChangeCameraMode 0x90C2 /* 1 param, no data */
534 #define PTP_OC_NIKON_DelImageSDRAM 0x90C3 /* 1 param (0x0: all, others: cancel this image) , no data */
535 #define PTP_OC_NIKON_GetLargeThumb 0x90C4
536 #define PTP_OC_NIKON_CurveDownload 0x90C5 /* 1 param, data in */
537 #define PTP_OC_NIKON_CurveUpload 0x90C6 /* 1 param, data out */
538 #define PTP_OC_NIKON_GetEvent 0x90C7 /* no params, data in */
539 #define PTP_OC_NIKON_DeviceReady 0x90C8 /* no params, no data */
540 #define PTP_OC_NIKON_SetPreWBData 0x90C9 /* 3 params, data out */
541 #define PTP_OC_NIKON_GetVendorPropCodes 0x90CA /* 0 params, data in */
542 #define PTP_OC_NIKON_AfCaptureSDRAM 0x90CB /* no params, no data */
543 #define PTP_OC_NIKON_GetPictCtrlData 0x90CC /* 2 params, data in */
544 #define PTP_OC_NIKON_SetPictCtrlData 0x90CD /* 2 params, data out */
545 #define PTP_OC_NIKON_DelCstPicCtrl 0x90CE /* 1 param, no data */
546 #define PTP_OC_NIKON_GetPicCtrlCapability 0x90CF /* 1 param, data in */
547
548 /* Nikon Liveview stuff */
549 #define PTP_OC_NIKON_GetPreviewImg 0x9200
550 #define PTP_OC_NIKON_StartLiveView 0x9201 /* no params */
551 #define PTP_OC_NIKON_EndLiveView 0x9202 /* no params */
552 #define PTP_OC_NIKON_GetLiveViewImg 0x9203 /* no params, data in */
553 #define PTP_OC_NIKON_MfDrive 0x9204 /* 2 params */
554 #define PTP_OC_NIKON_ChangeAfArea 0x9205 /* 2 params */
555 #define PTP_OC_NIKON_AfDriveCancel 0x9206 /* no params */
556 /* 2 params:
557 * 0xffffffff == No AF before, 0xfffffffe == AF before capture
558 * sdram=1, card=0
559 */
560 #define PTP_OC_NIKON_InitiateCaptureRecInMedia 0x9207 /* 1 params */
561
562 #define PTP_OC_NIKON_GetVendorStorageIDs 0x9209 /* no params, data in */
563
564 #define PTP_OC_NIKON_StartMovieRecInCard 0x920a /* no params, no data */
565 #define PTP_OC_NIKON_EndMovieRec 0x920b /* no params, no data */
566
567 #define PTP_OC_NIKON_TerminateCapture 0x920c /* 2 params */
568 #define PTP_OC_NIKON_GetFhdPicture 0x920f /* param: objecthandle. returns (at most) 1920x1028 picture */
569
570 #define PTP_OC_NIKON_GetDevicePTPIPInfo 0x90E0
571
572 #define PTP_OC_NIKON_GetPartialObjectHiSpeed 0x9400 /* 3 params, p1: object handle, p2: 32bit transfer size, p3: terminate after transfer. DATA in, Reuslt: r1: 32bit number sent, r2: before offset low 32bit , r3: before offset high 32bit */
573 #define PTP_OC_NIKON_StartSpotWb 0x9402
574 #define PTP_OC_NIKON_EndSpotWb 0x9403
575 #define PTP_OC_NIKON_ChangeSpotWbArea 0x9404
576 #define PTP_OC_NIKON_MeasureSpotWb 0x9405
577 #define PTP_OC_NIKON_EndSpotWbResultDisp 0x9406
578 #define PTP_OC_NIKON_CancelImagesInSDRAM 0x940c
579 #define PTP_OC_NIKON_GetSBHandles 0x9414
580 #define PTP_OC_NIKON_GetSBAttrDesc 0x9415
581 #define PTP_OC_NIKON_GetSBAttrValue 0x9416
582 #define PTP_OC_NIKON_SetSBAttrValue 0x9417
583 #define PTP_OC_NIKON_GetSBGroupAttrDesc 0x9418
584 #define PTP_OC_NIKON_GetSBGroupAttrValue 0x9419
585 #define PTP_OC_NIKON_SetSBGroupAttrValue 0x941a
586 #define PTP_OC_NIKON_TestFlash 0x941b
587 #define PTP_OC_NIKON_GetEventEx 0x941c /* can do multiparameter events, compared to GetEvent */
588 #define PTP_OC_NIKON_MirrorUpCancel 0x941d
589 #define PTP_OC_NIKON_PowerZoomByFocalLength 0x941e
590 #define PTP_OC_NIKON_ActiveSelectionControl 0x941f
591 #define PTP_OC_NIKON_SaveCameraSetting 0x9420
592 #define PTP_OC_NIKON_GetObjectSize 0x9421 /* param: objecthandle, returns 64bit objectsize as DATA */
593 #define PTP_OC_NIKON_ChangeMonitorOff 0x9422
594 #define PTP_OC_NIKON_GetLiveViewCompressedSize 0x9423
595 #define PTP_OC_NIKON_StartTracking 0x9424
596 #define PTP_OC_NIKON_EndTracking 0x9425
597 #define PTP_OC_NIKON_ChangeAELock 0x9426
598 #define PTP_OC_NIKON_GetLiveViewImageEx 0x9428
599 #define PTP_OC_NIKON_GetPartialObjectEx 0x9431 /* p1: objecthandle, p2: offset lower 32bit, p3: offset higher 32bit, p4: maxsize lower 32bit, p5: maxsize upper 32bit, response is r1: lower 32bit, r2: higher 32bit */
600 #define PTP_OC_NIKON_GetManualSettingLensData 0x9432
601 #define PTP_OC_NIKON_InitiatePixelMapping 0x9433
602 #define PTP_OC_NIKON_GetObjectsMetaData 0x9434
603 #define PTP_OC_NIKON_ChangeApplicationMode 0x9435
604 #define PTP_OC_NIKON_ResetMenu 0x9436
605
606
607 /* From Nikon V1 Trace */
608 #define PTP_OC_NIKON_GetDevicePropEx 0x9504 /* gets device prop data */
609
610
611 /* Casio EX-F1 (from http://code.google.com/p/exf1ctrl/ ) */
612 #define PTP_OC_CASIO_STILL_START 0x9001
613 #define PTP_OC_CASIO_STILL_STOP 0x9002
614
615 #define PTP_OC_CASIO_FOCUS 0x9007
616 #define PTP_OC_CASIO_CF_PRESS 0x9009
617 #define PTP_OC_CASIO_CF_RELEASE 0x900A
618 #define PTP_OC_CASIO_GET_OBJECT_INFO 0x900C
619
620 #define PTP_OC_CASIO_SHUTTER 0x9024
621 #define PTP_OC_CASIO_GET_STILL_HANDLES 0x9027
622 #define PTP_OC_CASIO_STILL_RESET 0x9028
623 #define PTP_OC_CASIO_HALF_PRESS 0x9029
624 #define PTP_OC_CASIO_HALF_RELEASE 0x902A
625 #define PTP_OC_CASIO_CS_PRESS 0x902B
626 #define PTP_OC_CASIO_CS_RELEASE 0x902C
627
628 #define PTP_OC_CASIO_ZOOM 0x902D
629 #define PTP_OC_CASIO_CZ_PRESS 0x902E
630 #define PTP_OC_CASIO_CZ_RELEASE 0x902F
631
632 #define PTP_OC_CASIO_MOVIE_START 0x9041
633 #define PTP_OC_CASIO_MOVIE_STOP 0x9042
634 #define PTP_OC_CASIO_MOVIE_PRESS 0x9043
635 #define PTP_OC_CASIO_MOVIE_RELEASE 0x9044
636 #define PTP_OC_CASIO_GET_MOVIE_HANDLES 0x9045
637 #define PTP_OC_CASIO_MOVIE_RESET 0x9046
638
639 #define PTP_OC_CASIO_GET_OBJECT 0x9025
640 #define PTP_OC_CASIO_GET_THUMBNAIL 0x9026
641
642 /* Sony stuff */
643 /* 9201:
644 * 3 params: 1,0,0 ; IN: data 8 bytes all 0
645 * or:
646 * 3 params: 2,0,0 ; IN: data 8 bytes all 0
647 * or
648 * 3 params: 3,0,0,: IN: data 8 bytes all 0
649 */
650 #define PTP_OC_SONY_SDIOConnect 0x9201
651 /* 9202: 1 param, 0xc8; IN data:
652 * 16 bit: 0xc8
653 * ptp array 32 bit: index, 16 bit values of propcodes */
654 #define PTP_OC_SONY_GetSDIOGetExtDeviceInfo 0x9202
655
656 #define PTP_OC_SONY_GetDevicePropdesc 0x9203
657 #define PTP_OC_SONY_GetDevicePropertyValue 0x9204
658 /* 1 param, 16bit propcode, SEND DATA: propvalue */
659 #define PTP_OC_SONY_SetControlDeviceA 0x9205
660 #define PTP_OC_SONY_GetControlDeviceDesc 0x9206
661 /* 1 param, 16bit propcode, SEND DATA: propvalue */
662 #define PTP_OC_SONY_SetControlDeviceB 0x9207
663 /* get all device property data at once */
664 #define PTP_OC_SONY_GetAllDevicePropData 0x9209 /* gets a 4126 byte blob of device props ?*/
665
666 #define PTP_OC_SONY_QX_SetExtPictureProfile 0x96F2
667 #define PTP_OC_SONY_QX_GetExtPictureProfile 0x96F3
668 #define PTP_OC_SONY_QX_GetExtLensInfo 0x96F4
669 #define PTP_OC_SONY_QX_SendUpdateFile 0x96F5
670 #define PTP_OC_SONY_QX_GetAllDevicePropData 0x96F6
671 #define PTP_OC_SONY_QX_SetControlDeviceB 0x96F8 /* ControlDevice */
672 #define PTP_OC_SONY_QX_SetControlDeviceA 0x96FA /* SetExtDevicePropValue */
673 #define PTP_OC_SONY_QX_GetSDIOGetExtDeviceInfo 0x96FD
674 #define PTP_OC_SONY_QX_Connect 0x96FE
675
676 /* Microsoft / MTP extension codes */
677
678 #define PTP_OC_MTP_GetObjectPropsSupported 0x9801
679 #define PTP_OC_MTP_GetObjectPropDesc 0x9802
680 #define PTP_OC_MTP_GetObjectPropValue 0x9803
681 #define PTP_OC_MTP_SetObjectPropValue 0x9804
682 #define PTP_OC_MTP_GetObjPropList 0x9805
683 #define PTP_OC_MTP_SetObjPropList 0x9806
684 #define PTP_OC_MTP_GetInterdependendPropdesc 0x9807
685 #define PTP_OC_MTP_SendObjectPropList 0x9808
686 #define PTP_OC_MTP_GetObjectReferences 0x9810
687 #define PTP_OC_MTP_SetObjectReferences 0x9811
688 #define PTP_OC_MTP_UpdateDeviceFirmware 0x9812
689 #define PTP_OC_MTP_Skip 0x9820
690
691 /*
692 * Windows Media Digital Rights Management for Portable Devices
693 * Extension Codes (microsoft.com/WMDRMPD: 10.1)
694 */
695 #define PTP_OC_MTP_WMDRMPD_GetSecureTimeChallenge 0x9101
696 #define PTP_OC_MTP_WMDRMPD_GetSecureTimeResponse 0x9102
697 #define PTP_OC_MTP_WMDRMPD_SetLicenseResponse 0x9103
698 #define PTP_OC_MTP_WMDRMPD_GetSyncList 0x9104
699 #define PTP_OC_MTP_WMDRMPD_SendMeterChallengeQuery 0x9105
700 #define PTP_OC_MTP_WMDRMPD_GetMeterChallenge 0x9106
701 #define PTP_OC_MTP_WMDRMPD_SetMeterResponse 0x9107
702 #define PTP_OC_MTP_WMDRMPD_CleanDataStore 0x9108
703 #define PTP_OC_MTP_WMDRMPD_GetLicenseState 0x9109
704 #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDCommand 0x910A
705 #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDRequest 0x910B
706
707 /*
708 * Windows Media Digital Rights Management for Portable Devices
709 * Extension Codes (microsoft.com/WMDRMPD: 10.1)
710 * Below are operations that have no public documented identifier
711 * associated with them "Vendor-defined Command Code"
712 */
713 #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest 0x9212
714 #define PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse 0x9213
715 #define PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations 0x9214
716 #define PTP_OC_MTP_WMDRMPD_DisableTrustedFilesOperations 0x9215
717 #define PTP_OC_MTP_WMDRMPD_EndTrustedAppSession 0x9216
718 /* ^^^ guess ^^^ */
719
720 /*
721 * Microsoft Advanced Audio/Video Transfer
722 * Extensions (microsoft.com/AAVT: 1.0)
723 */
724 #define PTP_OC_MTP_AAVT_OpenMediaSession 0x9170
725 #define PTP_OC_MTP_AAVT_CloseMediaSession 0x9171
726 #define PTP_OC_MTP_AAVT_GetNextDataBlock 0x9172
727 #define PTP_OC_MTP_AAVT_SetCurrentTimePosition 0x9173
728
729 /*
730 * Windows Media Digital Rights Management for Network Devices
731 * Extensions (microsoft.com/WMDRMND: 1.0) MTP/IP?
732 */
733 #define PTP_OC_MTP_WMDRMND_SendRegistrationRequest 0x9180
734 #define PTP_OC_MTP_WMDRMND_GetRegistrationResponse 0x9181
735 #define PTP_OC_MTP_WMDRMND_GetProximityChallenge 0x9182
736 #define PTP_OC_MTP_WMDRMND_SendProximityResponse 0x9183
737 #define PTP_OC_MTP_WMDRMND_SendWMDRMNDLicenseRequest 0x9184
738 #define PTP_OC_MTP_WMDRMND_GetWMDRMNDLicenseResponse 0x9185
739
740 /*
741 * Windows Media Player Portiable Devices
742 * Extension Codes (microsoft.com/WMPPD: 11.1)
743 */
744 #define PTP_OC_MTP_WMPPD_ReportAddedDeletedItems 0x9201
745 #define PTP_OC_MTP_WMPPD_ReportAcquiredItems 0x9202
746 #define PTP_OC_MTP_WMPPD_PlaylistObjectPref 0x9203
747
748 /*
749 * Undocumented Zune Operation Codes
750 * maybe related to WMPPD extension set?
751 */
752 #define PTP_OC_MTP_ZUNE_GETUNDEFINED001 0x9204
753
754 /* WiFi Provisioning MTP Extension Codes (microsoft.com/WPDWCN: 1.0) */
755 #define PTP_OC_MTP_WPDWCN_ProcessWFCObject 0x9122
756
757 /* Olympus OMD series commands */
758 #define PTP_OC_OLYMPUS_OMD_Capture 0x9481
759 #define PTP_OC_OLYMPUS_GetLiveViewImage 0x9484 /* liveview */
760 #define PTP_OC_OLYMPUS_OMD_GetImage 0x9485 /* gets an JPEG image (from the capture? SDRAM style?) */
761 #define PTP_OC_OLYMPUS_OMD_ChangedProperties 0x9486
762 #define PTP_OC_OLYMPUS_OMD_MFDrive 0x9487
763 #define PTP_OC_OLYMPUS_OMD_SetProperties 0x9489 /* Sends to the device a PTP list of all 16 bit device properties , count 32bit, then 16bit vals */
764 /* 948C: Record Video? */
765 /* 9482: Set One Touch WB Gain */
766 /* 9483: Set / Start Magnifying Live View Point */
767 /* 9488: Change Magnifying Live View Area */
768 /* 9493: Start Driving Zoom Lens For Direction / Focal Length / Stop Driving zoom
769 * start direction: x1=1,x2=0,x3= STEPS?, x4=1 or 2 (near / far ? )
770 * start to focallength: x1=1,x2=3,x3= VALUE? ,x4=4 (potentially more)
771 * stop: x1=2,x2=0,x3=0,x4=0
772 * unclear: x1=4,x2=0,x3=0,x4=0
773 */
774 /* 9495: Set / Clear Auto Focus Point? */
775 /* 94a0: Set / Clear Auto Exposure Point? */
776 /* 94b7 or 94bf: Set Focus Adjust Pulse */
777 /* 94A1: Detect One Touch WB Gain */
778 /* 94A2: AdjustLevelGauge? */
779 /* 94A4: Get Direct Item Buffer */
780 /* 94A5: Get Direct Item Info */
781 /* 94B7: Get Recording Folder List? */
782 /* 94BA / 94a1: Pixel Mapping? */
783 /* 94ba: TransferModeStartStop */
784 /* 94bb: Get Un Transfer List */
785 /* 94bc: GetLocalObject info? */
786 /* 94bd: GetLocalObject? */
787 /* 94be: delete local object? */
788 /* 94c0 / 94b9 : Set Comment String */
789 /* 94bf: Set Connect Pc Info? */
790 /* 94c0: Get Connect Pc Info? */
791 /* 94c1: Clear Connect Pc Info? */
792 /* 94c4: Get Camera Af Target Frames? */
793 /* 94c3: Start Station Mode */
794 /* 94c3: End Station Mode */
795 /* 911c: Get Firmware Update Mode? */
796 /* 9121: Firmware Check? */
797 /* 9122: Get Firmware Status? */
798 /* 9123: Firmware Update Initiate? */
799 /* 9124: Get Firmware Language? */
800 /* 9125: Get Firmware Status? */
801 /* 9126: Trans Firmware? */
802
803 /* Olympus E series commands */
804
805 #define PTP_OC_OLYMPUS_Capture 0x9101
806 #define PTP_OC_OLYMPUS_SelfCleaning 0x9103
807 #define PTP_OC_OLYMPUS_SetRGBGain 0x9106
808 #define PTP_OC_OLYMPUS_SetPresetMode 0x9107
809 #define PTP_OC_OLYMPUS_SetWBBiasAll 0x9108
810 #define PTP_OC_OLYMPUS_GetCameraControlMode 0x910a
811 #define PTP_OC_OLYMPUS_SetCameraControlMode 0x910b
812 #define PTP_OC_OLYMPUS_SetWBRGBGain 0x910c
813 #define PTP_OC_OLYMPUS_GetDeviceInfo 0x9301
814 #define PTP_OC_OLYMPUS_OpenSession 0x9302
815 #define PTP_OC_OLYMPUS_SetDateTime 0x9402
816 #define PTP_OC_OLYMPUS_GetDateTime 0x9482
817 #define PTP_OC_OLYMPUS_SetCameraID 0x9501
818 #define PTP_OC_OLYMPUS_GetCameraID 0x9581
819
820
821 /* Android Random I/O Extensions Codes */
822 #define PTP_OC_ANDROID_GetPartialObject64 0x95C1
823 #define PTP_OC_ANDROID_SendPartialObject 0x95C2
824 #define PTP_OC_ANDROID_TruncateObject 0x95C3
825 #define PTP_OC_ANDROID_BeginEditObject 0x95C4
826 #define PTP_OC_ANDROID_EndEditObject 0x95C5
827
828 /* Leica opcodes, from Lightroom tether plugin */
829 /* also from:
830 * https://alexhude.github.io/2019/01/24/hacking-leica-m240.html */
831 #define PTP_OC_LEICA_SetCameraSettings 0x9001 /* image shuttle */
832 #define PTP_OC_LEICA_GetCameraSettings 0x9002
833 #define PTP_OC_LEICA_GetLensParameter 0x9003 /* lrplugin */
834 /* probably 2 arguments.
835 * generic: releaseStage, stepSize
836 * Release(releasestage) = (releasestage,0)
837 * Release() = (0,0)
838 * AEStart() = (1,0)
839 * Autofocusrelease() = (2,0)
840 * AutofocusPush() = (1,0) ... same as AEStart?
841 * KeepCameraActive() = (0xe,0)
842 */
843 #define PTP_OC_LEICA_LEReleaseStages 0x9004 /* lrplugin seeing 1 (push af control), 2 (release af control), 0x0c (continuous start), 0x0d (continuous end) as potential arguments */
844 #define PTP_OC_LEICA_LEOpenSession 0x9005 /* lrplugin one argument, possible 0 is ok? */
845 #define PTP_OC_LEICA_LECloseSession 0x9006 /* lrplugin */
846 #define PTP_OC_LEICA_RequestObjectTransferReady 0x9007
847 #define PTP_OC_LEICA_GetGeoTrackingData 0x9008
848 #define PTP_OC_LEICA_OpenDebugSession 0x900a
849 #define PTP_OC_LEICA_CloseDebugSession 0x900b
850 #define PTP_OC_LEICA_GetDebugBuffer 0x900c
851 #define PTP_OC_LEICA_DebugCommandString 0x900d
852 #define PTP_OC_LEICA_GetDebugRoute 0x900e
853 #define PTP_OC_LEICA_SetIPTCData 0x900f
854 #define PTP_OC_LEICA_GetIPTCData 0x9010
855 #define PTP_OC_LEICA_LEControlAutoFocus 0x9016 /* lr plugin */
856 #define PTP_OC_LEICA_LEControlBulbExposure 0x9019 /* seen in lr plugin ... similar to 9004 and 901a release/press shutter */
857 #define PTP_OC_LEICA_LEControlContinuousExposure 0x901a /* seen in lr plugin ... similar to 9004 and 9019 release/press shutter */
858 #define PTP_OC_LEICA_901b 0x901b /* seen in lr plugin ... related to release not listed in debugprint */
859 #define PTP_OC_LEICA_LEControlPhotoLiveView 0x901c /* seen in lr plugin ... */
860 #define PTP_OC_LEICA_LEKeepSessionActive 0x901d /* seen in lr plugin ... */
861 #define PTP_OC_LEICA_LEMoveLens 0x901e /* seen in image shuttle ... 1? arg */
862 #define PTP_OC_LEICA_Get3DAxisData 0x9020
863 #define PTP_OC_LEICA_LESetZoomMode 0x9021 /* lr plugin */
864 #define PTP_OC_LEICA_LESetFocusCrossPosition 0x9022 /* lr plugin */
865 #define PTP_OC_LEICA_LESetDisplayWindowPosition 0x9024 /* lr plugin */
866 #define PTP_OC_LEICA_LEGetStreamData 0x9025 /* lr plugin */
867 #define PTP_OC_LEICA_OpenLiveViewSession 0x9030
868 #define PTP_OC_LEICA_CloseLiveViewSession 0x9031
869 #define PTP_OC_LEICA_LESetDateTime 0x9036 /* lr plugin */
870 #define PTP_OC_LEICA_GetObjectPropListPaginated 0x9037
871 #define PTP_OC_LEICA_OpenProductionSession 0x9100
872 #define PTP_OC_LEICA_CloseProductionSession 0x9101
873 #define PTP_OC_LEICA_UpdateFirmware 0x9102
874 #define PTP_OC_LEICA_OpenOSDSession 0x9103
875 #define PTP_OC_LEICA_CloseOSDSession 0x9104
876 #define PTP_OC_LEICA_GetOSDData 0x9105
877 #define PTP_OC_LEICA_GetFirmwareStruct 0x9106
878 #define PTP_OC_LEICA_GetDebugMenu 0x910b
879 #define PTP_OC_LEICA_SetDebugMenu 0x910c
880 #define PTP_OC_LEICA_OdinMessage 0x910d
881 #define PTP_OC_LEICA_GetDebugObjectHandles 0x910e
882 #define PTP_OC_LEICA_GetDebugObject 0x910f
883 #define PTP_OC_LEICA_DeleteDebugObject 0x9110
884 #define PTP_OC_LEICA_GetDebugObjectInfo 0x9111
885 #define PTP_OC_LEICA_WriteDebugObject 0x9112
886 #define PTP_OC_LEICA_CreateDebugObject 0x9113
887 #define PTP_OC_LEICA_Calibrate3DAxis 0x9114
888 #define PTP_OC_LEICA_MagneticCalibration 0x9115
889 #define PTP_OC_LEICA_GetViewFinderData 0x9116
890
891 #define PTP_OC_PARROT_GetSunshineValues 0x9201
892 #define PTP_OC_PARROT_GetTemperatureValues 0x9202
893 #define PTP_OC_PARROT_GetAngleValues 0x9203
894 #define PTP_OC_PARROT_GetGpsValues 0x9204
895 #define PTP_OC_PARROT_GetGyroscopeValues 0x9205
896 #define PTP_OC_PARROT_GetAccelerometerValues 0x9206
897 #define PTP_OC_PARROT_GetMagnetometerValues 0x9207
898 #define PTP_OC_PARROT_GetImuValues 0x9208
899 #define PTP_OC_PARROT_GetStatusMask 0x9209
900 #define PTP_OC_PARROT_EjectStorage 0x920A
901 #define PTP_OC_PARROT_StartMagnetoCalib 0x9210
902 #define PTP_OC_PARROT_StopMagnetoCalib 0x9211
903 #define PTP_OC_PARROT_MagnetoCalibStatus 0x9212
904 #define PTP_OC_PARROT_SendFirmwareUpdate 0x9213
905
906 #define PTP_OC_PANASONIC_9101 0x9101
907 #define PTP_OC_PANASONIC_OpenSession 0x9102 /* opensession (1 arg, seems to be storage id 0x00010001)*/
908 #define PTP_OC_PANASONIC_CloseSession 0x9103 /* closesession (no arg) */
909 #define PTP_OC_PANASONIC_9104 0x9104 /* get ext device id (1 arg?) */
910 /* 9104 gets this data:
911 0000 24 00 00 00 02 00 04 91-04 00 00 00 01 00 01 00 $...............
912 0010 01 00 e1 07 10 00 00 00-00 00 00 00 00 00 00 00 ................
913 0020 00 00 00 00 - ....
914 */
915
916 #define PTP_OC_PANASONIC_9107 0x9107 /* getsize? */
917 #define PTP_OC_PANASONIC_ListProperty 0x9108
918 #define PTP_OC_PANASONIC_9110 0x9110 /* Get_Object infos */
919 #define PTP_OC_PANASONIC_9112 0x9112 /* Get Partial Object , 4 args */
920 #define PTP_OC_PANASONIC_9113 0x9113 /* Skip Objects Transfer , 1 arg */
921
922 #define PTP_OC_PANASONIC_9401 0x9401
923 #define PTP_OC_PANASONIC_GetProperty 0x9402
924 #define PTP_OC_PANASONIC_SetProperty 0x9403
925 #define PTP_OC_PANASONIC_InitiateCapture 0x9404 /* Rec Ctrl Release */
926 #define PTP_OC_PANASONIC_9405 0x9405 /* Rec Ctrl AF AE */
927 #define PTP_OC_PANASONIC_9406 0x9406 /* Setup Ctrl various functions: Format, Sensor Cleaning, Menu Save, firmware update? */
928 #define PTP_OC_PANASONIC_9408 0x9408
929 #define PTP_OC_PANASONIC_9409 0x9409 /* 1 arg */
930 #define PTP_OC_PANASONIC_GetCaptureTarget 0x940A /* 1 arg, e.g. 0x08000010 */
931 #define PTP_OC_PANASONIC_SetCaptureTarget 0x940B /* 1 arg, e.g. 0x08000010 */
932 #define PTP_OC_PANASONIC_MovieRecControl 0x940C /* 07000011 start, 07000012 stop, 0700013 still capture */
933 #define PTP_OC_PANASONIC_PowerControl 0x940D /* 1 arg: 0x0A000011 power off, 0x0a00012 device reset, 0x0a00013 device restart */
934 #define PTP_OC_PANASONIC_PlayControl 0x940E /* 2 arg? 0x05000011 current=0, next=1, prev=0xffffffff */
935 #define PTP_OC_PANASONIC_PlayControlPlay 0x940F /* 0x05000020 */
936 #define PTP_OC_PANASONIC_9410 0x9410 /* Rec Ctrl Other */
937 #define PTP_OC_PANASONIC_SetGPSDataInfo 0x9411
938 #define PTP_OC_PANASONIC_Liveview 0x9412 /* 0d000010 start, 0d000011 stop */
939 #define PTP_OC_PANASONIC_PollEvents 0x9414 /* ? 1 arg e.g 12000020 */
940 #define PTP_OC_PANASONIC_GetLiveViewParameters 0x9414 /* either all formats 0x0d800012 or current format 0x0d800011 */
941 #define PTP_OC_PANASONIC_SetLiveViewParameters 0x9415 /* current format 0x0d800011 */
942 #define PTP_OC_PANASONIC_ManualFocusDrive 0x9416 /* Rec Ctrl Mf Assist, Rec Ctrl Backup Req ... 1 arg */
943
944 #define PTP_OC_PANASONIC_ChangeEvent 0x9603 /* 2 args ... e.g. 0x4002, new (change object added event) */
945 #define PTP_OC_PANASONIC_GetFromEventInfo 0x9605 /* 1 arg, e.g. 0x41000013 , 15c00021: setup exec menu save comp, 15c00022: setup exec pixel refresh comp */
946 #define PTP_OC_PANASONIC_SendDataInfo 0x9606 /* no args? used during firmware update */
947 #define PTP_OC_PANASONIC_StartSendData 0x9607 /* no args? used during firmware update */
948
949 #define PTP_OC_PANASONIC_9703 0x9703 /* Mnt_GetInfo_GetVersion ... 1 arg? */
950 #define PTP_OC_PANASONIC_9704 0x9704 /* Set USB Mode ... 80040001 */
951 #define PTP_OC_PANASONIC_9705 0x9705 /* Ctrl Liveview */
952 #define PTP_OC_PANASONIC_LiveviewImage 0x9706 /* Get Liveview Data */
953 #define PTP_OC_PANASONIC_9707 0x9707 /* 4k6k cutting get stream */
954
955 /* Samsung NX:
956 * 9002 send check event
957 * 9003 send get event
958 * 9004 require capture exec
959 * 9005 capture exec
960 * 9006 liveview info
961 * 9007 liveview exec / check get file
962 * 9008 set focus position
963 * 9009 get focus position
964 * 900a reset device
965 * 900b format device
966 * 900d get tick
967 * 900e set tick
968 * 900f set hidden command
969 * 9010 get record status
970 * 9011 file transfer
971 * 9012 set enlarge
972 * 9013 movie complete exec / movie transfer
973 * 9014 set record pause
974 * 9015 set record resume
975 * 9017 set live view
976 * 9018 image transfer
977 * 9019 set imge receive complete
978 * 901a set dev prop value
979 * 901b get dev unique id / get dev mode index / get dev prop desc
980 * 901d get dev unique id
981 * 9020 set live receive complete
982 * 9021 sensor cleaning device
983 * 9022 interval capture stop
984 * 9023 display save mode wakeup
985 * 9024 movie cancel
986 * 9025 get capture count
987 * 9026 control touch af
988 * 9027 get image path
989 * 9028 tracking af stop
990 * 902a connect try ptp/ip
991 * 902b connect confirm ptp/ip
992 * 90fe firmware update
993 */
994
995 /* These opcodes are probably FUJI Wifi only (but not USB) */
996 #define PTP_OC_FUJI_InitiateMovieCapture 0x9020
997 #define PTP_OC_FUJI_TerminateMovieCapture 0x9021
998 #define PTP_OC_FUJI_GetCapturePreview 0x9022
999 #define PTP_OC_FUJI_SetFocusPoint 0x9026 /* LockS1Lock */
1000 #define PTP_OC_FUJI_ResetFocusPoint 0x9027 /* UnlockS1Lock */
1001 #define PTP_OC_FUJI_GetDeviceInfo 0x902B
1002 #define PTP_OC_FUJI_SetShutterSpeed 0x902C /* StepShutterSpeed */
1003 #define PTP_OC_FUJI_SetAperture 0x902D /* StepFNumber */
1004 #define PTP_OC_FUJI_SetExposureCompensation 0x902E /* StepExposureBias */
1005 #define PTP_OC_FUJI_CancelInitiateCapture 0x9030
1006 #define PTP_OC_FUJI_FmSendObjectInfo 0x9040
1007 #define PTP_OC_FUJI_FmSendObject 0x9041
1008 #define PTP_OC_FUJI_FmSendPartialObject 0x9042
1009
1010 /* Proprietary vendor extension operations mask */
1011 #define PTP_OC_EXTENSION_MASK 0xF000
1012 #define PTP_OC_EXTENSION 0x9000
1013
1014
1015 /* Response Codes */
1016
1017 /* PTP v1.0 response codes */
1018 #define PTP_RC_Undefined 0x2000
1019 #define PTP_RC_OK 0x2001
1020 #define PTP_RC_GeneralError 0x2002
1021 #define PTP_RC_SessionNotOpen 0x2003
1022 #define PTP_RC_InvalidTransactionID 0x2004
1023 #define PTP_RC_OperationNotSupported 0x2005
1024 #define PTP_RC_ParameterNotSupported 0x2006
1025 #define PTP_RC_IncompleteTransfer 0x2007
1026 #define PTP_RC_InvalidStorageId 0x2008
1027 #define PTP_RC_InvalidObjectHandle 0x2009
1028 #define PTP_RC_DevicePropNotSupported 0x200A
1029 #define PTP_RC_InvalidObjectFormatCode 0x200B
1030 #define PTP_RC_StoreFull 0x200C
1031 #define PTP_RC_ObjectWriteProtected 0x200D
1032 #define PTP_RC_StoreReadOnly 0x200E
1033 #define PTP_RC_AccessDenied 0x200F
1034 #define PTP_RC_NoThumbnailPresent 0x2010
1035 #define PTP_RC_SelfTestFailed 0x2011
1036 #define PTP_RC_PartialDeletion 0x2012
1037 #define PTP_RC_StoreNotAvailable 0x2013
1038 #define PTP_RC_SpecificationByFormatUnsupported 0x2014
1039 #define PTP_RC_NoValidObjectInfo 0x2015
1040 #define PTP_RC_InvalidCodeFormat 0x2016
1041 #define PTP_RC_UnknownVendorCode 0x2017
1042 #define PTP_RC_CaptureAlreadyTerminated 0x2018
1043 #define PTP_RC_DeviceBusy 0x2019
1044 #define PTP_RC_InvalidParentObject 0x201A
1045 #define PTP_RC_InvalidDevicePropFormat 0x201B
1046 #define PTP_RC_InvalidDevicePropValue 0x201C
1047 #define PTP_RC_InvalidParameter 0x201D
1048 #define PTP_RC_SessionAlreadyOpened 0x201E
1049 #define PTP_RC_TransactionCanceled 0x201F
1050 #define PTP_RC_SpecificationOfDestinationUnsupported 0x2020
1051 /* PTP v1.1 response codes */
1052 #define PTP_RC_InvalidEnumHandle 0x2021
1053 #define PTP_RC_NoStreamEnabled 0x2022
1054 #define PTP_RC_InvalidDataSet 0x2023
1055
1056 /* Eastman Kodak extension Response Codes */
1057 #define PTP_RC_EK_FilenameRequired 0xA001
1058 #define PTP_RC_EK_FilenameConflicts 0xA002
1059 #define PTP_RC_EK_FilenameInvalid 0xA003
1060
1061 /* Nikon specific response codes */
1062 #define PTP_RC_NIKON_HardwareError 0xA001
1063 #define PTP_RC_NIKON_OutOfFocus 0xA002
1064 #define PTP_RC_NIKON_ChangeCameraModeFailed 0xA003
1065 #define PTP_RC_NIKON_InvalidStatus 0xA004
1066 #define PTP_RC_NIKON_SetPropertyNotSupported 0xA005
1067 #define PTP_RC_NIKON_WbResetError 0xA006
1068 #define PTP_RC_NIKON_DustReferenceError 0xA007
1069 #define PTP_RC_NIKON_ShutterSpeedBulb 0xA008
1070 #define PTP_RC_NIKON_MirrorUpSequence 0xA009
1071 #define PTP_RC_NIKON_CameraModeNotAdjustFNumber 0xA00A
1072 #define PTP_RC_NIKON_NotLiveView 0xA00B
1073 #define PTP_RC_NIKON_MfDriveStepEnd 0xA00C
1074 #define PTP_RC_NIKON_MfDriveStepInsufficiency 0xA00E
1075 #define PTP_RC_NIKON_NoFullHDPresent 0xA00F
1076 #define PTP_RC_NIKON_StoreError 0xA021
1077 #define PTP_RC_NIKON_StoreUnformatted 0xA022 /* from z6 sdk */
1078 #define PTP_RC_NIKON_AdvancedTransferCancel 0xA022 /* dup from me*/
1079 #define PTP_RC_NIKON_Bulb_Release_Busy 0xA200
1080 #define PTP_RC_NIKON_Silent_Release_Busy 0xA201
1081 #define PTP_RC_NIKON_MovieFrame_Release_Busy 0xA202
1082 #define PTP_RC_NIKON_Shutter_Speed_Time 0xA204
1083 #define PTP_RC_NIKON_Waiting_2ndRelease 0xA207
1084 #define PTP_RC_NIKON_MirrorUpCapture_Already_Start 0xA208
1085 #define PTP_RC_NIKON_Invalid_SBAttribute_Value 0xA209
1086
1087 /* Canon specific response codes */
1088 #define PTP_RC_CANON_UNKNOWN_COMMAND 0xA001
1089 #define PTP_RC_CANON_OPERATION_REFUSED 0xA005
1090 #define PTP_RC_CANON_LENS_COVER 0xA006
1091 #define PTP_RC_CANON_BATTERY_LOW 0xA101
1092 #define PTP_RC_CANON_NOT_READY 0xA102
1093
1094 #define PTP_RC_CANON_A009 0xA009
1095
1096 #define PTP_RC_CANON_EOS_UnknownCommand 0xA001
1097 #define PTP_RC_CANON_EOS_OperationRefused 0xA005
1098 #define PTP_RC_CANON_EOS_LensCoverClosed 0xA006
1099 #define PTP_RC_CANON_EOS_LowBattery 0xA101
1100 #define PTP_RC_CANON_EOS_ObjectNotReady 0xA102
1101 #define PTP_RC_CANON_EOS_CannotMakeObject 0xA104
1102 #define PTP_RC_CANON_EOS_MemoryStatusNotReady 0xA106
1103
1104
1105 /* Microsoft/MTP specific codes */
1106 #define PTP_RC_MTP_Undefined 0xA800
1107 #define PTP_RC_MTP_Invalid_ObjectPropCode 0xA801
1108 #define PTP_RC_MTP_Invalid_ObjectProp_Format 0xA802
1109 #define PTP_RC_MTP_Invalid_ObjectProp_Value 0xA803
1110 #define PTP_RC_MTP_Invalid_ObjectReference 0xA804
1111 #define PTP_RC_MTP_Invalid_Dataset 0xA806
1112 #define PTP_RC_MTP_Specification_By_Group_Unsupported 0xA807
1113 #define PTP_RC_MTP_Specification_By_Depth_Unsupported 0xA808
1114 #define PTP_RC_MTP_Object_Too_Large 0xA809
1115 #define PTP_RC_MTP_ObjectProp_Not_Supported 0xA80A
1116
1117 /* Microsoft Advanced Audio/Video Transfer response codes
1118 (microsoft.com/AAVT 1.0) */
1119 #define PTP_RC_MTP_Invalid_Media_Session_ID 0xA170
1120 #define PTP_RC_MTP_Media_Session_Limit_Reached 0xA171
1121 #define PTP_RC_MTP_No_More_Data 0xA172
1122
1123 /* WiFi Provisioning MTP Extension Error Codes (microsoft.com/WPDWCN: 1.0) */
1124 #define PTP_RC_MTP_Invalid_WFC_Syntax 0xA121
1125 #define PTP_RC_MTP_WFC_Version_Not_Supported 0xA122
1126
1127 /* libptp2 extended ERROR codes */
1128 #define PTP_ERROR_NODEVICE 0x02F9
1129 #define PTP_ERROR_TIMEOUT 0x02FA
1130 #define PTP_ERROR_CANCEL 0x02FB
1131 #define PTP_ERROR_BADPARAM 0x02FC
1132 #define PTP_ERROR_RESP_EXPECTED 0x02FD
1133 #define PTP_ERROR_DATA_EXPECTED 0x02FE
1134 #define PTP_ERROR_IO 0x02FF
1135
1136 /* PTP Event Codes */
1137
1138 #define PTP_EC_Undefined 0x4000
1139 #define PTP_EC_CancelTransaction 0x4001
1140 #define PTP_EC_ObjectAdded 0x4002
1141 #define PTP_EC_ObjectRemoved 0x4003
1142 #define PTP_EC_StoreAdded 0x4004
1143 #define PTP_EC_StoreRemoved 0x4005
1144 #define PTP_EC_DevicePropChanged 0x4006
1145 #define PTP_EC_ObjectInfoChanged 0x4007
1146 #define PTP_EC_DeviceInfoChanged 0x4008
1147 #define PTP_EC_RequestObjectTransfer 0x4009
1148 #define PTP_EC_StoreFull 0x400A
1149 #define PTP_EC_DeviceReset 0x400B
1150 #define PTP_EC_StorageInfoChanged 0x400C
1151 #define PTP_EC_CaptureComplete 0x400D
1152 #define PTP_EC_UnreportedStatus 0x400E
1153
1154 /* Canon extension Event Codes */
1155 #define PTP_EC_CANON_ExtendedErrorcode 0xC005 /* ? */
1156 #define PTP_EC_CANON_ObjectInfoChanged 0xC008
1157 #define PTP_EC_CANON_RequestObjectTransfer 0xC009
1158 #define PTP_EC_CANON_ShutterButtonPressed0 0xC00B
1159 #define PTP_EC_CANON_CameraModeChanged 0xC00C
1160 #define PTP_EC_CANON_ShutterButtonPressed1 0xC00E
1161
1162 #define PTP_EC_CANON_StartDirectTransfer 0xC011
1163 #define PTP_EC_CANON_StopDirectTransfer 0xC013
1164
1165 #define PTP_EC_CANON_TranscodeProgress 0xC01B /* EOS ? */
1166
1167 /* Canon EOS events */
1168 #define PTP_EC_CANON_EOS_RequestGetEvent 0xc101
1169 #define PTP_EC_CANON_EOS_RequestCancelTransferMA 0xc180
1170 #define PTP_EC_CANON_EOS_ObjectAddedEx 0xc181
1171 #define PTP_EC_CANON_EOS_ObjectRemoved 0xc182
1172 #define PTP_EC_CANON_EOS_RequestGetObjectInfoEx 0xc183
1173 #define PTP_EC_CANON_EOS_StorageStatusChanged 0xc184
1174 #define PTP_EC_CANON_EOS_StorageInfoChanged 0xc185
1175 #define PTP_EC_CANON_EOS_RequestObjectTransfer 0xc186
1176 #define PTP_EC_CANON_EOS_ObjectInfoChangedEx 0xc187
1177 #define PTP_EC_CANON_EOS_ObjectContentChanged 0xc188
1178 #define PTP_EC_CANON_EOS_PropValueChanged 0xc189
1179 #define PTP_EC_CANON_EOS_AvailListChanged 0xc18a
1180 #define PTP_EC_CANON_EOS_CameraStatusChanged 0xc18b
1181 #define PTP_EC_CANON_EOS_WillSoonShutdown 0xc18d
1182 #define PTP_EC_CANON_EOS_ShutdownTimerUpdated 0xc18e
1183 #define PTP_EC_CANON_EOS_RequestCancelTransfer 0xc18f
1184 #define PTP_EC_CANON_EOS_RequestObjectTransferDT 0xc190
1185 #define PTP_EC_CANON_EOS_RequestCancelTransferDT 0xc191
1186 #define PTP_EC_CANON_EOS_StoreAdded 0xc192
1187 #define PTP_EC_CANON_EOS_StoreRemoved 0xc193
1188 #define PTP_EC_CANON_EOS_BulbExposureTime 0xc194
1189 #define PTP_EC_CANON_EOS_RecordingTime 0xc195
1190 #define PTP_EC_CANON_EOS_InnerDevelopParam 0xc196
1191 #define PTP_EC_CANON_EOS_RequestObjectTransferDevelop 0xc197
1192 #define PTP_EC_CANON_EOS_GPSLogOutputProgress 0xc198
1193 #define PTP_EC_CANON_EOS_GPSLogOutputComplete 0xc199
1194 #define PTP_EC_CANON_EOS_TouchTrans 0xc19a
1195 #define PTP_EC_CANON_EOS_RequestObjectTransferExInfo 0xc19b
1196 #define PTP_EC_CANON_EOS_PowerZoomInfoChanged 0xc19d
1197 #define PTP_EC_CANON_EOS_RequestPushMode 0xc19f
1198 #define PTP_EC_CANON_EOS_RequestObjectTransferTS 0xc1a2
1199 #define PTP_EC_CANON_EOS_AfResult 0xc1a3
1200 #define PTP_EC_CANON_EOS_CTGInfoCheckComplete 0xc1a4
1201 #define PTP_EC_CANON_EOS_OLCInfoChanged 0xc1a5
1202 #define PTP_EC_CANON_EOS_ObjectAddedEx64 0xc1a7
1203 #define PTP_EC_CANON_EOS_ObjectInfoChangedEx64 0xc1a8
1204 #define PTP_EC_CANON_EOS_RequestObjectTransfer64 0xc1a9
1205 #define PTP_EC_CANON_EOS_RequestObjectTransferDT64 0xc1aa
1206 #define PTP_EC_CANON_EOS_RequestObjectTransferFTP64 0xc1ab
1207 #define PTP_EC_CANON_EOS_RequestObjectTransferInfoEx64 0xc1ac
1208 #define PTP_EC_CANON_EOS_RequestObjectTransferMA64 0xc1ad
1209 #define PTP_EC_CANON_EOS_ImportError 0xc1af
1210 #define PTP_EC_CANON_EOS_BlePairing 0xc1b0
1211 #define PTP_EC_CANON_EOS_RequestAutoSendImages 0xc1b1
1212 #define PTP_EC_CANON_EOS_RequestTranscodedBlockTransfer 0xc1b2
1213 #define PTP_EC_CANON_EOS_RequestCAssistImage 0xc1b4
1214 #define PTP_EC_CANON_EOS_RequestObjectTransferFTP 0xc1f1
1215
1216 /* Nikon extension Event Codes */
1217
1218 /* Nikon extension Event Codes */
1219 #define PTP_EC_Nikon_ObjectAddedInSDRAM 0xC101 /* e1: objecthandle */
1220 #define PTP_EC_Nikon_CaptureCompleteRecInSdram 0xC102 /* no args */
1221 /* Gets 1 parameter, objectid pointing to DPOF object */
1222 #define PTP_EC_Nikon_AdvancedTransfer 0xC103
1223 #define PTP_EC_Nikon_PreviewImageAdded 0xC104
1224 #define PTP_EC_Nikon_MovieRecordInterrupted 0xC105 /* e1: errocode, e2: recordkind */
1225 #define PTP_EC_Nikon_1stCaptureComplete 0xC106 /* 1st phase of mirror up is complete */
1226 #define PTP_EC_Nikon_MirrorUpCancelComplete 0xC107 /* mirror up canceling is complete */
1227 #define PTP_EC_Nikon_MovieRecordComplete 0xC108 /* e1: recordkind */
1228 #define PTP_EC_Nikon_MovieRecordStarted 0xC10A /* e1: recordkind */
1229 #define PTP_EC_Nikon_PictureControlAdjustChanged 0xC10B /* e1: picctrlitem e2: shootingmode */
1230 #define PTP_EC_Nikon_LiveViewStateChanged 0xC10C /* e1: liveview state */
1231 #define PTP_EC_Nikon_ManualSettingsLensDataChanged 0xC10E /* e1: lensnr */
1232 #define PTP_EC_Nikon_ActiveSelectionInterrupted 0xC112 /* e1: errorcode */
1233 #define PTP_EC_Nikon_SBAdded 0xC120 /* e1: sbhandle */
1234 #define PTP_EC_Nikon_SBRemoved 0xC121 /* e1: sbhandle */
1235 #define PTP_EC_Nikon_SBAttrChanged 0xC122 /* e1: sbhandle, e2: attrid */
1236 #define PTP_EC_Nikon_SBGroupAttrChanged 0xC123 /* e1: sbgroupid, e2: groupattrid */
1237
1238 /* Sony */
1239 #define PTP_EC_Sony_ObjectAdded 0xC201
1240 #define PTP_EC_Sony_ObjectRemoved 0xC202
1241 #define PTP_EC_Sony_PropertyChanged 0xC203
1242
1243 /* MTP Event codes */
1244 #define PTP_EC_MTP_ObjectPropChanged 0xC801
1245 #define PTP_EC_MTP_ObjectPropDescChanged 0xC802
1246 #define PTP_EC_MTP_ObjectReferencesChanged 0xC803
1247
1248 #define PTP_EC_PARROT_Status 0xC201
1249 #define PTP_EC_PARROT_MagnetoCalibrationStatus 0xC202
1250
1251 #define PTP_EC_PANASONIC_ObjectAdded 0xC108
1252 #define PTP_EC_PANASONIC_ObjectAddedSDRAM 0xC109
1253
1254 /* Olympus E series, PTP style in the 2018+ range (e1mark2 etc.) */
1255 /* From olympus capture tool */
1256 #define PTP_EC_Olympus_CreateRecView 0xC001
1257 #define PTP_EC_Olympus_CreateRecView_New 0xC101
1258 #define PTP_EC_Olympus_ObjectAdded 0xC002
1259 #define PTP_EC_Olympus_ObjectAdded_New 0xC102
1260 #define PTP_EC_Olympus_AF_Frame 0xC003
1261 #define PTP_EC_Olympus_AF_Frame_New 0xC103
1262 #define PTP_EC_Olympus_DirectStoreImage 0xC004
1263 #define PTP_EC_Olympus_DirectStoreImage_New 0xC104
1264 #define PTP_EC_Olympus_ComplateCameraControlOff 0xC005
1265 #define PTP_EC_Olympus_ComplateCameraControlOff_New 0xC105
1266 #define PTP_EC_Olympus_AF_Frame_Over_Info 0xC006
1267 #define PTP_EC_Olympus_AF_Frame_Over_Info_New 0xC106
1268 #define PTP_EC_Olympus_DevicePropChanged 0xC008
1269 #define PTP_EC_Olympus_DevicePropChanged_New 0xC108
1270 #define PTP_EC_Olympus_ImageTransferModeFinish 0xC00C
1271 #define PTP_EC_Olympus_ImageTransferModeFinish_New 0xC10C
1272 #define PTP_EC_Olympus_ImageRecordFinish 0xC00D
1273 #define PTP_EC_Olympus_ImageRecordFinish_New 0xC10D
1274 #define PTP_EC_Olympus_SlotStatusChange 0xC00E
1275 #define PTP_EC_Olympus_SlotStatusChange_New 0xC10E
1276 #define PTP_EC_Olympus_PrioritizeRecord 0xC00F
1277 #define PTP_EC_Olympus_PrioritizeRecord_New 0xC10F
1278 #define PTP_EC_Olympus_FailCombiningAfterShooting 0xC010
1279 #define PTP_EC_Olympus_FailCombiningAfterShooting_New 0xC110
1280 #define PTP_EC_Olympus_NotifyAFTargetFrame 0xC011
1281 #define PTP_EC_Olympus_NotifyAFTargetFrame_New 0xC111
1282 #define PTP_EC_Olympus_RawEditParamChanged 0xC112
1283 #define PTP_EC_Olympus_OlyNotifyCreateDrawEdit 0xC113
1284
1285 /* Used by the XML based E series driver */
1286 #define PTP_EC_Olympus_PropertyChanged 0xC102
1287 #define PTP_EC_Olympus_CaptureComplete 0xC103
1288
1289 #define PTP_EC_FUJI_PreviewAvailable 0xC001
1290 #define PTP_EC_FUJI_ObjectAdded 0xC004
1291
1292 /* constants for GetObjectHandles */
1293 #define PTP_GOH_ALL_STORAGE 0xffffffff
1294 #define PTP_GOH_ALL_FORMATS 0x00000000
1295 #define PTP_GOH_ALL_ASSOCS 0x00000000
1296 #define PTP_GOH_ROOT_PARENT 0xffffffff
1297
1298 /* PTP device info structure (returned by GetDevInfo) */
1299
1300 struct _PTPDeviceInfo {
1301 uint16_t StandardVersion;
1302 uint32_t VendorExtensionID;
1303 uint16_t VendorExtensionVersion;
1304 char *VendorExtensionDesc;
1305 uint16_t FunctionalMode;
1306 uint32_t OperationsSupported_len;
1307 uint16_t *OperationsSupported;
1308 uint32_t EventsSupported_len;
1309 uint16_t *EventsSupported;
1310 uint32_t DevicePropertiesSupported_len;
1311 uint16_t *DevicePropertiesSupported;
1312 uint32_t CaptureFormats_len;
1313 uint16_t *CaptureFormats;
1314 uint32_t ImageFormats_len;
1315 uint16_t *ImageFormats;
1316 char *Manufacturer;
1317 char *Model;
1318 char *DeviceVersion;
1319 char *SerialNumber;
1320 };
1321 typedef struct _PTPDeviceInfo PTPDeviceInfo;
1322
1323 /* PTP storageIDs structute (returned by GetStorageIDs) */
1324
1325 struct _PTPStorageIDs {
1326 uint32_t n;
1327 uint32_t *Storage;
1328 };
1329 typedef struct _PTPStorageIDs PTPStorageIDs;
1330
1331 /* PTP StorageInfo structure (returned by GetStorageInfo) */
1332 struct _PTPStorageInfo {
1333 uint16_t StorageType;
1334 uint16_t FilesystemType;
1335 uint16_t AccessCapability;
1336 uint64_t MaxCapability;
1337 uint64_t FreeSpaceInBytes;
1338 uint32_t FreeSpaceInImages;
1339 char *StorageDescription;
1340 char *VolumeLabel;
1341 };
1342 typedef struct _PTPStorageInfo PTPStorageInfo;
1343
1344 /* PTP Stream Info */
1345 struct _PTPStreamInfo {
1346 uint64_t DatasetSize;
1347 uint64_t TimeResolution;
1348 uint32_t FrameHeaderSize;
1349 uint32_t FrameMaxSize;
1350 uint32_t PacketHeaderSize;
1351 uint32_t PacketMaxSize;
1352 uint32_t PacketAlignment;
1353 };
1354 typedef struct _PTPStreamInfo PTPStreamInfo;
1355
1356 /* PTP objecthandles structure (returned by GetObjectHandles) */
1357
1358 struct _PTPObjectHandles {
1359 uint32_t n;
1360 uint32_t *Handler;
1361 };
1362 typedef struct _PTPObjectHandles PTPObjectHandles;
1363
1364 #define PTP_HANDLER_SPECIAL 0xffffffff
1365 #define PTP_HANDLER_ROOT 0x00000000
1366
1367
1368 /* PTP objectinfo structure (returned by GetObjectInfo) */
1369
1370 struct _PTPObjectInfo {
1371 uint32_t StorageID;
1372 uint16_t ObjectFormat;
1373 uint16_t ProtectionStatus;
1374 /* In the regular objectinfo this is 32bit,
1375 * but we keep the general object size here
1376 * that also arrives via other methods and so
1377 * use 64bit */
1378 uint64_t ObjectCompressedSize;
1379 uint16_t ThumbFormat;
1380 uint32_t ThumbCompressedSize;
1381 uint32_t ThumbPixWidth;
1382 uint32_t ThumbPixHeight;
1383 uint32_t ImagePixWidth;
1384 uint32_t ImagePixHeight;
1385 uint32_t ImageBitDepth;
1386 uint32_t ParentObject;
1387 uint16_t AssociationType;
1388 uint32_t AssociationDesc;
1389 uint32_t SequenceNumber;
1390 char *Filename;
1391 time_t CaptureDate;
1392 time_t ModificationDate;
1393 char *Keywords;
1394 };
1395 typedef struct _PTPObjectInfo PTPObjectInfo;
1396
1397 struct _PTPObjectFilesystemInfo {
1398 uint32_t ObjectHandle;
1399 uint32_t StorageID;
1400 uint16_t ObjectFormat;
1401 uint16_t ProtectionStatus;
1402 uint64_t ObjectCompressedSize64;
1403 uint32_t ParentObject;
1404 uint16_t AssociationType;
1405 uint32_t AssociationDesc;
1406 uint32_t SequenceNumber;
1407 char *Filename;
1408 time_t ModificationDate;
1409 };
1410 typedef struct _PTPObjectFilesystemInfo PTPObjectFilesystemInfo;
1411
1412 /* max ptp string length INCLUDING terminating null character */
1413
1414 #define PTP_MAXSTRLEN 255
1415
1416 /* PTP Object Format Codes */
1417
1418 /* ancillary formats */
1419 #define PTP_OFC_Undefined 0x3000
1420 #define PTP_OFC_Defined 0x3800
1421 #define PTP_OFC_Association 0x3001
1422 #define PTP_OFC_Script 0x3002
1423 #define PTP_OFC_Executable 0x3003
1424 #define PTP_OFC_Text 0x3004
1425 #define PTP_OFC_HTML 0x3005
1426 #define PTP_OFC_DPOF 0x3006
1427 #define PTP_OFC_AIFF 0x3007
1428 #define PTP_OFC_WAV 0x3008
1429 #define PTP_OFC_MP3 0x3009
1430 #define PTP_OFC_AVI 0x300A
1431 #define PTP_OFC_MPEG 0x300B
1432 #define PTP_OFC_ASF 0x300C
1433 #define PTP_OFC_QT 0x300D /* guessing */
1434 /* image formats */
1435 #define PTP_OFC_EXIF_JPEG 0x3801
1436 #define PTP_OFC_TIFF_EP 0x3802
1437 #define PTP_OFC_FlashPix 0x3803
1438 #define PTP_OFC_BMP 0x3804
1439 #define PTP_OFC_CIFF 0x3805
1440 #define PTP_OFC_Undefined_0x3806 0x3806
1441 #define PTP_OFC_GIF 0x3807
1442 #define PTP_OFC_JFIF 0x3808
1443 #define PTP_OFC_PCD 0x3809
1444 #define PTP_OFC_PICT 0x380A
1445 #define PTP_OFC_PNG 0x380B
1446 #define PTP_OFC_Undefined_0x380C 0x380C
1447 #define PTP_OFC_TIFF 0x380D
1448 #define PTP_OFC_TIFF_IT 0x380E
1449 #define PTP_OFC_JP2 0x380F
1450 #define PTP_OFC_JPX 0x3810
1451 /* ptp v1.1 has only DNG new */
1452 #define PTP_OFC_DNG 0x3811
1453 /* Eastman Kodak extension ancillary format */
1454 #define PTP_OFC_EK_M3U 0xb002
1455 /* Canon extension */
1456 #define PTP_OFC_CANON_CRW 0xb101
1457 #define PTP_OFC_CANON_CRW3 0xb103
1458 #define PTP_OFC_CANON_MOV 0xb104
1459 #define PTP_OFC_CANON_MOV2 0xb105
1460 #define PTP_OFC_CANON_CR3 0xb108
1461 /* CHDK specific raw mode */
1462 #define PTP_OFC_CANON_CHDK_CRW 0xb1ff
1463 /* Sony */
1464 #define PTP_OFC_SONY_RAW 0xb101
1465 /* MTP extensions */
1466 #define PTP_OFC_MTP_MediaCard 0xb211
1467 #define PTP_OFC_MTP_MediaCardGroup 0xb212
1468 #define PTP_OFC_MTP_Encounter 0xb213
1469 #define PTP_OFC_MTP_EncounterBox 0xb214
1470 #define PTP_OFC_MTP_M4A 0xb215
1471 #define PTP_OFC_MTP_ZUNEUNDEFINED 0xb217 /* Unknown file type */
1472 #define PTP_OFC_MTP_Firmware 0xb802
1473 #define PTP_OFC_MTP_WindowsImageFormat 0xb881
1474 #define PTP_OFC_MTP_UndefinedAudio 0xb900
1475 #define PTP_OFC_MTP_WMA 0xb901
1476 #define PTP_OFC_MTP_OGG 0xb902
1477 #define PTP_OFC_MTP_AAC 0xb903
1478 #define PTP_OFC_MTP_AudibleCodec 0xb904
1479 #define PTP_OFC_MTP_FLAC 0xb906
1480 #define PTP_OFC_MTP_SamsungPlaylist 0xb909
1481 #define PTP_OFC_MTP_UndefinedVideo 0xb980
1482 #define PTP_OFC_MTP_WMV 0xb981
1483 #define PTP_OFC_MTP_MP4 0xb982
1484 #define PTP_OFC_MTP_MP2 0xb983
1485 #define PTP_OFC_MTP_3GP 0xb984
1486 #define PTP_OFC_MTP_UndefinedCollection 0xba00
1487 #define PTP_OFC_MTP_AbstractMultimediaAlbum 0xba01
1488 #define PTP_OFC_MTP_AbstractImageAlbum 0xba02
1489 #define PTP_OFC_MTP_AbstractAudioAlbum 0xba03
1490 #define PTP_OFC_MTP_AbstractVideoAlbum 0xba04
1491 #define PTP_OFC_MTP_AbstractAudioVideoPlaylist 0xba05
1492 #define PTP_OFC_MTP_AbstractContactGroup 0xba06
1493 #define PTP_OFC_MTP_AbstractMessageFolder 0xba07
1494 #define PTP_OFC_MTP_AbstractChapteredProduction 0xba08
1495 #define PTP_OFC_MTP_AbstractAudioPlaylist 0xba09
1496 #define PTP_OFC_MTP_AbstractVideoPlaylist 0xba0a
1497 #define PTP_OFC_MTP_AbstractMediacast 0xba0b
1498 #define PTP_OFC_MTP_WPLPlaylist 0xba10
1499 #define PTP_OFC_MTP_M3UPlaylist 0xba11
1500 #define PTP_OFC_MTP_MPLPlaylist 0xba12
1501 #define PTP_OFC_MTP_ASXPlaylist 0xba13
1502 #define PTP_OFC_MTP_PLSPlaylist 0xba14
1503 #define PTP_OFC_MTP_UndefinedDocument 0xba80
1504 #define PTP_OFC_MTP_AbstractDocument 0xba81
1505 #define PTP_OFC_MTP_XMLDocument 0xba82
1506 #define PTP_OFC_MTP_MSWordDocument 0xba83
1507 #define PTP_OFC_MTP_MHTCompiledHTMLDocument 0xba84
1508 #define PTP_OFC_MTP_MSExcelSpreadsheetXLS 0xba85
1509 #define PTP_OFC_MTP_MSPowerpointPresentationPPT 0xba86
1510 #define PTP_OFC_MTP_UndefinedMessage 0xbb00
1511 #define PTP_OFC_MTP_AbstractMessage 0xbb01
1512 #define PTP_OFC_MTP_UndefinedContact 0xbb80
1513 #define PTP_OFC_MTP_AbstractContact 0xbb81
1514 #define PTP_OFC_MTP_vCard2 0xbb82
1515 #define PTP_OFC_MTP_vCard3 0xbb83
1516 #define PTP_OFC_MTP_UndefinedCalendarItem 0xbe00
1517 #define PTP_OFC_MTP_AbstractCalendarItem 0xbe01
1518 #define PTP_OFC_MTP_vCalendar1 0xbe02
1519 #define PTP_OFC_MTP_vCalendar2 0xbe03
1520 #define PTP_OFC_MTP_UndefinedWindowsExecutable 0xbe80
1521 #define PTP_OFC_MTP_MediaCast 0xbe81
1522 #define PTP_OFC_MTP_Section 0xbe82
1523
1524 /* PTP Association Types */
1525 #define PTP_AT_Undefined 0x0000
1526 #define PTP_AT_GenericFolder 0x0001
1527 #define PTP_AT_Album 0x0002
1528 #define PTP_AT_TimeSequence 0x0003
1529 #define PTP_AT_HorizontalPanoramic 0x0004
1530 #define PTP_AT_VerticalPanoramic 0x0005
1531 #define PTP_AT_2DPanoramic 0x0006
1532 #define PTP_AT_AncillaryData 0x0007
1533
1534 /* PTP Protection Status */
1535
1536 #define PTP_PS_NoProtection 0x0000
1537 #define PTP_PS_ReadOnly 0x0001
1538 #define PTP_PS_MTP_ReadOnlyData 0x8002
1539 #define PTP_PS_MTP_NonTransferableData 0x8003
1540
1541 /* PTP Storage Types */
1542
1543 #define PTP_ST_Undefined 0x0000
1544 #define PTP_ST_FixedROM 0x0001
1545 #define PTP_ST_RemovableROM 0x0002
1546 #define PTP_ST_FixedRAM 0x0003
1547 #define PTP_ST_RemovableRAM 0x0004
1548
1549 /* PTP FilesystemType Values */
1550
1551 #define PTP_FST_Undefined 0x0000
1552 #define PTP_FST_GenericFlat 0x0001
1553 #define PTP_FST_GenericHierarchical 0x0002
1554 #define PTP_FST_DCF 0x0003
1555
1556 /* PTP StorageInfo AccessCapability Values */
1557
1558 #define PTP_AC_ReadWrite 0x0000
1559 #define PTP_AC_ReadOnly 0x0001
1560 #define PTP_AC_ReadOnly_with_Object_Deletion 0x0002
1561
1562 /* Property Describing Dataset, Range Form */
1563
1564 union _PTPPropertyValue {
1565 char *str; /* common string, malloced */
1566 uint8_t u8;
1567 int8_t i8;
1568 uint16_t u16;
1569 int16_t i16;
1570 uint32_t u32;
1571 int32_t i32;
1572 uint64_t u64;
1573 int64_t i64;
1574 /* XXXX: 128 bit signed and unsigned missing */
1575 struct array {
1576 uint32_t count;
1577 union _PTPPropertyValue *v; /* malloced, count elements */
1578 } a;
1579 };
1580
1581 typedef union _PTPPropertyValue PTPPropertyValue;
1582
1583 /* Metadata lists for MTP operations */
1584 struct _MTPProperties {
1585 uint16_t property;
1586 uint16_t datatype;
1587 uint32_t ObjectHandle;
1588 PTPPropertyValue propval;
1589 };
1590 typedef struct _MTPProperties MTPProperties;
1591
1592 struct _PTPPropDescRangeForm {
1593 PTPPropertyValue MinimumValue;
1594 PTPPropertyValue MaximumValue;
1595 PTPPropertyValue StepSize;
1596 };
1597 typedef struct _PTPPropDescRangeForm PTPPropDescRangeForm;
1598
1599 /* Property Describing Dataset, Enum Form */
1600
1601 struct _PTPPropDescEnumForm {
1602 uint16_t NumberOfValues;
1603 PTPPropertyValue *SupportedValue; /* malloced */
1604 };
1605 typedef struct _PTPPropDescEnumForm PTPPropDescEnumForm;
1606
1607 struct _PTPPropDescArrayLengthForm {
1608 uint16_t NumberOfValues;
1609 };
1610 typedef struct _PTPPropDescArrayLengthForm PTPPropDescArrayLengthForm;
1611
1612 struct _PTPPropDescStringForm {
1613 char *String;
1614 };
1615 typedef struct _PTPPropDescStringForm PTPPropDescStringForm;
1616
1617 /* Device Property Describing Dataset (DevicePropDesc) */
1618
1619 struct _PTPDevicePropDesc {
1620 uint16_t DevicePropertyCode;
1621 uint16_t DataType;
1622 uint8_t GetSet;
1623 PTPPropertyValue FactoryDefaultValue;
1624 PTPPropertyValue CurrentValue;
1625 uint8_t FormFlag;
1626 union {
1627 PTPPropDescEnumForm Enum;
1628 PTPPropDescRangeForm Range;
1629 } FORM;
1630 };
1631 typedef struct _PTPDevicePropDesc PTPDevicePropDesc;
1632
1633 /* Object Property Describing Dataset (DevicePropDesc) */
1634
1635 struct _PTPObjectPropDesc {
1636 uint16_t ObjectPropertyCode;
1637 uint16_t DataType;
1638 uint8_t GetSet;
1639 PTPPropertyValue FactoryDefaultValue;
1640 uint32_t GroupCode;
1641 uint8_t FormFlag;
1642 union {
1643 PTPPropDescEnumForm Enum;
1644 PTPPropDescRangeForm Range;
1645 PTPPropDescStringForm DateTime;
1646 PTPPropDescArrayLengthForm FixedLengthArray;
1647 PTPPropDescStringForm RegularExpression;
1648 PTPPropDescArrayLengthForm ByteArray;
1649 PTPPropDescStringForm LongString;
1650 } FORM;
1651 };
1652 typedef struct _PTPObjectPropDesc PTPObjectPropDesc;
1653
1654 /* Canon filesystem's folder entry Dataset */
1655
1656 #define PTP_CANON_FilenameBufferLen 13
1657 #define PTP_CANON_FolderEntryLen 28
1658
1659 struct _PTPCANONFolderEntry {
1660 uint32_t ObjectHandle;
1661 uint16_t ObjectFormatCode;
1662 uint8_t Flags;
1663 uint32_t ObjectSize;
1664 time_t Time;
1665 char Filename[PTP_CANON_FilenameBufferLen];
1666
1667 uint32_t StorageID;
1668 };
1669 typedef struct _PTPCANONFolderEntry PTPCANONFolderEntry;
1670
1671 /* Nikon Tone Curve Data */
1672
1673 #define PTP_NIKON_MaxCurvePoints 19
1674
1675 struct _PTPNIKONCoordinatePair {
1676 uint8_t X;
1677 uint8_t Y;
1678 };
1679
1680 typedef struct _PTPNIKONCoordinatePair PTPNIKONCoordinatePair;
1681
1682 struct _PTPNTCCoordinatePair {
1683 uint8_t X;
1684 uint8_t Y;
1685 };
1686
1687 typedef struct _PTPNTCCoordinatePair PTPNTCCoordinatePair;
1688
1689 struct _PTPNIKONCurveData {
1690 char static_preamble[6];
1691 uint8_t XAxisStartPoint;
1692 uint8_t XAxisEndPoint;
1693 uint8_t YAxisStartPoint;
1694 uint8_t YAxisEndPoint;
1695 uint8_t MidPointIntegerPart;
1696 uint8_t MidPointDecimalPart;
1697 uint8_t NCoordinates;
1698 PTPNIKONCoordinatePair CurveCoordinates[PTP_NIKON_MaxCurvePoints];
1699 };
1700
1701 typedef struct _PTPNIKONCurveData PTPNIKONCurveData;
1702
1703 struct _PTPEKTextParams {
1704 char *title;
1705 char *line[5];
1706 };
1707 typedef struct _PTPEKTextParams PTPEKTextParams;
1708
1709 /* Nikon Wifi profiles */
1710
1711 struct _PTPNIKONWifiProfile {
1712 /* Values valid both when reading and writing profiles */
1713 char profile_name[17];
1714 uint8_t device_type;
1715 uint8_t icon_type;
1716 char essid[33];
1717
1718 /* Values only valid when reading. Some of these are in the write packet,
1719 * but are set automatically, like id, display_order and creation_date. */
1720 uint8_t id;
1721 uint8_t valid;
1722 uint8_t display_order;
1723 char creation_date[16];
1724 char lastusage_date[16];
1725
1726 /* Values only valid when writing */
1727 uint32_t ip_address;
1728 uint8_t subnet_mask; /* first zero bit position, e.g. 24 for 255.255.255.0 */
1729 uint32_t gateway_address;
1730 uint8_t address_mode; /* 0 - Manual, 2-3 - DHCP ad-hoc/managed*/
1731 uint8_t access_mode; /* 0 - Managed, 1 - Adhoc */
1732 uint8_t wifi_channel; /* 1-11 */
1733 uint8_t authentification; /* 0 - Open, 1 - Shared, 2 - WPA-PSK */
1734 uint8_t encryption; /* 0 - None, 1 - WEP 64bit, 2 - WEP 128bit (not supported: 3 - TKIP) */
1735 uint8_t key[64];
1736 uint8_t key_nr;
1737 /* char guid[16]; */
1738 };
1739
1740 typedef struct _PTPNIKONWifiProfile PTPNIKONWifiProfile;
1741
1742 enum _PTPCanon_changes_types {
1743 PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN,
1744 PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO,
1745 PTP_CANON_EOS_CHANGES_TYPE_OBJECTTRANSFER,
1746 PTP_CANON_EOS_CHANGES_TYPE_PROPERTY,
1747 PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS,
1748 PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO,
1749 PTP_CANON_EOS_CHANGES_TYPE_FOCUSMASK,
1750 PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED,
1751 PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO_CHANGE,
1752 PTP_CANON_EOS_CHANGES_TYPE_OBJECTCONTENT_CHANGE
1753 };
1754
1755 struct _PTPCanon_New_Object {
1756 uint32_t oid;
1757 PTPObjectInfo oi;
1758 };
1759
1760 struct _PTPCanon_changes_entry {
1761 enum _PTPCanon_changes_types type;
1762 union {
1763 struct _PTPCanon_New_Object object; /* TYPE_OBJECTINFO */
1764 char *info;
1765 uint16_t propid;
1766 int status;
1767 } u;
1768 };
1769 typedef struct _PTPCanon_changes_entry PTPCanon_changes_entry;
1770
1771 typedef struct _PTPCanon_Property {
1772 uint32_t size;
1773 uint32_t proptype;
1774 unsigned char *data;
1775
1776 /* fill out for queries */
1777 PTPDevicePropDesc dpd;
1778 } PTPCanon_Property;
1779
1780 typedef struct _PTPCanonEOSDeviceInfo {
1781 /* length */
1782 uint32_t EventsSupported_len;
1783 uint32_t *EventsSupported;
1784
1785 uint32_t DevicePropertiesSupported_len;
1786 uint32_t *DevicePropertiesSupported;
1787
1788 uint32_t unk_len;
1789 uint32_t *unk;
1790 } PTPCanonEOSDeviceInfo;
1791
1792 /* DataType Codes */
1793
1794 #define PTP_DTC_UNDEF 0x0000
1795 #define PTP_DTC_INT8 0x0001
1796 #define PTP_DTC_UINT8 0x0002
1797 #define PTP_DTC_INT16 0x0003
1798 #define PTP_DTC_UINT16 0x0004
1799 #define PTP_DTC_INT32 0x0005
1800 #define PTP_DTC_UINT32 0x0006
1801 #define PTP_DTC_INT64 0x0007
1802 #define PTP_DTC_UINT64 0x0008
1803 #define PTP_DTC_INT128 0x0009
1804 #define PTP_DTC_UINT128 0x000A
1805
1806 #define PTP_DTC_ARRAY_MASK 0x4000
1807
1808 #define PTP_DTC_AINT8 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT8)
1809 #define PTP_DTC_AUINT8 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT8)
1810 #define PTP_DTC_AINT16 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT16)
1811 #define PTP_DTC_AUINT16 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT16)
1812 #define PTP_DTC_AINT32 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT32)
1813 #define PTP_DTC_AUINT32 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT32)
1814 #define PTP_DTC_AINT64 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT64)
1815 #define PTP_DTC_AUINT64 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT64)
1816 #define PTP_DTC_AINT128 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT128)
1817 #define PTP_DTC_AUINT128 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT128)
1818
1819 #define PTP_DTC_STR 0xFFFF
1820
1821 /* Device Properties Codes */
1822
1823 /* PTP v1.0 property codes */
1824 #define PTP_DPC_Undefined 0x5000
1825 #define PTP_DPC_BatteryLevel 0x5001
1826 #define PTP_DPC_FunctionalMode 0x5002
1827 #define PTP_DPC_ImageSize 0x5003
1828 #define PTP_DPC_CompressionSetting 0x5004
1829 #define PTP_DPC_WhiteBalance 0x5005
1830 #define PTP_DPC_RGBGain 0x5006
1831 #define PTP_DPC_FNumber 0x5007
1832 #define PTP_DPC_FocalLength 0x5008
1833 #define PTP_DPC_FocusDistance 0x5009
1834 #define PTP_DPC_FocusMode 0x500A
1835 #define PTP_DPC_ExposureMeteringMode 0x500B
1836 #define PTP_DPC_FlashMode 0x500C
1837 #define PTP_DPC_ExposureTime 0x500D
1838 #define PTP_DPC_ExposureProgramMode 0x500E
1839 #define PTP_DPC_ExposureIndex 0x500F
1840 #define PTP_DPC_ExposureBiasCompensation 0x5010
1841 #define PTP_DPC_DateTime 0x5011
1842 #define PTP_DPC_CaptureDelay 0x5012
1843 #define PTP_DPC_StillCaptureMode 0x5013
1844 #define PTP_DPC_Contrast 0x5014
1845 #define PTP_DPC_Sharpness 0x5015
1846 #define PTP_DPC_DigitalZoom 0x5016
1847 #define PTP_DPC_EffectMode 0x5017
1848 #define PTP_DPC_BurstNumber 0x5018
1849 #define PTP_DPC_BurstInterval 0x5019
1850 #define PTP_DPC_TimelapseNumber 0x501A
1851 #define PTP_DPC_TimelapseInterval 0x501B
1852 #define PTP_DPC_FocusMeteringMode 0x501C
1853 #define PTP_DPC_UploadURL 0x501D
1854 #define PTP_DPC_Artist 0x501E
1855 #define PTP_DPC_CopyrightInfo 0x501F
1856 /* PTP v1.1 property codes */
1857 #define PTP_DPC_SupportedStreams 0x5020
1858 #define PTP_DPC_EnabledStreams 0x5021
1859 #define PTP_DPC_VideoFormat 0x5022
1860 #define PTP_DPC_VideoResolution 0x5023
1861 #define PTP_DPC_VideoQuality 0x5024
1862 #define PTP_DPC_VideoFrameRate 0x5025
1863 #define PTP_DPC_VideoContrast 0x5026
1864 #define PTP_DPC_VideoBrightness 0x5027
1865 #define PTP_DPC_AudioFormat 0x5028
1866 #define PTP_DPC_AudioBitrate 0x5029
1867 #define PTP_DPC_AudioSamplingRate 0x502A
1868 #define PTP_DPC_AudioBitPerSample 0x502B
1869 #define PTP_DPC_AudioVolume 0x502C
1870
1871 /* Proprietary vendor extension device property mask */
1872 #define PTP_DPC_EXTENSION_MASK 0xF000
1873 #define PTP_DPC_EXTENSION 0xD000
1874
1875 /* Zune extension device property codes */
1876 #define PTP_DPC_MTP_ZUNE_UNKNOWN1 0xD181
1877 #define PTP_DPC_MTP_ZUNE_UNKNOWN2 0xD132
1878 #define PTP_DPC_MTP_ZUNE_UNKNOWN3 0xD215
1879 #define PTP_DPC_MTP_ZUNE_UNKNOWN4 0xD216
1880
1881 /* Eastman Kodak extension device property codes */
1882 #define PTP_DPC_EK_ColorTemperature 0xD001
1883 #define PTP_DPC_EK_DateTimeStampFormat 0xD002
1884 #define PTP_DPC_EK_BeepMode 0xD003
1885 #define PTP_DPC_EK_VideoOut 0xD004
1886 #define PTP_DPC_EK_PowerSaving 0xD005
1887 #define PTP_DPC_EK_UI_Language 0xD006
1888
1889 /* Canon extension device property codes */
1890 #define PTP_DPC_CANON_BeepMode 0xD001
1891 #define PTP_DPC_CANON_BatteryKind 0xD002
1892 #define PTP_DPC_CANON_BatteryStatus 0xD003
1893 #define PTP_DPC_CANON_UILockType 0xD004
1894 #define PTP_DPC_CANON_CameraMode 0xD005
1895 #define PTP_DPC_CANON_ImageQuality 0xD006
1896 #define PTP_DPC_CANON_FullViewFileFormat 0xD007
1897 #define PTP_DPC_CANON_ImageSize 0xD008
1898 #define PTP_DPC_CANON_SelfTime 0xD009
1899 #define PTP_DPC_CANON_FlashMode 0xD00A
1900 #define PTP_DPC_CANON_Beep 0xD00B
1901 #define PTP_DPC_CANON_ShootingMode 0xD00C
1902 #define PTP_DPC_CANON_ImageMode 0xD00D
1903 #define PTP_DPC_CANON_DriveMode 0xD00E
1904 #define PTP_DPC_CANON_EZoom 0xD00F
1905 #define PTP_DPC_CANON_MeteringMode 0xD010
1906 #define PTP_DPC_CANON_AFDistance 0xD011
1907 #define PTP_DPC_CANON_FocusingPoint 0xD012
1908 #define PTP_DPC_CANON_WhiteBalance 0xD013
1909 #define PTP_DPC_CANON_SlowShutterSetting 0xD014
1910 #define PTP_DPC_CANON_AFMode 0xD015
1911 #define PTP_DPC_CANON_ImageStabilization 0xD016
1912 #define PTP_DPC_CANON_Contrast 0xD017
1913 #define PTP_DPC_CANON_ColorGain 0xD018
1914 #define PTP_DPC_CANON_Sharpness 0xD019
1915 #define PTP_DPC_CANON_Sensitivity 0xD01A
1916 #define PTP_DPC_CANON_ParameterSet 0xD01B
1917 #define PTP_DPC_CANON_ISOSpeed 0xD01C
1918 #define PTP_DPC_CANON_Aperture 0xD01D
1919 #define PTP_DPC_CANON_ShutterSpeed 0xD01E
1920 #define PTP_DPC_CANON_ExpCompensation 0xD01F
1921 #define PTP_DPC_CANON_FlashCompensation 0xD020
1922 #define PTP_DPC_CANON_AEBExposureCompensation 0xD021
1923 #define PTP_DPC_CANON_AvOpen 0xD023
1924 #define PTP_DPC_CANON_AvMax 0xD024
1925 #define PTP_DPC_CANON_FocalLength 0xD025
1926 #define PTP_DPC_CANON_FocalLengthTele 0xD026
1927 #define PTP_DPC_CANON_FocalLengthWide 0xD027
1928 #define PTP_DPC_CANON_FocalLengthDenominator 0xD028
1929 #define PTP_DPC_CANON_CaptureTransferMode 0xD029
1930 #define CANON_TRANSFER_ENTIRE_IMAGE_TO_PC 0x0002
1931 #define CANON_TRANSFER_SAVE_THUMBNAIL_TO_DEVICE 0x0004
1932 #define CANON_TRANSFER_SAVE_IMAGE_TO_DEVICE 0x0008
1933 /* we use those values: */
1934 #define CANON_TRANSFER_MEMORY (2|1)
1935 #define CANON_TRANSFER_CARD (8|4|1)
1936
1937 #define PTP_DPC_CANON_Zoom 0xD02A
1938 #define PTP_DPC_CANON_NamePrefix 0xD02B
1939 #define PTP_DPC_CANON_SizeQualityMode 0xD02C
1940 #define PTP_DPC_CANON_SupportedThumbSize 0xD02D
1941 #define PTP_DPC_CANON_SizeOfOutputDataFromCamera 0xD02E
1942 #define PTP_DPC_CANON_SizeOfInputDataToCamera 0xD02F
1943 #define PTP_DPC_CANON_RemoteAPIVersion 0xD030
1944 #define PTP_DPC_CANON_FirmwareVersion 0xD031
1945 #define PTP_DPC_CANON_CameraModel 0xD032
1946 #define PTP_DPC_CANON_CameraOwner 0xD033
1947 #define PTP_DPC_CANON_UnixTime 0xD034
1948 #define PTP_DPC_CANON_CameraBodyID 0xD035
1949 #define PTP_DPC_CANON_CameraOutput 0xD036
1950 #define PTP_DPC_CANON_DispAv 0xD037
1951 #define PTP_DPC_CANON_AvOpenApex 0xD038
1952 #define PTP_DPC_CANON_DZoomMagnification 0xD039
1953 #define PTP_DPC_CANON_MlSpotPos 0xD03A
1954 #define PTP_DPC_CANON_DispAvMax 0xD03B
1955 #define PTP_DPC_CANON_AvMaxApex 0xD03C
1956 #define PTP_DPC_CANON_EZoomStartPosition 0xD03D
1957 #define PTP_DPC_CANON_FocalLengthOfTele 0xD03E
1958 #define PTP_DPC_CANON_EZoomSizeOfTele 0xD03F
1959 #define PTP_DPC_CANON_PhotoEffect 0xD040
1960 #define PTP_DPC_CANON_AssistLight 0xD041
1961 #define PTP_DPC_CANON_FlashQuantityCount 0xD042
1962 #define PTP_DPC_CANON_RotationAngle 0xD043
1963 #define PTP_DPC_CANON_RotationScene 0xD044
1964 #define PTP_DPC_CANON_EventEmulateMode 0xD045
1965 #define PTP_DPC_CANON_DPOFVersion 0xD046
1966 #define PTP_DPC_CANON_TypeOfSupportedSlideShow 0xD047
1967 #define PTP_DPC_CANON_AverageFilesizes 0xD048
1968 #define PTP_DPC_CANON_ModelID 0xD049
1969
1970 #define PTP_DPC_CANON_EOS_PowerZoomPosition 0xD055
1971 #define PTP_DPC_CANON_EOS_StrobeSettingSimple 0xD056
1972 #define PTP_DPC_CANON_EOS_ConnectTrigger 0xD058
1973 #define PTP_DPC_CANON_EOS_ChangeCameraMode 0xD059
1974
1975 /* From EOS 400D trace. */
1976 #define PTP_DPC_CANON_EOS_Aperture 0xD101
1977 #define PTP_DPC_CANON_EOS_ShutterSpeed 0xD102
1978 #define PTP_DPC_CANON_EOS_ISOSpeed 0xD103
1979 #define PTP_DPC_CANON_EOS_ExpCompensation 0xD104
1980 #define PTP_DPC_CANON_EOS_AutoExposureMode 0xD105
1981 #define PTP_DPC_CANON_EOS_DriveMode 0xD106
1982 #define PTP_DPC_CANON_EOS_MeteringMode 0xD107
1983 #define PTP_DPC_CANON_EOS_FocusMode 0xD108
1984 #define PTP_DPC_CANON_EOS_WhiteBalance 0xD109
1985 #define PTP_DPC_CANON_EOS_ColorTemperature 0xD10A
1986 #define PTP_DPC_CANON_EOS_WhiteBalanceAdjustA 0xD10B
1987 #define PTP_DPC_CANON_EOS_WhiteBalanceAdjustB 0xD10C
1988 #define PTP_DPC_CANON_EOS_WhiteBalanceXA 0xD10D
1989 #define PTP_DPC_CANON_EOS_WhiteBalanceXB 0xD10E
1990 #define PTP_DPC_CANON_EOS_ColorSpace 0xD10F
1991 #define PTP_DPC_CANON_EOS_PictureStyle 0xD110
1992 #define PTP_DPC_CANON_EOS_BatteryPower 0xD111
1993 #define PTP_DPC_CANON_EOS_BatterySelect 0xD112
1994 #define PTP_DPC_CANON_EOS_CameraTime 0xD113
1995 #define PTP_DPC_CANON_EOS_AutoPowerOff 0xD114
1996 #define PTP_DPC_CANON_EOS_Owner 0xD115
1997 #define PTP_DPC_CANON_EOS_ModelID 0xD116
1998 #define PTP_DPC_CANON_EOS_PTPExtensionVersion 0xD119
1999 #define PTP_DPC_CANON_EOS_DPOFVersion 0xD11A
2000 #define PTP_DPC_CANON_EOS_AvailableShots 0xD11B
2001 #define PTP_CANON_EOS_CAPTUREDEST_HD 4
2002 #define PTP_DPC_CANON_EOS_CaptureDestination 0xD11C
2003 #define PTP_DPC_CANON_EOS_BracketMode 0xD11D
2004 #define PTP_DPC_CANON_EOS_CurrentStorage 0xD11E
2005 #define PTP_DPC_CANON_EOS_CurrentFolder 0xD11F
2006 #define PTP_DPC_CANON_EOS_ImageFormat 0xD120 /* file setting */
2007 #define PTP_DPC_CANON_EOS_ImageFormatCF 0xD121 /* file setting CF */
2008 #define PTP_DPC_CANON_EOS_ImageFormatSD 0xD122 /* file setting SD */
2009 #define PTP_DPC_CANON_EOS_ImageFormatExtHD 0xD123 /* file setting exthd */
2010 #define PTP_DPC_CANON_EOS_RefocusState 0xD124
2011 #define PTP_DPC_CANON_EOS_CameraNickname 0xD125
2012 #define PTP_DPC_CANON_EOS_StroboSettingExpCompositionControl 0xD126
2013 #define PTP_DPC_CANON_EOS_ConnectStatus 0xD127
2014 #define PTP_DPC_CANON_EOS_LensBarrelStatus 0xD128
2015 #define PTP_DPC_CANON_EOS_SilentShutterSetting 0xD129
2016 #define PTP_DPC_CANON_EOS_LV_AF_EyeDetect 0xD12C
2017 #define PTP_DPC_CANON_EOS_AutoTransMobile 0xD12D
2018 #define PTP_DPC_CANON_EOS_URLSupportFormat 0xD12E
2019 #define PTP_DPC_CANON_EOS_SpecialAcc 0xD12F
2020 #define PTP_DPC_CANON_EOS_CompressionS 0xD130
2021 #define PTP_DPC_CANON_EOS_CompressionM1 0xD131
2022 #define PTP_DPC_CANON_EOS_CompressionM2 0xD132
2023 #define PTP_DPC_CANON_EOS_CompressionL 0xD133
2024 #define PTP_DPC_CANON_EOS_IntervalShootSetting 0xD134
2025 #define PTP_DPC_CANON_EOS_IntervalShootState 0xD135
2026 #define PTP_DPC_CANON_EOS_PushMode 0xD136
2027 #define PTP_DPC_CANON_EOS_LvCFilterKind 0xD137
2028 #define PTP_DPC_CANON_EOS_AEModeDial 0xD138
2029 #define PTP_DPC_CANON_EOS_AEModeCustom 0xD139
2030 #define PTP_DPC_CANON_EOS_MirrorUpSetting 0xD13A
2031 #define PTP_DPC_CANON_EOS_HighlightTonePriority 0xD13B
2032 #define PTP_DPC_CANON_EOS_AFSelectFocusArea 0xD13C
2033 #define PTP_DPC_CANON_EOS_HDRSetting 0xD13D
2034 #define PTP_DPC_CANON_EOS_TimeShootSetting 0xD13E
2035 #define PTP_DPC_CANON_EOS_NFCApplicationInfo 0xD13F
2036 #define PTP_DPC_CANON_EOS_PCWhiteBalance1 0xD140
2037 #define PTP_DPC_CANON_EOS_PCWhiteBalance2 0xD141
2038 #define PTP_DPC_CANON_EOS_PCWhiteBalance3 0xD142
2039 #define PTP_DPC_CANON_EOS_PCWhiteBalance4 0xD143
2040 #define PTP_DPC_CANON_EOS_PCWhiteBalance5 0xD144
2041 #define PTP_DPC_CANON_EOS_MWhiteBalance 0xD145
2042 #define PTP_DPC_CANON_EOS_MWhiteBalanceEx 0xD146
2043 #define PTP_DPC_CANON_EOS_PowerZoomSpeed 0xD149
2044 #define PTP_DPC_CANON_EOS_NetworkServerRegion 0xD14A
2045 #define PTP_DPC_CANON_EOS_GPSLogCtrl 0xD14B
2046 #define PTP_DPC_CANON_EOS_GPSLogListNum 0xD14C
2047 #define PTP_DPC_CANON_EOS_UnknownPropD14D 0xD14D /*found in Canon EOS 5D M3*/
2048 #define PTP_DPC_CANON_EOS_PictureStyleStandard 0xD150
2049 #define PTP_DPC_CANON_EOS_PictureStylePortrait 0xD151
2050 #define PTP_DPC_CANON_EOS_PictureStyleLandscape 0xD152
2051 #define PTP_DPC_CANON_EOS_PictureStyleNeutral 0xD153
2052 #define PTP_DPC_CANON_EOS_PictureStyleFaithful 0xD154
2053 #define PTP_DPC_CANON_EOS_PictureStyleBlackWhite 0xD155
2054 #define PTP_DPC_CANON_EOS_PictureStyleAuto 0xD156
2055 #define PTP_DPC_CANON_EOS_PictureStyleExStandard 0xD157
2056 #define PTP_DPC_CANON_EOS_PictureStyleExPortrait 0xD158
2057 #define PTP_DPC_CANON_EOS_PictureStyleExLandscape 0xD159
2058 #define PTP_DPC_CANON_EOS_PictureStyleExNeutral 0xD15A
2059 #define PTP_DPC_CANON_EOS_PictureStyleExFaithful 0xD15B
2060 #define PTP_DPC_CANON_EOS_PictureStyleExBlackWhite 0xD15C
2061 #define PTP_DPC_CANON_EOS_PictureStyleExAuto 0xD15D
2062 #define PTP_DPC_CANON_EOS_PictureStyleExFineDetail 0xD15E
2063 #define PTP_DPC_CANON_EOS_PictureStyleUserSet1 0xD160
2064 #define PTP_DPC_CANON_EOS_PictureStyleUserSet2 0xD161
2065 #define PTP_DPC_CANON_EOS_PictureStyleUserSet3 0xD162
2066 #define PTP_DPC_CANON_EOS_PictureStyleExUserSet1 0xD163
2067 #define PTP_DPC_CANON_EOS_PictureStyleExUserSet2 0xD164
2068 #define PTP_DPC_CANON_EOS_PictureStyleExUserSet3 0xD165
2069 #define PTP_DPC_CANON_EOS_MovieAVModeFine 0xD166
2070 #define PTP_DPC_CANON_EOS_ShutterReleaseCounter 0xD167 /* perhaps send a requestdeviceprop ex ? */
2071 #define PTP_DPC_CANON_EOS_AvailableImageSize 0xD168
2072 #define PTP_DPC_CANON_EOS_ErrorHistory 0xD169
2073 #define PTP_DPC_CANON_EOS_LensExchangeHistory 0xD16A
2074 #define PTP_DPC_CANON_EOS_StroboExchangeHistory 0xD16B
2075 #define PTP_DPC_CANON_EOS_PictureStyleParam1 0xD170
2076 #define PTP_DPC_CANON_EOS_PictureStyleParam2 0xD171
2077 #define PTP_DPC_CANON_EOS_PictureStyleParam3 0xD172
2078 #define PTP_DPC_CANON_EOS_MovieRecordVolumeLine 0xD174
2079 #define PTP_DPC_CANON_EOS_NetworkCommunicationMode 0xD175
2080 #define PTP_DPC_CANON_EOS_CanonLogGamma 0xD176
2081 #define PTP_DPC_CANON_EOS_SmartphoneShowImageConfig 0xD177
2082 #define PTP_DPC_CANON_EOS_HighISOSettingNoiseReduction 0xD178
2083 #define PTP_DPC_CANON_EOS_MovieServoAF 0xD179
2084 #define PTP_DPC_CANON_EOS_ContinuousAFValid 0xD17A
2085 #define PTP_DPC_CANON_EOS_Attenuator 0xD17B
2086 #define PTP_DPC_CANON_EOS_UTCTime 0xD17C
2087 #define PTP_DPC_CANON_EOS_Timezone 0xD17D
2088 #define PTP_DPC_CANON_EOS_Summertime 0xD17E
2089 #define PTP_DPC_CANON_EOS_FlavorLUTParams 0xD17F
2090 #define PTP_DPC_CANON_EOS_CustomFunc1 0xD180
2091 #define PTP_DPC_CANON_EOS_CustomFunc2 0xD181
2092 #define PTP_DPC_CANON_EOS_CustomFunc3 0xD182
2093 #define PTP_DPC_CANON_EOS_CustomFunc4 0xD183
2094 #define PTP_DPC_CANON_EOS_CustomFunc5 0xD184
2095 #define PTP_DPC_CANON_EOS_CustomFunc6 0xD185
2096 #define PTP_DPC_CANON_EOS_CustomFunc7 0xD186
2097 #define PTP_DPC_CANON_EOS_CustomFunc8 0xD187
2098 #define PTP_DPC_CANON_EOS_CustomFunc9 0xD188
2099 #define PTP_DPC_CANON_EOS_CustomFunc10 0xD189
2100 #define PTP_DPC_CANON_EOS_CustomFunc11 0xD18a
2101 #define PTP_DPC_CANON_EOS_CustomFunc12 0xD18b
2102 #define PTP_DPC_CANON_EOS_CustomFunc13 0xD18c
2103 #define PTP_DPC_CANON_EOS_CustomFunc14 0xD18d
2104 #define PTP_DPC_CANON_EOS_CustomFunc15 0xD18e
2105 #define PTP_DPC_CANON_EOS_CustomFunc16 0xD18f
2106 #define PTP_DPC_CANON_EOS_CustomFunc17 0xD190
2107 #define PTP_DPC_CANON_EOS_CustomFunc18 0xD191
2108 #define PTP_DPC_CANON_EOS_CustomFunc19 0xD192
2109 #define PTP_DPC_CANON_EOS_CustomFunc19 0xD192
2110 #define PTP_DPC_CANON_EOS_InnerDevelop 0xD193
2111 #define PTP_DPC_CANON_EOS_MultiAspect 0xD194
2112 #define PTP_DPC_CANON_EOS_MovieSoundRecord 0xD195
2113 #define PTP_DPC_CANON_EOS_MovieRecordVolume 0xD196
2114 #define PTP_DPC_CANON_EOS_WindCut 0xD197
2115 #define PTP_DPC_CANON_EOS_ExtenderType 0xD198
2116 #define PTP_DPC_CANON_EOS_OLCInfoVersion 0xD199
2117 #define PTP_DPC_CANON_EOS_UnknownPropD19A 0xD19A /*found in Canon EOS 5D M3*/
2118 #define PTP_DPC_CANON_EOS_UnknownPropD19C 0xD19C /*found in Canon EOS 5D M3*/
2119 #define PTP_DPC_CANON_EOS_UnknownPropD19D 0xD19D /*found in Canon EOS 5D M3*/
2120 #define PTP_DPC_CANON_EOS_GPSDeviceActive 0xD19F
2121 #define PTP_DPC_CANON_EOS_CustomFuncEx 0xD1a0
2122 #define PTP_DPC_CANON_EOS_MyMenu 0xD1a1
2123 #define PTP_DPC_CANON_EOS_MyMenuList 0xD1a2
2124 #define PTP_DPC_CANON_EOS_WftStatus 0xD1a3
2125 #define PTP_DPC_CANON_EOS_WftInputTransmission 0xD1a4
2126 #define PTP_DPC_CANON_EOS_HDDirectoryStructure 0xD1a5
2127 #define PTP_DPC_CANON_EOS_BatteryInfo 0xD1a6
2128 #define PTP_DPC_CANON_EOS_AdapterInfo 0xD1a7
2129 #define PTP_DPC_CANON_EOS_LensStatus 0xD1a8
2130 #define PTP_DPC_CANON_EOS_QuickReviewTime 0xD1a9
2131 #define PTP_DPC_CANON_EOS_CardExtension 0xD1aa
2132 #define PTP_DPC_CANON_EOS_TempStatus 0xD1ab
2133 #define PTP_DPC_CANON_EOS_ShutterCounter 0xD1ac
2134 #define PTP_DPC_CANON_EOS_SpecialOption 0xD1ad
2135 #define PTP_DPC_CANON_EOS_PhotoStudioMode 0xD1ae
2136 #define PTP_DPC_CANON_EOS_SerialNumber 0xD1af
2137 #define PTP_DPC_CANON_EOS_EVFOutputDevice 0xD1b0
2138 #define PTP_DPC_CANON_EOS_EVFMode 0xD1b1
2139 #define PTP_DPC_CANON_EOS_DepthOfFieldPreview 0xD1b2
2140 #define PTP_DPC_CANON_EOS_EVFSharpness 0xD1b3
2141 #define PTP_DPC_CANON_EOS_EVFWBMode 0xD1b4
2142 #define PTP_DPC_CANON_EOS_EVFClickWBCoeffs 0xD1b5
2143 #define PTP_DPC_CANON_EOS_EVFColorTemp 0xD1b6
2144 #define PTP_DPC_CANON_EOS_ExposureSimMode 0xD1b7
2145 #define PTP_DPC_CANON_EOS_EVFRecordStatus 0xD1b8
2146 #define PTP_DPC_CANON_EOS_LvAfSystem 0xD1ba
2147 #define PTP_DPC_CANON_EOS_MovSize 0xD1bb
2148 #define PTP_DPC_CANON_EOS_LvViewTypeSelect 0xD1bc
2149 #define PTP_DPC_CANON_EOS_MirrorDownStatus 0xD1bd
2150 #define PTP_DPC_CANON_EOS_MovieParam 0xD1be
2151 #define PTP_DPC_CANON_EOS_MirrorLockupState 0xD1bf
2152 #define PTP_DPC_CANON_EOS_FlashChargingState 0xD1C0
2153 #define PTP_DPC_CANON_EOS_AloMode 0xD1C1
2154 #define PTP_DPC_CANON_EOS_FixedMovie 0xD1C2
2155 #define PTP_DPC_CANON_EOS_OneShotRawOn 0xD1C3
2156 #define PTP_DPC_CANON_EOS_ErrorForDisplay 0xD1C4
2157 #define PTP_DPC_CANON_EOS_AEModeMovie 0xD1C5
2158 #define PTP_DPC_CANON_EOS_BuiltinStroboMode 0xD1C6
2159 #define PTP_DPC_CANON_EOS_StroboDispState 0xD1C7
2160 #define PTP_DPC_CANON_EOS_StroboETTL2Metering 0xD1C8
2161 #define PTP_DPC_CANON_EOS_ContinousAFMode 0xD1C9
2162 #define PTP_DPC_CANON_EOS_MovieParam2 0xD1CA
2163 #define PTP_DPC_CANON_EOS_StroboSettingExpComposition 0xD1CB
2164 #define PTP_DPC_CANON_EOS_MovieParam3 0xD1CC
2165 #define PTP_DPC_CANON_EOS_MovieParam4 0xD1CD
2166 #define PTP_DPC_CANON_EOS_LVMedicalRotate 0xD1CF
2167 #define PTP_DPC_CANON_EOS_Artist 0xD1d0
2168 #define PTP_DPC_CANON_EOS_Copyright 0xD1d1
2169 #define PTP_DPC_CANON_EOS_BracketValue 0xD1d2
2170 #define PTP_DPC_CANON_EOS_FocusInfoEx 0xD1d3
2171 #define PTP_DPC_CANON_EOS_DepthOfField 0xD1d4
2172 #define PTP_DPC_CANON_EOS_Brightness 0xD1d5
2173 #define PTP_DPC_CANON_EOS_LensAdjustParams 0xD1d6
2174 #define PTP_DPC_CANON_EOS_EFComp 0xD1d7
2175 #define PTP_DPC_CANON_EOS_LensName 0xD1d8
2176 #define PTP_DPC_CANON_EOS_AEB 0xD1d9
2177 #define PTP_DPC_CANON_EOS_StroboSetting 0xD1da
2178 #define PTP_DPC_CANON_EOS_StroboWirelessSetting 0xD1db
2179 #define PTP_DPC_CANON_EOS_StroboFiring 0xD1dc
2180 #define PTP_DPC_CANON_EOS_LensID 0xD1dd
2181 #define PTP_DPC_CANON_EOS_LCDBrightness 0xD1de
2182 #define PTP_DPC_CANON_EOS_CADarkBright 0xD1df
2183
2184 #define PTP_DPC_CANON_EOS_CAssistPreset 0xD201
2185 #define PTP_DPC_CANON_EOS_CAssistBrightness 0xD202
2186 #define PTP_DPC_CANON_EOS_CAssistContrast 0xD203
2187 #define PTP_DPC_CANON_EOS_CAssistSaturation 0xD204
2188 #define PTP_DPC_CANON_EOS_CAssistColorBA 0xD205
2189 #define PTP_DPC_CANON_EOS_CAssistColorMG 0xD206
2190 #define PTP_DPC_CANON_EOS_CAssistMonochrome 0xD207
2191 #define PTP_DPC_CANON_EOS_FocusShiftSetting 0xD208
2192 #define PTP_DPC_CANON_EOS_MovieSelfTimer 0xD209
2193 #define PTP_DPC_CANON_EOS_Clarity 0xD20B
2194 #define PTP_DPC_CANON_EOS_2GHDRSetting 0xD20C
2195 #define PTP_DPC_CANON_EOS_MovieParam5 0xD20D
2196 #define PTP_DPC_CANON_EOS_HDRViewAssistModeRec 0xD20E
2197 #define PTP_DPC_CANON_EOS_PropFinderAFFrame 0xD214
2198 #define PTP_DPC_CANON_EOS_VariableMovieRecSetting 0xD215
2199 #define PTP_DPC_CANON_EOS_PropAutoRotate 0xD216
2200 #define PTP_DPC_CANON_EOS_MFPeakingSetting 0xD217
2201 #define PTP_DPC_CANON_EOS_MovieSpatialOversampling 0xD218
2202 #define PTP_DPC_CANON_EOS_MovieCropMode 0xD219
2203 #define PTP_DPC_CANON_EOS_ShutterType 0xD21A
2204 #define PTP_DPC_CANON_EOS_WFTBatteryPower 0xD21B
2205 #define PTP_DPC_CANON_EOS_BatteryInfoEx 0xD21C
2206
2207 /* Nikon extension device property codes */
2208 #define PTP_DPC_NIKON_ShootingBank 0xD010
2209 #define PTP_DPC_NIKON_ShootingBankNameA 0xD011
2210 #define PTP_DPC_NIKON_ShootingBankNameB 0xD012
2211 #define PTP_DPC_NIKON_ShootingBankNameC 0xD013
2212 #define PTP_DPC_NIKON_ShootingBankNameD 0xD014
2213 #define PTP_DPC_NIKON_ResetBank0 0xD015
2214 #define PTP_DPC_NIKON_RawCompression 0xD016
2215 #define PTP_DPC_NIKON_WhiteBalanceAutoBias 0xD017
2216 #define PTP_DPC_NIKON_WhiteBalanceTungstenBias 0xD018
2217 #define PTP_DPC_NIKON_WhiteBalanceFluorescentBias 0xD019
2218 #define PTP_DPC_NIKON_WhiteBalanceDaylightBias 0xD01A
2219 #define PTP_DPC_NIKON_WhiteBalanceFlashBias 0xD01B
2220 #define PTP_DPC_NIKON_WhiteBalanceCloudyBias 0xD01C
2221 #define PTP_DPC_NIKON_WhiteBalanceShadeBias 0xD01D
2222 #define PTP_DPC_NIKON_WhiteBalanceColorTemperature 0xD01E
2223 #define PTP_DPC_NIKON_WhiteBalancePresetNo 0xD01F
2224 #define PTP_DPC_NIKON_WhiteBalancePresetName0 0xD020
2225 #define PTP_DPC_NIKON_WhiteBalancePresetName1 0xD021
2226 #define PTP_DPC_NIKON_WhiteBalancePresetName2 0xD022
2227 #define PTP_DPC_NIKON_WhiteBalancePresetName3 0xD023
2228 #define PTP_DPC_NIKON_WhiteBalancePresetName4 0xD024
2229 #define PTP_DPC_NIKON_WhiteBalancePresetVal0 0xD025
2230 #define PTP_DPC_NIKON_WhiteBalancePresetVal1 0xD026
2231 #define PTP_DPC_NIKON_WhiteBalancePresetVal2 0xD027
2232 #define PTP_DPC_NIKON_WhiteBalancePresetVal3 0xD028
2233 #define PTP_DPC_NIKON_WhiteBalancePresetVal4 0xD029
2234 #define PTP_DPC_NIKON_ImageSharpening 0xD02A
2235 #define PTP_DPC_NIKON_ToneCompensation 0xD02B
2236 #define PTP_DPC_NIKON_ColorModel 0xD02C
2237 #define PTP_DPC_NIKON_HueAdjustment 0xD02D
2238 #define PTP_DPC_NIKON_NonCPULensDataFocalLength 0xD02E
2239 #define PTP_DPC_NIKON_FmmManualSetting 0xD02E /* on z6, same as PTP_DPC_NIKON_NonCPULensDataFocalLength? */
2240 #define PTP_DPC_NIKON_NonCPULensDataMaximumAperture 0xD02F
2241 #define PTP_DPC_NIKON_F0ManualSetting 0xD02F /* on z6, same as PTP_DPC_NIKON_NonCPULensDataMaximumAperture? */
2242 #define PTP_DPC_NIKON_ShootingMode 0xD030 /* also Capture Area Crop on Z6 */
2243 #define PTP_DPC_NIKON_CaptureAreaCrop 0xD030 /* on z6, (DX = 1/FX = 0 / 1:1=2, 16:9=3)*/
2244 #define PTP_DPC_NIKON_JPEG_Compression_Policy 0xD031
2245 #define PTP_DPC_NIKON_ColorSpace 0xD032
2246 #define PTP_DPC_NIKON_AutoDXCrop 0xD033
2247 #define PTP_DPC_NIKON_FlickerReduction 0xD034
2248 #define PTP_DPC_NIKON_RemoteMode 0xD035
2249 #define PTP_DPC_NIKON_VideoMode 0xD036
2250 #define PTP_DPC_NIKON_EffectMode 0xD037
2251 #define PTP_DPC_NIKON_1_Mode 0xD038
2252 #define PTP_DPC_NIKON_WhiteBalancePresetName5 0xD038 /* z6 */
2253 #define PTP_DPC_NIKON_WhiteBalancePresetName6 0xD039 /* z6 */
2254 #define PTP_DPC_NIKON_WhiteBalanceTunePreset5 0xD03A /* z6 */
2255 #define PTP_DPC_NIKON_WhiteBalanceTunePreset6 0xD03B /* z6 */
2256 #define PTP_DPC_NIKON_WhiteBalancePresetProtect5 0xD03C /* z6 */
2257 #define PTP_DPC_NIKON_WhiteBalancePresetProtect6 0xD03D /* z6 */
2258 #define PTP_DPC_NIKON_WhiteBalancePresetValue5 0xD03E /* z6 */
2259 #define PTP_DPC_NIKON_WhiteBalancePresetValue6 0xD03F /* z6 */
2260 #define PTP_DPC_NIKON_CSMMenuBankSelect 0xD040
2261 #define PTP_DPC_NIKON_MenuBankNameA 0xD041
2262 #define PTP_DPC_NIKON_MenuBankNameB 0xD042
2263 #define PTP_DPC_NIKON_MenuBankNameC 0xD043
2264 #define PTP_DPC_NIKON_MenuBankNameD 0xD044
2265 #define PTP_DPC_NIKON_ResetBank 0xD045
2266 #define PTP_DPC_NIKON_AFStillLockOnAcross 0xD046
2267 #define PTP_DPC_NIKON_AFStillLockOnMove 0xD047
2268 #define PTP_DPC_NIKON_A1AFCModePriority 0xD048
2269 #define PTP_DPC_NIKON_A2AFSModePriority 0xD049
2270 #define PTP_DPC_NIKON_A3GroupDynamicAF 0xD04A
2271 #define PTP_DPC_NIKON_A4AFActivation 0xD04B
2272 #define PTP_DPC_NIKON_FocusAreaIllumManualFocus 0xD04C
2273 #define PTP_DPC_NIKON_FocusAreaIllumContinuous 0xD04D
2274 #define PTP_DPC_NIKON_FocusAreaIllumWhenSelected 0xD04E
2275 #define PTP_DPC_NIKON_FocusAreaWrap 0xD04F /* area sel */
2276 #define PTP_DPC_NIKON_FocusAreaSelect 0xD04F /* z6 */
2277 #define PTP_DPC_NIKON_VerticalAFON 0xD050
2278 #define PTP_DPC_NIKON_AFLockOn 0xD051
2279 #define PTP_DPC_NIKON_FocusAreaZone 0xD052
2280 #define PTP_DPC_NIKON_EnableCopyright 0xD053
2281 #define PTP_DPC_NIKON_ISOAuto 0xD054
2282 #define PTP_DPC_NIKON_EVISOStep 0xD055
2283 #define PTP_DPC_NIKON_EVStep 0xD056 /* EV Step SS FN */
2284 #define PTP_DPC_NIKON_EVStepExposureComp 0xD057
2285 #define PTP_DPC_NIKON_ExposureCompensation 0xD058
2286 #define PTP_DPC_NIKON_CenterWeightArea 0xD059 /* CenterweightedExRange */
2287 #define PTP_DPC_NIKON_ExposureBaseMatrix 0xD05A
2288 #define PTP_DPC_NIKON_ExposureBaseCenter 0xD05B
2289 #define PTP_DPC_NIKON_ExposureBaseSpot 0xD05C
2290 #define PTP_DPC_NIKON_LiveViewAFArea 0xD05D /* FIXME: AfAtLiveview? */
2291 #define PTP_DPC_NIKON_AELockMode 0xD05E
2292 #define PTP_DPC_NIKON_AELAFLMode 0xD05F
2293 #define PTP_DPC_NIKON_LiveViewAFFocus 0xD061 /* AfModeAtLiveView */
2294 #define PTP_DPC_NIKON_MeterOff 0xD062
2295 #define PTP_DPC_NIKON_SelfTimer 0xD063
2296 #define PTP_DPC_NIKON_MonitorOff 0xD064
2297 #define PTP_DPC_NIKON_ImgConfTime 0xD065
2298 #define PTP_DPC_NIKON_AutoOffTimers 0xD066
2299 #define PTP_DPC_NIKON_AngleLevel 0xD067
2300 #define PTP_DPC_NIKON_D1ShootingSpeed 0xD068 /* continuous speed low */
2301 #define PTP_DPC_NIKON_D2MaximumShots 0xD069 /* BurstMaxNumer */
2302 #define PTP_DPC_NIKON_ExposureDelayMode 0xD06A
2303 #define PTP_DPC_NIKON_LongExposureNoiseReduction 0xD06B
2304 #define PTP_DPC_NIKON_FileNumberSequence 0xD06C
2305 #define PTP_DPC_NIKON_ControlPanelFinderRearControl 0xD06D
2306 #define PTP_DPC_NIKON_ControlPanelFinderViewfinder 0xD06E
2307 #define PTP_DPC_NIKON_D7Illumination 0xD06F
2308 #define PTP_DPC_NIKON_NrHighISO 0xD070
2309 #define PTP_DPC_NIKON_SHSET_CH_GUID_DISP 0xD071
2310 #define PTP_DPC_NIKON_ArtistName 0xD072
2311 #define PTP_DPC_NIKON_CopyrightInfo 0xD073
2312 #define PTP_DPC_NIKON_FlashSyncSpeed 0xD074
2313 #define PTP_DPC_NIKON_FlashShutterSpeed 0xD075 /* SB Low Limit */
2314 #define PTP_DPC_NIKON_E3AAFlashMode 0xD076
2315 #define PTP_DPC_NIKON_E4ModelingFlash 0xD077
2316 #define PTP_DPC_NIKON_BracketSet 0xD078 /* Bracket Type? */
2317 #define PTP_DPC_NIKON_E6ManualModeBracketing 0xD079 /* Bracket Factor? */
2318 #define PTP_DPC_NIKON_BracketOrder 0xD07A
2319 #define PTP_DPC_NIKON_E8AutoBracketSelection 0xD07B /* Bracket Method? */
2320 #define PTP_DPC_NIKON_BracketingSet 0xD07C
2321 #define PTP_DPC_NIKON_AngleLevelPitching 0xD07D
2322 #define PTP_DPC_NIKON_AngleLevelYawing 0xD07E
2323 #define PTP_DPC_NIKON_ExtendShootingMenu 0xD07F
2324 #define PTP_DPC_NIKON_F1CenterButtonShootingMode 0xD080
2325 #define PTP_DPC_NIKON_CenterButtonPlaybackMode 0xD081
2326 #define PTP_DPC_NIKON_F2Multiselector 0xD082
2327 #define PTP_DPC_NIKON_F3PhotoInfoPlayback 0xD083 /* MultiSelector Dir */
2328 #define PTP_DPC_NIKON_F4AssignFuncButton 0xD084 /* CMD Dial Rotate */
2329 #define PTP_DPC_NIKON_F5CustomizeCommDials 0xD085 /* CMD Dial Change */
2330 #define PTP_DPC_NIKON_ReverseCommandDial 0xD086 /* CMD Dial FN Set */
2331 #define PTP_DPC_NIKON_ApertureSetting 0xD087 /* CMD Dial Active */
2332 #define PTP_DPC_NIKON_MenusAndPlayback 0xD088 /* CMD Dial Active */
2333 #define PTP_DPC_NIKON_F6ButtonsAndDials 0xD089 /* Universal Mode? */
2334 #define PTP_DPC_NIKON_NoCFCard 0xD08A /* Enable Shutter? */
2335 #define PTP_DPC_NIKON_CenterButtonZoomRatio 0xD08B
2336 #define PTP_DPC_NIKON_FunctionButton2 0xD08C
2337 #define PTP_DPC_NIKON_AFAreaPoint 0xD08D
2338 #define PTP_DPC_NIKON_NormalAFOn 0xD08E
2339 #define PTP_DPC_NIKON_CleanImageSensor 0xD08F
2340 #define PTP_DPC_NIKON_ImageCommentString 0xD090
2341 #define PTP_DPC_NIKON_ImageCommentEnable 0xD091
2342 #define PTP_DPC_NIKON_ImageRotation 0xD092
2343 #define PTP_DPC_NIKON_ManualSetLensNo 0xD093
2344 #define PTP_DPC_NIKON_RetractableLensWarning 0xD09C
2345 #define PTP_DPC_NIKON_FaceDetection 0xD09D
2346 #define PTP_DPC_NIKON_3DTrackingCaptureArea 0xD09E
2347 #define PTP_DPC_NIKON_MatrixMetering 0xD09F
2348 #define PTP_DPC_NIKON_MovScreenSize 0xD0A0
2349 #define PTP_DPC_NIKON_MovVoice 0xD0A1
2350 #define PTP_DPC_NIKON_MovMicrophone 0xD0A2
2351 #define PTP_DPC_NIKON_MovFileSlot 0xD0A3
2352 #define PTP_DPC_NIKON_MovRecProhibitCondition 0xD0A4
2353 #define PTP_DPC_NIKON_ManualMovieSetting 0xD0A6
2354 #define PTP_DPC_NIKON_MovQuality 0xD0A7
2355 #define PTP_DPC_NIKON_MovRecordMicrophoneLevelValue 0xD0A8
2356 #define PTP_DPC_NIKON_MovWindNoiseReduction 0xD0AA
2357 #define PTP_DPC_NIKON_MovRecordingZone 0xD0AC
2358 #define PTP_DPC_NIKON_MovISOAutoControl 0xD0AD
2359 #define PTP_DPC_NIKON_MovISOAutoHighLimit 0xD0AE
2360 #define PTP_DPC_NIKON_MovFileType 0xD0AF /* 0: mov, 1: mp4 */
2361 #define PTP_DPC_NIKON_LiveViewScreenDisplaySetting 0xD0B2
2362 #define PTP_DPC_NIKON_MonitorOffDelay 0xD0B3
2363 #define PTP_DPC_NIKON_ExposureIndexEx 0xD0B4
2364 #define PTP_DPC_NIKON_ISOControlSensitivity 0xD0B5
2365 #define PTP_DPC_NIKON_RawImageSize 0xD0B6
2366 #define PTP_DPC_NIKON_MultiBatteryInfo 0xD0B9
2367 #define PTP_DPC_NIKON_FlickerReductionSetting 0xD0B7
2368 #define PTP_DPC_NIKON_DiffractionCompensatipn 0xD0BA
2369 #define PTP_DPC_NIKON_MovieLogOutput 0xD0BB
2370 #define PTP_DPC_NIKON_MovieAutoDistortion 0xD0BC
2371 #define PTP_DPC_NIKON_RemainingExposureTime 0xD0BE
2372 #define PTP_DPC_NIKON_MovieLogSetting 0xD0BF
2373 #define PTP_DPC_NIKON_Bracketing 0xD0C0
2374 #define PTP_DPC_NIKON_AutoExposureBracketStep 0xD0C1
2375 #define PTP_DPC_NIKON_AutoExposureBracketProgram 0xD0C2
2376 #define PTP_DPC_NIKON_AutoExposureBracketCount 0xD0C3
2377 #define PTP_DPC_NIKON_WhiteBalanceBracketStep 0xD0C4
2378 #define PTP_DPC_NIKON_WhiteBalanceBracketProgram 0xD0C5
2379 #define PTP_DPC_NIKON_ADLBracketingPattern 0xD0C6
2380 #define PTP_DPC_NIKON_ADLBracketingStep 0xD0C7
2381 #define PTP_DPC_NIKON_HDMIOutputDataDepth 0xD0CC
2382 #define PTP_DPC_NIKON_LensID 0xD0E0
2383 #define PTP_DPC_NIKON_LensSort 0xD0E1
2384 #define PTP_DPC_NIKON_LensType 0xD0E2
2385 #define PTP_DPC_NIKON_FocalLengthMin 0xD0E3
2386 #define PTP_DPC_NIKON_FocalLengthMax 0xD0E4
2387 #define PTP_DPC_NIKON_MaxApAtMinFocalLength 0xD0E5
2388 #define PTP_DPC_NIKON_MaxApAtMaxFocalLength 0xD0E6
2389 #define PTP_DPC_NIKON_LensTypeML 0xD0E7
2390 #define PTP_DPC_NIKON_FinderISODisp 0xD0F0
2391 #define PTP_DPC_NIKON_AutoOffPhoto 0xD0F2
2392 #define PTP_DPC_NIKON_AutoOffMenu 0xD0F3
2393 #define PTP_DPC_NIKON_AutoOffInfo 0xD0F4
2394 #define PTP_DPC_NIKON_SelfTimerShootNum 0xD0F5
2395 #define PTP_DPC_NIKON_VignetteCtrl 0xD0F7
2396 #define PTP_DPC_NIKON_AutoDistortionControl 0xD0F8
2397 #define PTP_DPC_NIKON_SceneMode 0xD0F9
2398 #define PTP_DPC_NIKON_UserMode 0xD0FC
2399 #define PTP_DPC_NIKON_SceneMode2 0xD0FD
2400 #define PTP_DPC_NIKON_SelfTimerInterval 0xD0FE
2401 #define PTP_DPC_NIKON_ExposureTime 0xD100 /* Shutter Speed */
2402 #define PTP_DPC_NIKON_ACPower 0xD101
2403 #define PTP_DPC_NIKON_WarningStatus 0xD102
2404 #define PTP_DPC_NIKON_MaximumShots 0xD103 /* remain shots (in RAM buffer?) */
2405 #define PTP_DPC_NIKON_AFLockStatus 0xD104
2406 #define PTP_DPC_NIKON_AELockStatus 0xD105
2407 #define PTP_DPC_NIKON_FVLockStatus 0xD106
2408 #define PTP_DPC_NIKON_AutofocusLCDTopMode2 0xD107
2409 #define PTP_DPC_NIKON_AutofocusArea 0xD108
2410 #define PTP_DPC_NIKON_FlexibleProgram 0xD109
2411 #define PTP_DPC_NIKON_LightMeter 0xD10A /* Exposure Status */
2412 #define PTP_DPC_NIKON_RecordingMedia 0xD10B /* Card or SDRAM */
2413 #define PTP_DPC_NIKON_USBSpeed 0xD10C
2414 #define PTP_DPC_NIKON_CCDNumber 0xD10D
2415 #define PTP_DPC_NIKON_CameraOrientation 0xD10E
2416 #define PTP_DPC_NIKON_GroupPtnType 0xD10F
2417 #define PTP_DPC_NIKON_FNumberLock 0xD110
2418 #define PTP_DPC_NIKON_ExposureApertureLock 0xD111 /* shutterspeed lock*/
2419 #define PTP_DPC_NIKON_TVLockSetting 0xD112
2420 #define PTP_DPC_NIKON_AVLockSetting 0xD113
2421 #define PTP_DPC_NIKON_IllumSetting 0xD114
2422 #define PTP_DPC_NIKON_FocusPointBright 0xD115
2423 #define PTP_DPC_NIKON_ExposureCompFlashUsed 0xD118
2424 #define PTP_DPC_NIKON_ExternalFlashAttached 0xD120
2425 #define PTP_DPC_NIKON_ExternalFlashStatus 0xD121
2426 #define PTP_DPC_NIKON_ExternalFlashSort 0xD122
2427 #define PTP_DPC_NIKON_ExternalFlashMode 0xD123
2428 #define PTP_DPC_NIKON_ExternalFlashCompensation 0xD124
2429 #define PTP_DPC_NIKON_NewExternalFlashMode 0xD125
2430 #define PTP_DPC_NIKON_FlashExposureCompensation 0xD126
2431 #define PTP_DPC_NIKON_ExternalFlashMultiFlashMode 0xD12D
2432 #define PTP_DPC_NIKON_ConnectionPath 0xD12E
2433 #define PTP_DPC_NIKON_HDRMode 0xD130
2434 #define PTP_DPC_NIKON_HDRHighDynamic 0xD131
2435 #define PTP_DPC_NIKON_HDRSmoothing 0xD132
2436 #define PTP_DPC_NIKON_HDRSaveIndividualImages 0xD133
2437 #define PTP_DPC_NIKON_VibrationReduction 0xD138
2438 #define PTP_DPC_NIKON_OptimizeImage 0xD140
2439 #define PTP_DPC_NIKON_WBAutoType 0xD141
2440 #define PTP_DPC_NIKON_Saturation 0xD142
2441 #define PTP_DPC_NIKON_BW_FillerEffect 0xD143
2442 #define PTP_DPC_NIKON_BW_Sharpness 0xD144
2443 #define PTP_DPC_NIKON_BW_Contrast 0xD145
2444 #define PTP_DPC_NIKON_BW_Setting_Type 0xD146
2445 #define PTP_DPC_NIKON_Slot2SaveMode 0xD148
2446 #define PTP_DPC_NIKON_RawBitMode 0xD149
2447 #define PTP_DPC_NIKON_ActiveDLighting 0xD14E /* was PTP_DPC_NIKON_ISOAutoTime */
2448 #define PTP_DPC_NIKON_FlourescentType 0xD14F
2449 #define PTP_DPC_NIKON_TuneColourTemperature 0xD150
2450 #define PTP_DPC_NIKON_TunePreset0 0xD151
2451 #define PTP_DPC_NIKON_TunePreset1 0xD152
2452 #define PTP_DPC_NIKON_TunePreset2 0xD153
2453 #define PTP_DPC_NIKON_TunePreset3 0xD154
2454 #define PTP_DPC_NIKON_TunePreset4 0xD155
2455 #define PTP_DPC_NIKON_PrimarySlot 0xD156
2456 #define PTP_DPC_NIKON_WBPresetProtect1 0xD158
2457 #define PTP_DPC_NIKON_WBPresetProtect2 0xD159
2458 #define PTP_DPC_NIKON_WBPresetProtect3 0xD15A
2459 #define PTP_DPC_NIKON_ActiveFolder 0xD15B
2460 #define PTP_DPC_NIKON_WBPresetProtect4 0xD15C
2461 #define PTP_DPC_NIKON_WhiteBalanceReset 0xD15D
2462 #define PTP_DPC_NIKON_WhiteBalanceNaturalLightAutoBias 0xD15E /* Only encountered in D850, z6? */
2463 #define PTP_DPC_NIKON_BeepOff 0xD160
2464 #define PTP_DPC_NIKON_AutofocusMode 0xD161
2465 #define PTP_DPC_NIKON_AFAssist 0xD163
2466 #define PTP_DPC_NIKON_PADVPMode 0xD164 /* iso auto time */
2467 #define PTP_DPC_NIKON_ISOAutoShutterTime 0xD164 /* z6 */
2468 #define PTP_DPC_NIKON_ImageReview 0xD165
2469 #define PTP_DPC_NIKON_AFAreaIllumination 0xD166
2470 #define PTP_DPC_NIKON_FlashMode 0xD167
2471 #define PTP_DPC_NIKON_FlashCommanderMode 0xD168
2472 #define PTP_DPC_NIKON_FlashSign 0xD169
2473 #define PTP_DPC_NIKON_ISO_Auto 0xD16A
2474 #define PTP_DPC_NIKON_RemoteTimeout 0xD16B
2475 #define PTP_DPC_NIKON_GridDisplay 0xD16C
2476 #define PTP_DPC_NIKON_FlashModeManualPower 0xD16D
2477 #define PTP_DPC_NIKON_FlashModeCommanderPower 0xD16E
2478 #define PTP_DPC_NIKON_AutoFP 0xD16F
2479 #define PTP_DPC_NIKON_DateImprintSetting 0xD170
2480 #define PTP_DPC_NIKON_DateCounterSelect 0xD171
2481 #define PTP_DPC_NIKON_DateCountData 0xD172
2482 #define PTP_DPC_NIKON_DateCountDisplaySetting 0xD173
2483 #define PTP_DPC_NIKON_RangeFinderSetting 0xD174
2484 #define PTP_DPC_NIKON_LimitedAFAreaMode 0xD176
2485 #define PTP_DPC_NIKON_AFModeRestrictions 0xD177
2486 #define PTP_DPC_NIKON_LowLightAF 0xD17A
2487 #define PTP_DPC_NIKON_ApplyLiveViewSetting 0xD17B
2488 #define PTP_DPC_NIKON_MovieAfSpeed 0xD17C
2489 #define PTP_DPC_NIKON_MovieAfSpeedWhenToApply 0xD17D
2490 #define PTP_DPC_NIKON_MovieAfTrackingSensitivity 0xD17E
2491 #define PTP_DPC_NIKON_CSMMenu 0xD180
2492 #define PTP_DPC_NIKON_WarningDisplay 0xD181
2493 #define PTP_DPC_NIKON_BatteryCellKind 0xD182
2494 #define PTP_DPC_NIKON_ISOAutoHiLimit 0xD183
2495 #define PTP_DPC_NIKON_DynamicAFArea 0xD184
2496 #define PTP_DPC_NIKON_ContinuousSpeedHigh 0xD186
2497 #define PTP_DPC_NIKON_InfoDispSetting 0xD187
2498 #define PTP_DPC_NIKON_PreviewButton 0xD189
2499 #define PTP_DPC_NIKON_PreviewButton2 0xD18A
2500 #define PTP_DPC_NIKON_AEAFLockButton2 0xD18B
2501 #define PTP_DPC_NIKON_IndicatorDisp 0xD18D
2502 #define PTP_DPC_NIKON_CellKindPriority 0xD18E
2503 #define PTP_DPC_NIKON_BracketingFramesAndSteps 0xD190
2504 #define PTP_DPC_NIKON_MovieReleaseButton 0xD197
2505 #define PTP_DPC_NIKON_FlashISOAutoHighLimit 0xD199
2506 #define PTP_DPC_NIKON_LiveViewMode 0xD1A0
2507 #define PTP_DPC_NIKON_LiveViewDriveMode 0xD1A1
2508 #define PTP_DPC_NIKON_LiveViewStatus 0xD1A2
2509 #define PTP_DPC_NIKON_LiveViewImageZoomRatio 0xD1A3
2510 #define PTP_DPC_NIKON_LiveViewProhibitCondition 0xD1A4
2511 #define PTP_DPC_NIKON_LiveViewExposurePreview 0xD1A5
2512 #define PTP_DPC_NIKON_LiveViewSelector 0xD1A6
2513 #define PTP_DPC_NIKON_LiveViewWhiteBalance 0xD1A7
2514 #define PTP_DPC_NIKON_MovieShutterSpeed 0xD1A8
2515 #define PTP_DPC_NIKON_MovieFNumber 0xD1A9
2516 #define PTP_DPC_NIKON_MovieISO 0xD1AA
2517 #define PTP_DPC_NIKON_MovieExposureBiasCompensation 0xD1AB
2518 #define PTP_DPC_NIKON_LiveViewMovieMode 0xD1AC /* ? */
2519 #define PTP_DPC_NIKON_LiveViewImageSize 0xD1AC /* d850 */
2520 #define PTP_DPC_NIKON_LiveViewPhotography 0xD1AD
2521 #define PTP_DPC_NIKON_MovieExposureMeteringMode 0xD1AF
2522 #define PTP_DPC_NIKON_ExposureDisplayStatus 0xD1B0
2523 #define PTP_DPC_NIKON_ExposureIndicateStatus 0xD1B1
2524 #define PTP_DPC_NIKON_InfoDispErrStatus 0xD1B2
2525 #define PTP_DPC_NIKON_ExposureIndicateLightup 0xD1B3
2526 #define PTP_DPC_NIKON_ContinousShootingCount 0xD1B4
2527 #define PTP_DPC_NIKON_MovieRecFrameCount 0xD1B7
2528 #define PTP_DPC_NIKON_CameraLiveViewStatus 0xD1B8
2529 #define PTP_DPC_NIKON_DetectionPeaking 0xD1B9
2530 #define PTP_DPC_NIKON_LiveViewTFTStatus 0xD1BA
2531 #define PTP_DPC_NIKON_LiveViewImageStatus 0xD1BB
2532 #define PTP_DPC_NIKON_LiveViewImageCompression 0xD1BC
2533 #define PTP_DPC_NIKON_LiveViewZoomArea 0xD1BD
2534 #define PTP_DPC_NIKON_FlashOpen 0xD1C0
2535 #define PTP_DPC_NIKON_FlashCharged 0xD1C1
2536 #define PTP_DPC_NIKON_FlashMRepeatValue 0xD1D0
2537 #define PTP_DPC_NIKON_FlashMRepeatCount 0xD1D1
2538 #define PTP_DPC_NIKON_FlashMRepeatInterval 0xD1D2
2539 #define PTP_DPC_NIKON_FlashCommandChannel 0xD1D3
2540 #define PTP_DPC_NIKON_FlashCommandSelfMode 0xD1D4
2541 #define PTP_DPC_NIKON_FlashCommandSelfCompensation 0xD1D5
2542 #define PTP_DPC_NIKON_FlashCommandSelfValue 0xD1D6
2543 #define PTP_DPC_NIKON_FlashCommandAMode 0xD1D7
2544 #define PTP_DPC_NIKON_FlashCommandACompensation 0xD1D8
2545 #define PTP_DPC_NIKON_FlashCommandAValue 0xD1D9
2546 #define PTP_DPC_NIKON_FlashCommandBMode 0xD1DA
2547 #define PTP_DPC_NIKON_FlashCommandBCompensation 0xD1DB
2548 #define PTP_DPC_NIKON_FlashCommandBValue 0xD1DC
2549 #define PTP_DPC_NIKON_ExternalRecordingControl 0xD1DE
2550 #define PTP_DPC_NIKON_HighlightBrightness 0xD1DF
2551 #define PTP_DPC_NIKON_SBWirelessMode 0xD1E2
2552 #define PTP_DPC_NIKON_SBWirelessMultipleFlashMode 0xD1E3
2553 #define PTP_DPC_NIKON_SBUsableGroup 0xD1E4
2554 #define PTP_DPC_NIKON_WirelessCLSEntryMode 0xD1E5
2555 #define PTP_DPC_NIKON_SBPINCode 0xD1E6
2556 #define PTP_DPC_NIKON_RadioMultipleFlashChannel 0xD1E7
2557 #define PTP_DPC_NIKON_OpticalMultipleFlashChannel 0xD1E8
2558 #define PTP_DPC_NIKON_FlashRangeDisplay 0xD1E9
2559 #define PTP_DPC_NIKON_AllTestFiringDisable 0xD1EA
2560 #define PTP_DPC_NIKON_SBSettingMemberLock 0xD1EC
2561 #define PTP_DPC_NIKON_SBIntegrationFlashReady 0xD1ED
2562 #define PTP_DPC_NIKON_ApplicationMode 0xD1F0
2563 #define PTP_DPC_NIKON_ExposureRemaining 0xD1F1
2564 #define PTP_DPC_NIKON_ActiveSlot 0xD1F2
2565 #define PTP_DPC_NIKON_ISOAutoShutterCorrectionTime 0xD1F4
2566 #define PTP_DPC_NIKON_MirrorUpStatus 0xD1F6
2567 #define PTP_DPC_NIKON_MirrorUpReleaseShootingCount 0xD1F7
2568 #define PTP_DPC_NIKON_MovieAfAreaMode 0xD1F8
2569 #define PTP_DPC_NIKON_MovieVibrationReduction 0xD1F9
2570 #define PTP_DPC_NIKON_MovieFocusMode 0xD1FA
2571 #define PTP_DPC_NIKON_RecordTimeCodes 0xD1FB
2572 #define PTP_DPC_NIKON_CountUpMethod 0xD1FC
2573 #define PTP_DPC_NIKON_TimeCodeOrigin 0xD1FD
2574 #define PTP_DPC_NIKON_DropFrame 0xD1FE
2575 #define PTP_DPC_NIKON_ActivePicCtrlItem 0xD200
2576 #define PTP_DPC_NIKON_ChangePicCtrlItem 0xD201
2577 #define PTP_DPC_NIKON_ElectronicFrontCurtainShutter 0xD20D
2578 #define PTP_DPC_NIKON_MovieResetShootingMenu 0xD20E
2579 #define PTP_DPC_NIKON_MovieCaptureAreaCrop 0xD20F
2580 #define PTP_DPC_NIKON_MovieAutoDxCrop 0xD210
2581 #define PTP_DPC_NIKON_MovieWbAutoType 0xD211
2582 #define PTP_DPC_NIKON_MovieWbTuneAuto 0xD212
2583 #define PTP_DPC_NIKON_MovieWbTuneIncandescent 0xD213
2584 #define PTP_DPC_NIKON_MovieWbFlourescentType 0xD214
2585 #define PTP_DPC_NIKON_MovieWbTuneFlourescent 0xD215
2586 #define PTP_DPC_NIKON_MovieWbTuneSunny 0xD216
2587 #define PTP_DPC_NIKON_MovieWbTuneCloudy 0xD218
2588 #define PTP_DPC_NIKON_MovieWbTuneShade 0xD219
2589 #define PTP_DPC_NIKON_MovieWbColorTemp 0xD21A
2590 #define PTP_DPC_NIKON_MovieWbTuneColorTemp 0xD21B
2591 #define PTP_DPC_NIKON_MovieWbPresetData0 0xD21C
2592 #define PTP_DPC_NIKON_MovieWbPresetDataComment1 0xD21D
2593 #define PTP_DPC_NIKON_MovieWbPresetDataComment2 0xD21E
2594 #define PTP_DPC_NIKON_MovieWbPresetDataComment3 0xD21F
2595 #define PTP_DPC_NIKON_MovieWbPresetDataComment4 0xD220
2596 #define PTP_DPC_NIKON_MovieWbPresetDataComment5 0xD221
2597 #define PTP_DPC_NIKON_MovieWbPresetDataComment6 0xD222
2598 #define PTP_DPC_NIKON_MovieWbPresetDataValue1 0xD223
2599 #define PTP_DPC_NIKON_MovieWbPresetDataValue2 0xD224
2600 #define PTP_DPC_NIKON_MovieWbPresetDataValue3 0xD225
2601 #define PTP_DPC_NIKON_MovieWbPresetDataValue4 0xD226
2602 #define PTP_DPC_NIKON_MovieWbPresetDataValue5 0xD227
2603 #define PTP_DPC_NIKON_MovieWbPresetDataValue6 0xD228
2604 #define PTP_DPC_NIKON_MovieWbTunePreset1 0xD229
2605 #define PTP_DPC_NIKON_MovieWbTunePreset2 0xD22A
2606 #define PTP_DPC_NIKON_MovieWbTunePreset3 0xD22B
2607 #define PTP_DPC_NIKON_MovieWbTunePreset4 0xD22C
2608 #define PTP_DPC_NIKON_MovieWbTunePreset5 0xD22D
2609 #define PTP_DPC_NIKON_MovieWbTunePreset6 0xD22E
2610 #define PTP_DPC_NIKON_MovieWbPresetProtect1 0xD22F
2611 #define PTP_DPC_NIKON_MovieWbPresetProtect2 0xD230
2612 #define PTP_DPC_NIKON_MovieWbPresetProtect3 0xD231
2613 #define PTP_DPC_NIKON_MovieWbPresetProtect4 0xD232
2614 #define PTP_DPC_NIKON_MovieWbPresetProtect5 0xD233
2615 #define PTP_DPC_NIKON_MovieWbPresetProtect6 0xD234
2616 #define PTP_DPC_NIKON_MovieWhiteBalanceReset 0xD235
2617 #define PTP_DPC_NIKON_MovieNrHighISO 0xD236
2618 #define PTP_DPC_NIKON_MovieActivePicCtrlItem 0xD237
2619 #define PTP_DPC_NIKON_MovieChangePicCtrlItem 0xD238
2620 #define PTP_DPC_NIKON_ExposureBaseCompHighlight 0xD239
2621 #define PTP_DPC_NIKON_MovieWhiteBalance 0xD23A
2622 #define PTP_DPC_NIKON_MovieActiveDLighting 0xD23B
2623 #define PTP_DPC_NIKON_MovieWbTuneNatural 0xD23C
2624 #define PTP_DPC_NIKON_MovieAttenuator 0xD23D
2625 #define PTP_DPC_NIKON_MovieVignetteControl 0xD23E
2626 #define PTP_DPC_NIKON_MovieDiffractionCompensation 0xD23F
2627 #define PTP_DPC_NIKON_UseDeviceStageFlag 0xD303
2628 #define PTP_DPC_NIKON_MovieCaptureMode 0xD304
2629 #define PTP_DPC_NIKON_SlowMotionMovieRecordScreenSize 0xD305
2630 #define PTP_DPC_NIKON_HighSpeedStillCaptureRate 0xD306
2631 #define PTP_DPC_NIKON_BestMomentCaptureMode 0xD307
2632 #define PTP_DPC_NIKON_ActiveSelectionFrameSavedDefault 0xD308
2633 #define PTP_DPC_NIKON_ActiveSelectionCapture40frameOver 0xD309
2634 #define PTP_DPC_NIKON_ActiveSelectionOnReleaseRecord 0xD310
2635 #define PTP_DPC_NIKON_ActiveSelectionSelectedPictures 0xD311
2636 #define PTP_DPC_NIKON_ExposureRemainingInMovie 0xD312
2637 #define PTP_DPC_NIKON_OpticalVR 0xD313
2638 #define PTP_DPC_NIKON_ElectronicVR 0xD314
2639 #define PTP_DPC_NIKON_SilentPhotography 0xD315
2640 #define PTP_DPC_NIKON_FacePriority 0xD316
2641 #define PTP_DPC_NIKON_LensTypeNikon1 0xD317
2642 #define PTP_DPC_NIKON_ISONoiseReduction 0xD318
2643 #define PTP_DPC_NIKON_MovieLoopLength 0xD323
2644
2645
2646 /* Nikon V1 (or WU adapter?) Trace */
2647 /* d241 - gets string "Nikon_WU2_0090B5123C61" */
2648 #define PTP_DPC_NIKON_D241 0xD241
2649 /* d244 - gets a single byte 0x00 */
2650 #define PTP_DPC_NIKON_D244 0xD244
2651 /* d247 - gets 3 bytes 0x01 0x00 0x00 */
2652 #define PTP_DPC_NIKON_D247 0xD247
2653 /* S9700 */
2654 #define PTP_DPC_NIKON_GUID 0xD24F
2655 /* d250 - gets a string "0000123C61" */
2656 #define PTP_DPC_NIKON_D250 0xD250
2657 /* d251 - gets a 0x0100000d */
2658 #define PTP_DPC_NIKON_D251 0xD251
2659
2660 /* this is irregular, as it should be -0x5000 or 0xD000 based */
2661 #define PTP_DPC_NIKON_1_ISO 0xF002
2662 #define PTP_DPC_NIKON_1_FNumber 0xF003
2663 #define PTP_DPC_NIKON_1_ShutterSpeed 0xF004
2664 #define PTP_DPC_NIKON_1_FNumber2 0xF006
2665 #define PTP_DPC_NIKON_1_ShutterSpeed2 0xF007
2666 #define PTP_DPC_NIKON_1_ImageCompression 0xF009
2667 #define PTP_DPC_NIKON_1_ImageSize 0xF00A
2668 #define PTP_DPC_NIKON_1_WhiteBalance 0xF00C
2669 #define PTP_DPC_NIKON_1_LongExposureNoiseReduction 0xF00D
2670 #define PTP_DPC_NIKON_1_HiISONoiseReduction 0xF00E
2671 #define PTP_DPC_NIKON_1_ActiveDLighting 0xF00F
2672 #define PTP_DPC_NIKON_1_Language 0xF018
2673 #define PTP_DPC_NIKON_1_ReleaseWithoutCard 0xF019 /* no sd card */
2674 #define PTP_DPC_NIKON_1_MovQuality 0xF01C
2675
2676 /* Fuji specific */
2677
2678 #define PTP_DPC_FUJI_FilmSimulation 0xD001
2679 #define PTP_DPC_FUJI_FilmSimulationTune 0xD002
2680 #define PTP_DPC_FUJI_DRangeMode 0xD007
2681 #define PTP_DPC_FUJI_ColorMode 0xD008
2682 #define PTP_DPC_FUJI_ColorSpace 0xD00A
2683 #define PTP_DPC_FUJI_WhitebalanceTune1 0xD00B
2684 #define PTP_DPC_FUJI_WhitebalanceTune2 0xD00C
2685 #define PTP_DPC_FUJI_ColorTemperature 0xD017
2686 #define PTP_DPC_FUJI_Quality 0xD018
2687 #define PTP_DPC_FUJI_RecMode 0xD019 /* LiveViewColorMode? */
2688 #define PTP_DPC_FUJI_LiveViewBrightness 0xD01A
2689 #define PTP_DPC_FUJI_ThroughImageZoom 0xD01B
2690 #define PTP_DPC_FUJI_NoiseReduction 0xD01C
2691 #define PTP_DPC_FUJI_MacroMode 0xD01D
2692 #define PTP_DPC_FUJI_LiveViewStyle 0xD01E
2693 #define PTP_DPC_FUJI_FaceDetectionMode 0xD020
2694 #define PTP_DPC_FUJI_RedEyeCorrectionMode 0xD021
2695 #define PTP_DPC_FUJI_RawCompression 0xD022
2696 #define PTP_DPC_FUJI_GrainEffect 0xD023
2697 #define PTP_DPC_FUJI_SetEyeAFMode 0xD024
2698 #define PTP_DPC_FUJI_FocusPoints 0xD025
2699 #define PTP_DPC_FUJI_MFAssistMode 0xD026
2700 #define PTP_DPC_FUJI_InterlockAEAFArea 0xD027
2701 #define PTP_DPC_FUJI_CommandDialMode 0xD028
2702 #define PTP_DPC_FUJI_Shadowing 0xD029
2703 /* d02a - d02c also appear in setafmode */
2704 #define PTP_DPC_FUJI_ExposureIndex 0xD02A
2705 #define PTP_DPC_FUJI_MovieISO 0xD02B
2706 #define PTP_DPC_FUJI_WideDynamicRange 0xD02E
2707 #define PTP_DPC_FUJI_TNumber 0xD02F
2708 #define PTP_DPC_FUJI_Comment 0xD100
2709 #define PTP_DPC_FUJI_SerialMode 0xD101
2710 #define PTP_DPC_FUJI_ExposureDelay 0xD102
2711 #define PTP_DPC_FUJI_PreviewTime 0xD103
2712 #define PTP_DPC_FUJI_BlackImageTone 0xD104
2713 #define PTP_DPC_FUJI_Illumination 0xD105
2714 #define PTP_DPC_FUJI_FrameGuideMode 0xD106
2715 #define PTP_DPC_FUJI_ViewfinderWarning 0xD107
2716 #define PTP_DPC_FUJI_AutoImageRotation 0xD108
2717 #define PTP_DPC_FUJI_DetectImageRotation 0xD109
2718 #define PTP_DPC_FUJI_ShutterPriorityMode1 0xD10A
2719 #define PTP_DPC_FUJI_ShutterPriorityMode2 0xD10B
2720 #define PTP_DPC_FUJI_AFIlluminator 0xD112
2721 #define PTP_DPC_FUJI_Beep 0xD113
2722 #define PTP_DPC_FUJI_AELock 0xD114
2723 #define PTP_DPC_FUJI_ISOAutoSetting1 0xD115
2724 #define PTP_DPC_FUJI_ISOAutoSetting2 0xD116
2725 #define PTP_DPC_FUJI_ISOAutoSetting3 0xD117
2726 #define PTP_DPC_FUJI_ExposureStep 0xD118
2727 #define PTP_DPC_FUJI_CompensationStep 0xD119
2728 #define PTP_DPC_FUJI_ExposureSimpleSet 0xD11A
2729 #define PTP_DPC_FUJI_CenterPhotometryRange 0xD11B
2730 #define PTP_DPC_FUJI_PhotometryLevel1 0xD11C
2731 #define PTP_DPC_FUJI_PhotometryLevel2 0xD11D
2732 #define PTP_DPC_FUJI_PhotometryLevel3 0xD11E
2733 #define PTP_DPC_FUJI_FlashTuneSpeed 0xD11F
2734 #define PTP_DPC_FUJI_FlashShutterLimit 0xD120
2735 #define PTP_DPC_FUJI_BuiltinFlashMode 0xD121
2736 #define PTP_DPC_FUJI_FlashManualMode 0xD122
2737 #define PTP_DPC_FUJI_FlashRepeatingMode1 0xD123
2738 #define PTP_DPC_FUJI_FlashRepeatingMode2 0xD124
2739 #define PTP_DPC_FUJI_FlashRepeatingMode3 0xD125
2740 #define PTP_DPC_FUJI_FlashCommanderMode1 0xD126
2741 #define PTP_DPC_FUJI_FlashCommanderMode2 0xD127
2742 #define PTP_DPC_FUJI_FlashCommanderMode3 0xD128
2743 #define PTP_DPC_FUJI_FlashCommanderMode4 0xD129
2744 #define PTP_DPC_FUJI_FlashCommanderMode5 0xD12A
2745 #define PTP_DPC_FUJI_FlashCommanderMode6 0xD12B
2746 #define PTP_DPC_FUJI_FlashCommanderMode7 0xD12C
2747 #define PTP_DPC_FUJI_ModelingFlash 0xD12D
2748 #define PTP_DPC_FUJI_BKT 0xD12E
2749 #define PTP_DPC_FUJI_BKTChange 0xD12F
2750 #define PTP_DPC_FUJI_BKTOrder 0xD130
2751 #define PTP_DPC_FUJI_BKTSelection 0xD131
2752 #define PTP_DPC_FUJI_AEAFLockButton 0xD132
2753 #define PTP_DPC_FUJI_CenterButton 0xD133
2754 #define PTP_DPC_FUJI_MultiSelectorButton 0xD134
2755 #define PTP_DPC_FUJI_FunctionLock 0xD136
2756 #define PTP_DPC_FUJI_Password 0xD145
2757 #define PTP_DPC_FUJI_ChangePassword 0xD146 /* ? */
2758 #define PTP_DPC_FUJI_CommandDialSetting1 0xD147
2759 #define PTP_DPC_FUJI_CommandDialSetting2 0xD148
2760 #define PTP_DPC_FUJI_CommandDialSetting3 0xD149
2761 #define PTP_DPC_FUJI_CommandDialSetting4 0xD14A
2762 #define PTP_DPC_FUJI_ButtonsAndDials 0xD14B
2763 #define PTP_DPC_FUJI_NonCPULensData 0xD14C
2764 #define PTP_DPC_FUJI_MBD200Batteries 0xD14E
2765 #define PTP_DPC_FUJI_AFOnForMBD200Batteries 0xD14F
2766 #define PTP_DPC_FUJI_FirmwareVersion 0xD153
2767 #define PTP_DPC_FUJI_ShotCount 0xD154
2768 #define PTP_DPC_FUJI_ShutterExchangeCount 0xD155
2769 #define PTP_DPC_FUJI_WorldClock 0xD157
2770 #define PTP_DPC_FUJI_TimeDifference1 0xD158
2771 #define PTP_DPC_FUJI_TimeDifference2 0xD159
2772 #define PTP_DPC_FUJI_Language 0xD15A
2773 #define PTP_DPC_FUJI_FrameNumberSequence 0xD15B
2774 #define PTP_DPC_FUJI_VideoMode 0xD15C
2775 #define PTP_DPC_FUJI_SetUSBMode 0xD15D
2776 #define PTP_DPC_FUJI_CommentWriteSetting 0xD161
2777 #define PTP_DPC_FUJI_BCRAppendDelimiter 0xD162
2778 #define PTP_DPC_FUJI_CommentEx 0xD167
2779 #define PTP_DPC_FUJI_VideoOutOnOff 0xD168
2780 #define PTP_DPC_FUJI_CropMode 0xD16F
2781 #define PTP_DPC_FUJI_LensZoomPos 0xD170
2782 #define PTP_DPC_FUJI_FocusPosition 0xD171
2783 #define PTP_DPC_FUJI_LiveViewImageQuality 0xD173
2784 #define PTP_DPC_FUJI_LiveViewImageSize 0xD174
2785 #define PTP_DPC_FUJI_LiveViewCondition 0xD175
2786 #define PTP_DPC_FUJI_StandbyMode 0xD176
2787 #define PTP_DPC_FUJI_LiveViewExposure 0xD177
2788 #define PTP_DPC_FUJI_LiveViewWhiteBalance 0xD178 /* same values as 0x5005 */
2789 #define PTP_DPC_FUJI_LiveViewWhiteBalanceGain 0xD179
2790 #define PTP_DPC_FUJI_LiveViewTuning 0xD17A
2791 #define PTP_DPC_FUJI_FocusMeteringMode 0xD17C
2792 #define PTP_DPC_FUJI_FocusLength 0xD17D
2793 #define PTP_DPC_FUJI_CropAreaFrameInfo 0xD17E
2794 #define PTP_DPC_FUJI_ResetSetting 0xD17F /* also clean sensor? */
2795 #define PTP_DPC_FUJI_IOPCode 0xD184
2796 #define PTP_DPC_FUJI_TetherRawConditionCode 0xD186
2797 #define PTP_DPC_FUJI_TetherRawCompatibilityCode 0xD187
2798 #define PTP_DPC_FUJI_LightTune 0xD200
2799 #define PTP_DPC_FUJI_ReleaseMode 0xD201
2800 #define PTP_DPC_FUJI_BKTFrame1 0xD202
2801 #define PTP_DPC_FUJI_BKTFrame2 0xD203
2802 #define PTP_DPC_FUJI_BKTStep 0xD204
2803 #define PTP_DPC_FUJI_ProgramShift 0xD205
2804 #define PTP_DPC_FUJI_FocusAreas 0xD206
2805 #define PTP_DPC_FUJI_PriorityMode 0xD207 /* from setprioritymode */
2806 /* D208 is some kind of control, likely bitmasked. reported like an enum.
2807 * 0x200 seems to mean focusing?
2808 * 0x208 capture?
2809 * camera starts with 0x304
2810 * xt2: 0x104,0x200,0x4,0x304,0x500,0xc,0xa000,6,0x9000,2,0x9100,1,0x9300,5
2811 * xt3: 0x104,0x200,0x4,0x304,0x500,0xc,0xa000,6,0x9000,2,0x9100,1,0x9200,0x40,0x9300,5,0x804,0x80
2812 * xt30: 0x104,0x200,0x4,0x304,0x500,0xc,0xa000,6,0x9000,2,0x9100,1,0x9200,0x40,0x9300,5
2813 * xt4: 0x104,0x200,0x4,0x304,0x500,0xc,0x8000,0xa000,6,0x9000,2,0x9100,1,0x9300,5,0xe,0x9200,0x40,0x804,0x80
2814 * xh1: 0x104,0x200,0x4,0x304,0x500,0xc,0xa000,6,0x9000,2,0x9100,1,0x9300,5
2815 * gfx100: 0x104,0x200,0x4,0x304,0x500,0xc,0x8000,0xa000,6,0x9000,2,0x9100,1,0x9300,5,0xe,0x9200
2816 * gfx50r: 0x104,0x200,0x4,0x304,0x500,0xc,0xa000,6,0x9000,2,0x9100,1,0x9300,5,0xe
2817 * xpro2: 0x104,0x200,0x4,0x304,0x500,0xc,0xa000,6,0x9000,2,0x9100,1
2818 *
2819 * 0x304 is for regular capture SDK_ShootS2toS0 (default) (SDK_Shoot)
2820 * 0x200 seems for autofocus (s1?) SDK_ShootS1
2821 * 0x500 start bulb? 0xc end bulb? SDK_StartBulb
2822 * 0x400 might also be start bulb? SDK_StartBulb
2823 * 0xc SDK_EndBulb
2824 * 0x600 SDK_1PushAF
2825 * 0x4 SDK_CancelS1
2826 * 0x300 SDK_ShootS2
2827 * 0x8000 migh be autowhitebalance
2828 */
2829 #define PTP_DPC_FUJI_AFStatus 0xD209
2830 #define PTP_DPC_FUJI_DeviceName 0xD20B
2831 #define PTP_DPC_FUJI_MediaRecord 0xD20C /* from capmediarecord */
2832 #define PTP_DPC_FUJI_MediaCapacity 0xD20D
2833 #define PTP_DPC_FUJI_FreeSDRAMImages 0xD20E /* free images in SDRAM */
2834 #define PTP_DPC_FUJI_MediaStatus 0xD211
2835 #define PTP_DPC_FUJI_CurrentState 0xD212
2836 #define PTP_DPC_FUJI_AELock2 0xD213
2837 #define PTP_DPC_FUJI_Copyright 0xD215
2838 #define PTP_DPC_FUJI_Copyright2 0xD216
2839 #define PTP_DPC_FUJI_Aperture 0xD218
2840 #define PTP_DPC_FUJI_ShutterSpeed 0xD219
2841 #define PTP_DPC_FUJI_DeviceError 0xD21B
2842 #define PTP_DPC_FUJI_SensitivityFineTune1 0xD222
2843 #define PTP_DPC_FUJI_SensitivityFineTune2 0xD223
2844 #define PTP_DPC_FUJI_CaptureRemaining 0xD229 /* Movie AF Mode? */
2845 #define PTP_DPC_FUJI_MovieRemainingTime 0xD22A /* Movie Focus Area? */
2846 #define PTP_DPC_FUJI_ForceMode 0xD230
2847 #define PTP_DPC_FUJI_ShutterSpeed2 0xD240 /* Movie Aperture */
2848 #define PTP_DPC_FUJI_ImageAspectRatio 0xD241
2849 #define PTP_DPC_FUJI_BatteryLevel 0xD242 /* Movie Sensitivity???? */
2850 #define PTP_DPC_FUJI_TotalShotCount 0xD310
2851 #define PTP_DPC_FUJI_HighLightTone 0xD320
2852 #define PTP_DPC_FUJI_ShadowTone 0xD321
2853 #define PTP_DPC_FUJI_LongExposureNR 0xD322
2854 #define PTP_DPC_FUJI_FullTimeManualFocus 0xD323
2855 #define PTP_DPC_FUJI_ISODialHn1 0xD332
2856 #define PTP_DPC_FUJI_ISODialHn2 0xD333
2857 #define PTP_DPC_FUJI_ViewMode1 0xD33F
2858 #define PTP_DPC_FUJI_ViewMode2 0xD340
2859 #define PTP_DPC_FUJI_DispInfoMode 0xD343
2860 #define PTP_DPC_FUJI_LensISSwitch 0xD346
2861 #define PTP_DPC_FUJI_FocusPoint 0xD347
2862 #define PTP_DPC_FUJI_InstantAFMode 0xD34A
2863 #define PTP_DPC_FUJI_PreAFMode 0xD34B
2864 #define PTP_DPC_FUJI_CustomSetting 0xD34C
2865 #define PTP_DPC_FUJI_LMOMode 0xD34D
2866 #define PTP_DPC_FUJI_LockButtonMode 0xD34E
2867 #define PTP_DPC_FUJI_AFLockMode 0xD34F
2868 #define PTP_DPC_FUJI_MicJackMode 0xD350
2869 #define PTP_DPC_FUJI_ISMode 0xD351
2870 #define PTP_DPC_FUJI_DateTimeDispFormat 0xD352
2871 #define PTP_DPC_FUJI_AeAfLockKeyAssign 0xD353
2872 #define PTP_DPC_FUJI_CrossKeyAssign 0xD354
2873 #define PTP_DPC_FUJI_SilentMode 0xD355
2874 #define PTP_DPC_FUJI_PBSound 0xD356
2875 #define PTP_DPC_FUJI_EVFDispAutoRotate 0xD358
2876 #define PTP_DPC_FUJI_ExposurePreview 0xD359
2877 #define PTP_DPC_FUJI_DispBrightness1 0xD35A
2878 #define PTP_DPC_FUJI_DispBrightness2 0xD35B
2879 #define PTP_DPC_FUJI_DispChroma1 0xD35C
2880 #define PTP_DPC_FUJI_DispChroma2 0xD35D
2881 #define PTP_DPC_FUJI_FocusCheckMode 0xD35E
2882 #define PTP_DPC_FUJI_FocusScaleUnit 0xD35F
2883 #define PTP_DPC_FUJI_SetFunctionButton 0xD361
2884 #define PTP_DPC_FUJI_SensorCleanTiming 0xD363
2885 #define PTP_DPC_FUJI_CustomAutoPowerOff 0xD364
2886 #define PTP_DPC_FUJI_FileNamePrefix1 0xD365
2887 #define PTP_DPC_FUJI_FileNamePrefix2 0xD366
2888 #define PTP_DPC_FUJI_BatteryInfo1 0xD36A
2889 #define PTP_DPC_FUJI_BatteryInfo2 0xD36B
2890 #define PTP_DPC_FUJI_LensNameAndSerial 0xD36D
2891 #define PTP_DPC_FUJI_CustomDispInfo 0xD36E
2892 #define PTP_DPC_FUJI_FunctionLockCategory1 0xD36F
2893 #define PTP_DPC_FUJI_FunctionLockCategory2 0xD370
2894 #define PTP_DPC_FUJI_CustomPreviewTime 0xD371
2895 #define PTP_DPC_FUJI_FocusArea1 0xD372
2896 #define PTP_DPC_FUJI_FocusArea2 0xD373
2897 #define PTP_DPC_FUJI_FocusArea3 0xD374
2898 #define PTP_DPC_FUJI_FrameGuideGridInfo1 0xD375
2899 #define PTP_DPC_FUJI_FrameGuideGridInfo2 0xD376
2900 #define PTP_DPC_FUJI_FrameGuideGridInfo3 0xD377
2901 #define PTP_DPC_FUJI_FrameGuideGridInfo4 0xD378
2902 #define PTP_DPC_FUJI_LensUnknownData 0xD38A
2903 #define PTP_DPC_FUJI_LensZoomPosCaps 0xD38C
2904 #define PTP_DPC_FUJI_LensFNumberList 0xD38D
2905 #define PTP_DPC_FUJI_LensFocalLengthList 0xD38E
2906 #define PTP_DPC_FUJI_FocusLimiter 0xD390
2907 #define PTP_DPC_FUJI_FocusArea4 0xD395
2908 #define PTP_DPC_FUJI_InitSequence 0xDF01
2909 #define PTP_DPC_FUJI_AppVersion 0xDF24
2910
2911 /* Microsoft/MTP specific */
2912 #define PTP_DPC_MTP_SecureTime 0xD101
2913 #define PTP_DPC_MTP_DeviceCertificate 0xD102
2914 #define PTP_DPC_MTP_RevocationInfo 0xD103
2915 #define PTP_DPC_MTP_SynchronizationPartner 0xD401
2916 #define PTP_DPC_MTP_DeviceFriendlyName 0xD402
2917 #define PTP_DPC_MTP_VolumeLevel 0xD403
2918 #define PTP_DPC_MTP_DeviceIcon 0xD405
2919 #define PTP_DPC_MTP_SessionInitiatorInfo 0xD406
2920 #define PTP_DPC_MTP_PerceivedDeviceType 0xD407
2921 #define PTP_DPC_MTP_PlaybackRate 0xD410
2922 #define PTP_DPC_MTP_PlaybackObject 0xD411
2923 #define PTP_DPC_MTP_PlaybackContainerIndex 0xD412
2924 #define PTP_DPC_MTP_PlaybackPosition 0xD413
2925 #define PTP_DPC_MTP_PlaysForSureID 0xD131
2926
2927 /* Zune specific property codes */
2928 #define PTP_DPC_MTP_Zune_UnknownVersion 0xD181
2929
2930 /* Olympus */
2931 /* these are from OMD E-M1 Mark 2 */
2932 #define PTP_DPC_OLYMPUS_Aperture 0xD002
2933 #define PTP_DPC_OLYMPUS_FocusMode 0xD003
2934 #define PTP_DPC_OLYMPUS_ExposureMeteringMode 0xD004
2935 #define PTP_DPC_OLYMPUS_ISO 0xD007
2936 #define PTP_DPC_OLYMPUS_ExposureCompensation 0xD008
2937 #define PTP_DPC_OLYMPUS_OMD_DriveMode 0xD009
2938 #define PTP_DPC_OLYMPUS_ImageFormat 0xD00D
2939 #define PTP_DPC_OLYMPUS_FaceDetection 0xD01A
2940 #define PTP_DPC_OLYMPUS_AspectRatio 0xD01B
2941 #define PTP_DPC_OLYMPUS_Shutterspeed 0xD01C
2942 #define PTP_DPC_OLYMPUS_WhiteBalance 0xD01E
2943 #define PTP_DPC_OLYMPUS_LiveViewModeOM 0xD06D
2944 #define PTP_DPC_OLYMPUS_CaptureTarget 0xD0DC
2945
2946 /* unsure where these were from */
2947 #define PTP_DPC_OLYMPUS_ResolutionMode 0xD102
2948 #define PTP_DPC_OLYMPUS_FocusPriority 0xD103
2949 #define PTP_DPC_OLYMPUS_DriveMode 0xD104
2950 #define PTP_DPC_OLYMPUS_DateTimeFormat 0xD105
2951 #define PTP_DPC_OLYMPUS_ExposureBiasStep 0xD106
2952 #define PTP_DPC_OLYMPUS_WBMode 0xD107
2953 #define PTP_DPC_OLYMPUS_OneTouchWB 0xD108
2954 #define PTP_DPC_OLYMPUS_ManualWB 0xD109
2955 #define PTP_DPC_OLYMPUS_ManualWBRBBias 0xD10A
2956 #define PTP_DPC_OLYMPUS_CustomWB 0xD10B
2957 #define PTP_DPC_OLYMPUS_CustomWBValue 0xD10C
2958 #define PTP_DPC_OLYMPUS_ExposureTimeEx 0xD10D
2959 #define PTP_DPC_OLYMPUS_BulbMode 0xD10E
2960 #define PTP_DPC_OLYMPUS_AntiMirrorMode 0xD10F
2961 #define PTP_DPC_OLYMPUS_AEBracketingFrame 0xD110
2962 #define PTP_DPC_OLYMPUS_AEBracketingStep 0xD111
2963 #define PTP_DPC_OLYMPUS_WBBracketingFrame 0xD112
2964 #define PTP_DPC_OLYMPUS_WBBracketingRBFrame 0xD112 /* dup ? */
2965 #define PTP_DPC_OLYMPUS_WBBracketingRBRange 0xD113
2966 #define PTP_DPC_OLYMPUS_WBBracketingGMFrame 0xD114
2967 #define PTP_DPC_OLYMPUS_WBBracketingGMRange 0xD115
2968 #define PTP_DPC_OLYMPUS_FLBracketingFrame 0xD118
2969 #define PTP_DPC_OLYMPUS_FLBracketingStep 0xD119
2970 #define PTP_DPC_OLYMPUS_FlashBiasCompensation 0xD11A
2971 #define PTP_DPC_OLYMPUS_ManualFocusMode 0xD11B
2972 #define PTP_DPC_OLYMPUS_RawSaveMode 0xD11D
2973 #define PTP_DPC_OLYMPUS_AUXLightMode 0xD11E
2974 #define PTP_DPC_OLYMPUS_LensSinkMode 0xD11F
2975 #define PTP_DPC_OLYMPUS_BeepStatus 0xD120
2976 #define PTP_DPC_OLYMPUS_ColorSpace 0xD122
2977 #define PTP_DPC_OLYMPUS_ColorMatching 0xD123
2978 #define PTP_DPC_OLYMPUS_Saturation 0xD124
2979 #define PTP_DPC_OLYMPUS_NoiseReductionPattern 0xD126
2980 #define PTP_DPC_OLYMPUS_NoiseReductionRandom 0xD127
2981 #define PTP_DPC_OLYMPUS_ShadingMode 0xD129
2982 #define PTP_DPC_OLYMPUS_ISOBoostMode 0xD12A
2983 #define PTP_DPC_OLYMPUS_ExposureIndexBiasStep 0xD12B
2984 #define PTP_DPC_OLYMPUS_FilterEffect 0xD12C
2985 #define PTP_DPC_OLYMPUS_ColorTune 0xD12D
2986 #define PTP_DPC_OLYMPUS_Language 0xD12E
2987 #define PTP_DPC_OLYMPUS_LanguageCode 0xD12F
2988 #define PTP_DPC_OLYMPUS_RecviewMode 0xD130
2989 #define PTP_DPC_OLYMPUS_SleepTime 0xD131
2990 #define PTP_DPC_OLYMPUS_ManualWBGMBias 0xD132
2991 #define PTP_DPC_OLYMPUS_AELAFLMode 0xD135
2992 #define PTP_DPC_OLYMPUS_AELButtonStatus 0xD136
2993 #define PTP_DPC_OLYMPUS_CompressionSettingEx 0xD137
2994 #define PTP_DPC_OLYMPUS_ToneMode 0xD139
2995 #define PTP_DPC_OLYMPUS_GradationMode 0xD13A
2996 #define PTP_DPC_OLYMPUS_DevelopMode 0xD13B
2997 #define PTP_DPC_OLYMPUS_ExtendInnerFlashMode 0xD13C
2998 #define PTP_DPC_OLYMPUS_OutputDeviceMode 0xD13D
2999 #define PTP_DPC_OLYMPUS_LiveViewMode 0xD13E
3000 #define PTP_DPC_OLYMPUS_LCDBacklight 0xD140
3001 #define PTP_DPC_OLYMPUS_CustomDevelop 0xD141
3002 #define PTP_DPC_OLYMPUS_GradationAutoBias 0xD142
3003 #define PTP_DPC_OLYMPUS_FlashRCMode 0xD143
3004 #define PTP_DPC_OLYMPUS_FlashRCGroupValue 0xD144
3005 #define PTP_DPC_OLYMPUS_FlashRCChannelValue 0xD145
3006 #define PTP_DPC_OLYMPUS_FlashRCFPMode 0xD146
3007 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicMode 0xD147
3008 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicBias 0xD148
3009 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicManualBias 0xD149
3010 #define PTP_DPC_OLYMPUS_FlashRCQuantityLightLevel 0xD14A
3011 #define PTP_DPC_OLYMPUS_FocusMeteringValue 0xD14B
3012 #define PTP_DPC_OLYMPUS_ISOBracketingFrame 0xD14C
3013 #define PTP_DPC_OLYMPUS_ISOBracketingStep 0xD14D
3014 #define PTP_DPC_OLYMPUS_BulbMFMode 0xD14E
3015 #define PTP_DPC_OLYMPUS_BurstFPSValue 0xD14F
3016 #define PTP_DPC_OLYMPUS_ISOAutoBaseValue 0xD150
3017 #define PTP_DPC_OLYMPUS_ISOAutoMaxValue 0xD151
3018 #define PTP_DPC_OLYMPUS_BulbLimiterValue 0xD152
3019 #define PTP_DPC_OLYMPUS_DPIMode 0xD153
3020 #define PTP_DPC_OLYMPUS_DPICustomValue 0xD154
3021 #define PTP_DPC_OLYMPUS_ResolutionValueSetting 0xD155
3022 #define PTP_DPC_OLYMPUS_AFTargetSize 0xD157
3023 #define PTP_DPC_OLYMPUS_LightSensorMode 0xD158
3024 #define PTP_DPC_OLYMPUS_AEBracket 0xD159
3025 #define PTP_DPC_OLYMPUS_WBRBBracket 0xD15A
3026 #define PTP_DPC_OLYMPUS_WBGMBracket 0xD15B
3027 #define PTP_DPC_OLYMPUS_FlashBracket 0xD15C
3028 #define PTP_DPC_OLYMPUS_ISOBracket 0xD15D
3029 #define PTP_DPC_OLYMPUS_MyModeStatus 0xD15E
3030 #define PTP_DPC_OLYMPUS_DateTimeUTC 0xD176 /* check */
3031
3032 /* Sony A900 */
3033 #define PTP_DPC_SONY_DPCCompensation 0xD200
3034 #define PTP_DPC_SONY_DRangeOptimize 0xD201
3035 #define PTP_DPC_SONY_ImageSize 0xD203
3036 #define PTP_DPC_SONY_ShutterSpeed 0xD20D
3037 #define PTP_DPC_SONY_ColorTemp 0xD20F
3038 #define PTP_DPC_SONY_CCFilter 0xD210
3039 #define PTP_DPC_SONY_AspectRatio 0xD211
3040 #define PTP_DPC_SONY_FocusFound 0xD213 /* seems to be signaled (1->2) when focus is achieved */
3041 #define PTP_DPC_SONY_Zoom 0xD214 /* might be focal length * 1.000.000 */
3042 #define PTP_DPC_SONY_ObjectInMemory 0xD215 /* used to signal when to retrieve new object */
3043 #define PTP_DPC_SONY_ExposeIndex 0xD216
3044 #define PTP_DPC_SONY_BatteryLevel 0xD218
3045 #define PTP_DPC_SONY_SensorCrop 0xD219
3046 #define PTP_DPC_SONY_PictureEffect 0xD21B
3047 #define PTP_DPC_SONY_ABFilter 0xD21C
3048 #define PTP_DPC_SONY_ISO 0xD21E /* ? */
3049 #define PTP_DPC_SONY_StillImageStoreDestination 0xD222 /* (type=0x4) Enumeration [1,17,16] value: 17 */
3050 /* guessed DPC_SONY_DateTimeSettings 0xD223 error on query */
3051 /* guessed DPC_SONY_FocusArea 0xD22C (type=0x4) Enumeration [1,2,3,257,258,259,260,513,514,515,516,517,518,519,261,520] value: 1 */
3052 /* guessed DPC_SONY_LiveDisplayEffect 0xD231 (type=0x2) Enumeration [1,2] value: 1 */
3053 /* guessed DPC_SONY_FileType 0xD235 (enum: 0,1) */
3054 /* guessed DPC_SONY_JpegQuality 0xD252 */
3055 /* guessed DPC_SONY_PriorityKeySettings 0xD25A */
3056 /* d255 reserved 5 */
3057 /* d254 reserved 4 */
3058 #define PTP_DPC_SONY_ExposureCompensation 0xD224
3059 #define PTP_DPC_SONY_ISO2 0xD226
3060 #define PTP_DPC_SONY_ShutterSpeed2 0xD229
3061 #define PTP_DPC_SONY_AutoFocus 0xD2C1 /* ? half-press */
3062 #define PTP_DPC_SONY_Capture 0xD2C2 /* ? full-press */
3063 /* D2DB (2) , D2D3 (2) , D2C8 (2) also seen in Camera Remote related to D2C2 */
3064 /* S1 ?
3065 * AEL - d2c3
3066 * FEL - d2c9
3067 * AFL - d2c4
3068 * AWBL - d2d9
3069 */
3070 /* semi control opcodes */
3071 #define PTP_DPC_SONY_Movie 0xD2C8 /* ? */
3072 #define PTP_DPC_SONY_StillImage 0xD2C7 /* ? */
3073
3074 #define PTP_DPC_SONY_NearFar 0xD2D1
3075 /*#define PTP_DPC_SONY_AutoFocus 0xD2D2 something related */
3076
3077 #define PTP_DPC_SONY_AF_Area_Position 0xD2DC
3078
3079 /* Sony QX properties */
3080 /* all for 96f8 Control Device */
3081 #define PTP_DPC_SONY_QX_Zoom_Absolute 0xD60E
3082 #define PTP_DPC_SONY_QX_Movie_Rec 0xD60F
3083 #define PTP_DPC_SONY_QX_Request_For_Update 0xD612
3084 #define PTP_DPC_SONY_QX_Zoom_Wide_For_One_Shot 0xD613
3085 #define PTP_DPC_SONY_QX_Zoom_Tele_For_One_Shot 0xD614
3086 #define PTP_DPC_SONY_QX_S2_Button 0xD617
3087 #define PTP_DPC_SONY_QX_Media_Format 0xD61C
3088 #define PTP_DPC_SONY_QX_S1_Button 0xD61D
3089 #define PTP_DPC_SONY_QX_AE_Lock 0xD61E
3090 #define PTP_DPC_SONY_QX_Request_For_Update_For_Lens 0xD625
3091 #define PTP_DPC_SONY_QX_Power_Off 0xD637
3092 #define PTP_DPC_SONY_QX_RequestOneShooting 0xD638
3093 #define PTP_DPC_SONY_QX_AF_Lock 0xD63B
3094 #define PTP_DPC_SONY_QX_Zoom_Tele 0xD63C
3095 #define PTP_DPC_SONY_QX_Zoom_Wide 0xD63E
3096 #define PTP_DPC_SONY_QX_Focus_Magnification 0xD641
3097 #define PTP_DPC_SONY_QX_Focus_Near_For_One_Shot 0xD6A1
3098 #define PTP_DPC_SONY_QX_Focus_Far_For_One_Shot 0xD6A2
3099 #define PTP_DPC_SONY_QX_Focus_Near_For_Continuous 0xD6A3
3100 #define PTP_DPC_SONY_QX_Focus_Far_For_Continuous 0xD6A4
3101 #define PTP_DPC_SONY_QX_Camera_Setting_Reset 0xD6D9
3102 #define PTP_DPC_SONY_QX_Camera_Initialize 0xD6DA
3103
3104 /* old */
3105 #define PTP_DPC_SONY_QX_Capture 0xD617
3106 #define PTP_DPC_SONY_QX_AutoFocus 0xD61D
3107
3108 /* set via 96fa */
3109 #define PTP_DPC_SONY_QX_PictureProfileInitialize 0xD620
3110 #define PTP_DPC_SONY_QX_PictureProfile 0xD621
3111 #define PTP_DPC_SONY_QX_AFSPrioritySetting 0xD622
3112 #define PTP_DPC_SONY_QX_AFCPrioritySetting 0xD623
3113 #define PTP_DPC_SONY_QX_LensUpdateState 0xD624
3114 #define PTP_DPC_SONY_QX_SilentShooting 0xD626
3115 #define PTP_DPC_SONY_QX_HDMIInfoDisplay 0xD627
3116 #define PTP_DPC_SONY_QX_TCUBDisp 0xD628
3117 #define PTP_DPC_SONY_QX_TCPreset 0xD629
3118 #define PTP_DPC_SONY_QX_TCMake 0xD62A
3119 #define PTP_DPC_SONY_QX_TCRun 0xD62B
3120 #define PTP_DPC_SONY_QX_UBPreset 0xD62C
3121 #define PTP_DPC_SONY_QX_TCFormat 0xD62D
3122 #define PTP_DPC_SONY_QX_LongExposureNR 0xD62E
3123 #define PTP_DPC_SONY_QX_UBTimeRec 0xD62F
3124 #define PTP_DPC_SONY_QX_FocusMagnificationLevel 0xD6A7
3125 #define PTP_DPC_SONY_QX_FocusMagnificationPosition 0xD6A8
3126 #define PTP_DPC_SONY_QX_LensStatus 0xD6A9
3127 #define PTP_DPC_SONY_QX_LiveviewResolution 0xD6AA
3128 #define PTP_DPC_SONY_QX_NotifyFocusPosition 0xD6AF
3129 #define PTP_DPC_SONY_QX_DriveMode 0xD6B0
3130 #define PTP_DPC_SONY_QX_DateTime 0xD6B1
3131 #define PTP_DPC_SONY_QX_AspectRatio 0xD6B3
3132 #define PTP_DPC_SONY_QX_ImageSize 0xD6B7
3133 #define PTP_DPC_SONY_QX_WhiteBalance 0xD6B8
3134 #define PTP_DPC_SONY_QX_CompressionSetting 0xD6B9
3135 #define PTP_DPC_SONY_QX_CautionError 0xD6BA
3136 #define PTP_DPC_SONY_QX_StorageInformation 0xD6BB
3137 #define PTP_DPC_SONY_QX_MovieQualitySetting 0xD6BC
3138 #define PTP_DPC_SONY_QX_MovieFormatSetting 0xD6BD
3139 #define PTP_DPC_SONY_QX_ZoomSetAbsolute 0xD6BE
3140 #define PTP_DPC_SONY_QX_ZoomInformation 0xD6BF
3141 #define PTP_DPC_SONY_QX_FocusSpeedForOneShot 0xD6C1
3142 #define PTP_DPC_SONY_QX_FlashCompensation 0xD6C2
3143 #define PTP_DPC_SONY_QX_ExposureCompensation 0xD6C3
3144 #define PTP_DPC_SONY_QX_Aperture 0xD6C5
3145 #define PTP_DPC_SONY_QX_ShootingFileInformation 0xD6C6
3146 #define PTP_DPC_SONY_QX_MediaFormatState 0xD6C7
3147 #define PTP_DPC_SONY_QX_ZoomMode 0xD6C9
3148 #define PTP_DPC_SONY_QX_FlashMode 0xD6CA
3149 #define PTP_DPC_SONY_QX_FocusMode 0xD6CB
3150 #define PTP_DPC_SONY_QX_ExposureMode 0xD6CC
3151 #define PTP_DPC_SONY_QX_MovieRecordingState 0xD6CD
3152 #define PTP_DPC_SONY_QX_SelectSaveMedia 0xD6CF
3153 #define PTP_DPC_SONY_QX_StillSteady 0xD6D0
3154 #define PTP_DPC_SONY_QX_MovieSteady 0xD6D1
3155 #define PTP_DPC_SONY_QX_Housing 0xD6D2
3156 #define PTP_DPC_SONY_QX_K4OutputSetting 0xD6D3
3157 #define PTP_DPC_SONY_QX_HDMIRECControl 0xD6D4
3158 #define PTP_DPC_SONY_QX_TimeCodeOutputToHDMI 0xD6D5
3159 #define PTP_DPC_SONY_QX_HDMIResolution 0xD6D6
3160 #define PTP_DPC_SONY_QX_NTSC_PAL_Selector 0xD6D7
3161 #define PTP_DPC_SONY_QX_HDMIOutput 0xD6D8
3162 #define PTP_DPC_SONY_QX_ISOAutoMinimum 0xD6DB
3163 #define PTP_DPC_SONY_QX_ISOAutoMaximum 0xD6DC
3164 #define PTP_DPC_SONY_QX_APSCSuper35mm 0xD6DD
3165 #define PTP_DPC_SONY_QX_LiveviewStatus 0xD6DE
3166 #define PTP_DPC_SONY_QX_WhiteBalanceInitialize 0xD6DF
3167 #define PTP_DPC_SONY_QX_OperatingMode 0xD6E2
3168 #define PTP_DPC_SONY_QX_BiaxialFineTuningABDirection 0xD6E3
3169 #define PTP_DPC_SONY_QX_HighISONr 0xD6E5
3170 #define PTP_DPC_SONY_QX_AELockIndication 0xD6E8
3171 #define PTP_DPC_SONY_QX_ElectronicFrontCurtainShutter 0xD6E9
3172 #define PTP_DPC_SONY_QX_ShutterSpeed 0xD6EA
3173 #define PTP_DPC_SONY_QX_FocusIndication 0xD6EC
3174 #define PTP_DPC_SONY_QX_BiaxialFineTuningGMDirection 0xD6EF
3175 #define PTP_DPC_SONY_QX_ColorTemperature 0xD6F0
3176 #define PTP_DPC_SONY_QX_BatteryLevelIndication 0xD6F1
3177 #define PTP_DPC_SONY_QX_ISO 0xD6F2
3178 #define PTP_DPC_SONY_QX_AutoSlowShutter 0xD6F3
3179 #define PTP_DPC_SONY_QX_DynamicRangeOptimizer 0xD6FE
3180
3181
3182 /* Casio EX-F1 */
3183 #define PTP_DPC_CASIO_MONITOR 0xD001
3184 #define PTP_DPC_CASIO_STORAGE 0xD002 //Not reported by DeviceInfo?
3185 #define PTP_DPC_CASIO_UNKNOWN_1 0xD004
3186 #define PTP_DPC_CASIO_UNKNOWN_2 0xD005
3187 #define PTP_DPC_CASIO_UNKNOWN_3 0xD007
3188 #define PTP_DPC_CASIO_RECORD_LIGHT 0xD008
3189 #define PTP_DPC_CASIO_UNKNOWN_4 0xD009
3190 #define PTP_DPC_CASIO_UNKNOWN_5 0xD00A
3191 #define PTP_DPC_CASIO_MOVIE_MODE 0xD00B
3192 #define PTP_DPC_CASIO_HD_SETTING 0xD00C
3193 #define PTP_DPC_CASIO_HS_SETTING 0xD00D
3194 #define PTP_DPC_CASIO_CS_HIGH_SPEED 0xD00F
3195 #define PTP_DPC_CASIO_CS_UPPER_LIMIT 0xD010
3196 #define PTP_DPC_CASIO_CS_SHOT 0xD011
3197 #define PTP_DPC_CASIO_UNKNOWN_6 0xD012
3198 #define PTP_DPC_CASIO_UNKNOWN_7 0xD013
3199 #define PTP_DPC_CASIO_UNKNOWN_8 0xD015
3200 #define PTP_DPC_CASIO_UNKNOWN_9 0xD017
3201 #define PTP_DPC_CASIO_UNKNOWN_10 0xD018
3202 #define PTP_DPC_CASIO_UNKNOWN_11 0xD019
3203 #define PTP_DPC_CASIO_UNKNOWN_12 0xD01A
3204 #define PTP_DPC_CASIO_UNKNOWN_13 0xD01B
3205 #define PTP_DPC_CASIO_UNKNOWN_14 0xD01C
3206 #define PTP_DPC_CASIO_UNKNOWN_15 0xD01D
3207 #define PTP_DPC_CASIO_UNKNOWN_16 0xD020
3208 #define PTP_DPC_CASIO_UNKNOWN_17 0xD030
3209 #define PTP_DPC_CASIO_UNKNOWN_18 0xD080
3210
3211 #define PTP_DPC_RICOH_ShutterSpeed 0xD00F
3212
3213 /* https://github.com/Parrot-Developers/sequoia-ptpy */
3214 #define PTP_DPC_PARROT_PhotoSensorEnableMask 0xD201
3215 #define PTP_DPC_PARROT_PhotoSensorsKeepOn 0xD202
3216 #define PTP_DPC_PARROT_MultispectralImageSize 0xD203
3217 #define PTP_DPC_PARROT_MainBitDepth 0xD204
3218 #define PTP_DPC_PARROT_MultispectralBitDepth 0xD205
3219 #define PTP_DPC_PARROT_HeatingEnable 0xD206
3220 #define PTP_DPC_PARROT_WifiStatus 0xD207
3221 #define PTP_DPC_PARROT_WifiSSID 0xD208
3222 #define PTP_DPC_PARROT_WifiEncryptionType 0xD209
3223 #define PTP_DPC_PARROT_WifiPassphrase 0xD20A
3224 #define PTP_DPC_PARROT_WifiChannel 0xD20B
3225 #define PTP_DPC_PARROT_Localization 0xD20C
3226 #define PTP_DPC_PARROT_WifiMode 0xD20D
3227 #define PTP_DPC_PARROT_AntiFlickeringFrequency 0xD210
3228 #define PTP_DPC_PARROT_DisplayOverlayMask 0xD211
3229 #define PTP_DPC_PARROT_GPSInterval 0xD212
3230 #define PTP_DPC_PARROT_MultisensorsExposureMeteringMode 0xD213
3231 #define PTP_DPC_PARROT_MultisensorsExposureTime 0xD214
3232 #define PTP_DPC_PARROT_MultisensorsExposureProgramMode 0xD215
3233 #define PTP_DPC_PARROT_MultisensorsExposureIndex 0xD216
3234 #define PTP_DPC_PARROT_MultisensorsIrradianceGain 0xD217
3235 #define PTP_DPC_PARROT_MultisensorsIrradianceIntegrationTime 0xD218
3236 #define PTP_DPC_PARROT_OverlapRate 0xD219
3237
3238 /* Panasonic does not have regular device properties, they use some 32bit values */
3239 #define PTP_DPC_PANASONIC_PhotoStyle 0x02000010
3240 #define PTP_DPC_PANASONIC_ISO 0x02000020
3241 #define PTP_DPC_PANASONIC_ISO_Param 0x02000021
3242 #define PTP_DPC_PANASONIC_ISO_UpperLimit 0x02000022
3243 #define PTP_DPC_PANASONIC_ShutterSpeed 0x02000030
3244 #define PTP_DPC_PANASONIC_ShutterSpeed_Param 0x02000031
3245 #define PTP_DPC_PANASONIC_ShutterSpeed_RangeLimit 0x02000032
3246 #define PTP_DPC_PANASONIC_Aperture 0x02000040
3247 #define PTP_DPC_PANASONIC_Aperture_Param 0x02000041
3248 #define PTP_DPC_PANASONIC_Aperture_RangeLimit 0x02000042
3249 #define PTP_DPC_PANASONIC_WhiteBalance 0x02000050
3250 #define PTP_DPC_PANASONIC_WhiteBalance_Param 0x02000051
3251 #define PTP_DPC_PANASONIC_WhiteBalance_KSet 0x02000052
3252 #define PTP_DPC_PANASONIC_WhiteBalance_ADJ_AB 0x02000053
3253 #define PTP_DPC_PANASONIC_WhiteBalance_ADJ_GM 0x02000054
3254 #define PTP_DPC_PANASONIC_WhiteBalance_ADJ_AB_Sep 0x02000055
3255 #define PTP_DPC_PANASONIC_Exposure 0x02000060
3256 #define PTP_DPC_PANASONIC_Exposure_Param 0x02000061
3257 #define PTP_DPC_PANASONIC_Exposure_RangeLimit 0x02000062
3258 #define PTP_DPC_PANASONIC_AFArea 0x02000070 /* AFCONFIG */
3259 #define PTP_DPC_PANASONIC_AFArea_AFModeParam 0x02000071 /* AFCONFIG */
3260 #define PTP_DPC_PANASONIC_AFArea_AFAreaParam 0x02000072 /* AFCONFIG */
3261 #define PTP_DPC_PANASONIC_AFArea_SetQuickAFParam 0x02000073 /* AFCONFIG */
3262 #define PTP_DPC_PANASONIC_CameraMode 0x02000080
3263 #define PTP_DPC_PANASONIC_CameraMode_DriveMode 0x02000081
3264 #define PTP_DPC_PANASONIC_CameraMode_ModePos 0x02000082
3265 #define PTP_DPC_PANASONIC_CameraMode_CreativeMode 0x02000083
3266 #define PTP_DPC_PANASONIC_CameraMode_iAMode 0x02000084
3267 #define PTP_DPC_PANASONIC_ImageFormat 0x020000A2
3268 #define PTP_DPC_PANASONIC_MeteringInfo 0x020000B0
3269 #define PTP_DPC_PANASONIC_IntervalInfo 0x020000C0
3270 #define PTP_DPC_PANASONIC_RecDispConfig 0x020000E0
3271 #define PTP_DPC_PANASONIC_RecInfoFlash 0x02000110
3272 #define PTP_DPC_PANASONIC_BurstBracket 0x02000140
3273 #define PTP_DPC_PANASONIC_RecPreviewConfig 0x02000170
3274 #define PTP_DPC_PANASONIC_RecInfoSelfTimer 0x020001A0
3275 #define PTP_DPC_PANASONIC_RecInfoFlash2 0x020001B0
3276 #define PTP_DPC_PANASONIC_RecCtrlRelease 0x03000010
3277
3278 #define PTP_DPC_PANASONIC_RecCtrlAFAE 0x03000020 /* cmd base for afae */
3279 #define PTP_DPC_PANASONIC_RecCtrlAFAE_LockAE 0x03000021
3280 #define PTP_DPC_PANASONIC_RecCtrlAFAE_LockAF 0x03000022
3281 #define PTP_DPC_PANASONIC_RecCtrlAFAE_LockAFAE 0x03000023
3282 #define PTP_DPC_PANASONIC_RecCtrlAFAE_AF_OneShot 0x03000024
3283 #define PTP_DPC_PANASONIC_RecCtrlAFAE_Lock_Clear 0x03000025
3284
3285 #define PTP_DPC_PANASONIC_Zoom 0x03000080
3286 #define PTP_DPC_PANASONIC_RecCtrlLens 0x03010010
3287 #define PTP_DPC_PANASONIC_MovConfig 0x06000010 /* uses 9408 */
3288 #define PTP_DPC_PANASONIC_MovConfig_C_Movie_Mode 0x06000011 /* uses 9409 */
3289 #define PTP_DPC_PANASONIC_MovConfig_HDMI_Mode 0x06000012 /* uses 9409 */
3290 #define PTP_DPC_PANASONIC_MovConfig_Quality_Mode 0x06000013 /* uses 9409 */
3291 #define PTP_DPC_PANASONIC_MovConfig_Rec_Mode 0x06000014 /* uses 9409 */
3292 #define PTP_DPC_PANASONIC_08000010 0x08000010
3293 /* various modes of the camera, HDMI, GetDateTimeWorldTime Mode/Area, SetupCfgInfo, SetupConfig_DateTime, GetSystemFreq Mode, GetSetupConfig Info */
3294 /*
3295 0000 54 00 00 00 02 00 0a 94-04 00 00 00 11 00 00 08 T...............
3296 0010 0a 00 00 00 e2 07 07 00-10 00 11 00 09 00 12 00 ................
3297 0020 00 08 02 00 00 00 00 00-13 00 00 08 02 00 00 00 ................
3298 0030 00 00 14 00 00 08 04 00-00 00 00 00 00 00 15 00 ................
3299 0040 00 08 04 00 00 00 00 00-00 00 16 00 00 08 02 00 ................
3300 0050 00 00 01 00 - ....
3301
3302 0000 d0 00 00 00 02 00 07 91-04 00 00 00 10 00 00 08 ................
3303 0010 14 00 00 00 14 00 00 00-01 00 01 00 00 00 00 00 ................
3304 0020 06 00 00 00 38 03 00 00-11 00 00 08 14 00 00 00 ....8...........
3305 0030 14 00 00 00 01 00 01 00-00 00 00 00 05 00 00 00 ................
3306 0040 c8 00 00 00 12 00 00 08-14 00 00 00 14 00 00 00 ................
3307 0050 01 00 01 00 00 00 00 00-01 00 00 00 36 00 00 00 ............6...
3308 0060 13 00 00 08 14 00 00 00-14 00 00 00 01 00 01 00 ................
3309 0070 00 00 00 00 01 00 00 00-2a 00 00 00 14 00 00 08 ........*.......
3310 0080 14 00 00 00 14 00 00 00-01 00 01 00 00 00 00 00 ................
3311 0090 02 00 00 00 9e 00 00 00-15 00 00 08 14 00 00 00 ................
3312 00a0 14 00 00 00 01 00 01 00-00 00 00 00 02 00 00 00 ................
3313 00b0 9e 00 00 00 16 00 00 08-14 00 00 00 14 00 00 00 ................
3314 00c0 01 00 01 00 00 00 00 00-01 00 00 00 2c 00 00 00 ............,...
3315 */
3316 #define PTP_DPC_PANASONIC_08000091 0x08000091 /* SetupFilesConfig_Set_Target */
3317 /*
3318 0000 16 00 00 00 02 00 0a 94-04 00 00 00 91 00 00 08 ................
3319 0010 02 00 00 00 00 00 - ......
3320
3321 0000 44 00 00 00 02 00 07 91-04 00 00 00 90 00 00 08 D...............
3322 0010 14 00 00 00 14 00 00 00-01 00 01 00 00 00 00 00 ................
3323 0020 01 00 00 00 48 00 00 00-91 00 00 08 14 00 00 00 ....H...........
3324 0030 14 00 00 00 01 00 01 00-00 00 00 00 01 00 00 00 ................
3325 0040 2c 00 00 00 - ,...
3326 */
3327
3328 #define PTP_DPC_PANASONIC_GetFreeSpaceInImages 0x12000010
3329 /*
3330 11 00 00 12
3331 04 00 00 00
3332 4e 00 00 00
3333
3334 12 00 00 12
3335 04 00 00 00
3336 00 00 00 00
3337
3338 13 00 00 12
3339 02 00 00 00
3340 00 00
3341
3342 14 00 00 12
3343 04 00 00 00
3344 00 00 00 00
3345
3346 15 00 00 12
3347 06 00 00 00
3348 02 00 01 00 00 00
3349
3350 16 00 00 12
3351 3a 00 00 00
3352 02 00 4e 00 00 00 00 00 00 00 4e 00 00 00 ff ff
3353 ff ff 00 00 00 00 ff ff ff ff 00 00 00 00 00 00
3354 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff
3355 ff ff 00 00 00 00 00 00 00 00
3356
3357 17 00 00 12
3358 06 00 00 00
3359 00 00 00 00 00 00
3360 */
3361 #define PTP_DPC_PANASONIC_GetBatteryInfo 0x16000010
3362 /*
3363 0000 1c 00 00 00 02 00 14 94-04 00 00 00 11 00 00 16 ................
3364 0010 08 00 00 00 4b 00 00 00-4b 00 ff ff ....K...K...
3365 */
3366 #define PTP_DPC_PANASONIC_LensGetMFBar 0x12010040
3367 /* 15c00010 GetSetupInfo Error */
3368 /* 18000010 GetUSBSpeed */
3369
3370 /* Leica */
3371 #define PTP_DPC_LEICA_ExternalShooting 0xD018
3372 /* d040 */
3373 /* d60c */
3374 /* d60e */
3375 /* d610 */
3376
3377
3378 /* MTP specific Object Properties */
3379 #define PTP_OPC_StorageID 0xDC01
3380 #define PTP_OPC_ObjectFormat 0xDC02
3381 #define PTP_OPC_ProtectionStatus 0xDC03
3382 #define PTP_OPC_ObjectSize 0xDC04
3383 #define PTP_OPC_AssociationType 0xDC05
3384 #define PTP_OPC_AssociationDesc 0xDC06
3385 #define PTP_OPC_ObjectFileName 0xDC07
3386 #define PTP_OPC_DateCreated 0xDC08
3387 #define PTP_OPC_DateModified 0xDC09
3388 #define PTP_OPC_Keywords 0xDC0A
3389 #define PTP_OPC_ParentObject 0xDC0B
3390 #define PTP_OPC_AllowedFolderContents 0xDC0C
3391 #define PTP_OPC_Hidden 0xDC0D
3392 #define PTP_OPC_SystemObject 0xDC0E
3393 #define PTP_OPC_PersistantUniqueObjectIdentifier 0xDC41
3394 #define PTP_OPC_SyncID 0xDC42
3395 #define PTP_OPC_PropertyBag 0xDC43
3396 #define PTP_OPC_Name 0xDC44
3397 #define PTP_OPC_CreatedBy 0xDC45
3398 #define PTP_OPC_Artist 0xDC46
3399 #define PTP_OPC_DateAuthored 0xDC47
3400 #define PTP_OPC_Description 0xDC48
3401 #define PTP_OPC_URLReference 0xDC49
3402 #define PTP_OPC_LanguageLocale 0xDC4A
3403 #define PTP_OPC_CopyrightInformation 0xDC4B
3404 #define PTP_OPC_Source 0xDC4C
3405 #define PTP_OPC_OriginLocation 0xDC4D
3406 #define PTP_OPC_DateAdded 0xDC4E
3407 #define PTP_OPC_NonConsumable 0xDC4F
3408 #define PTP_OPC_CorruptOrUnplayable 0xDC50
3409 #define PTP_OPC_ProducerSerialNumber 0xDC51
3410 #define PTP_OPC_RepresentativeSampleFormat 0xDC81
3411 #define PTP_OPC_RepresentativeSampleSize 0xDC82
3412 #define PTP_OPC_RepresentativeSampleHeight 0xDC83
3413 #define PTP_OPC_RepresentativeSampleWidth 0xDC84
3414 #define PTP_OPC_RepresentativeSampleDuration 0xDC85
3415 #define PTP_OPC_RepresentativeSampleData 0xDC86
3416 #define PTP_OPC_Width 0xDC87
3417 #define PTP_OPC_Height 0xDC88
3418 #define PTP_OPC_Duration 0xDC89
3419 #define PTP_OPC_Rating 0xDC8A
3420 #define PTP_OPC_Track 0xDC8B
3421 #define PTP_OPC_Genre 0xDC8C
3422 #define PTP_OPC_Credits 0xDC8D
3423 #define PTP_OPC_Lyrics 0xDC8E
3424 #define PTP_OPC_SubscriptionContentID 0xDC8F
3425 #define PTP_OPC_ProducedBy 0xDC90
3426 #define PTP_OPC_UseCount 0xDC91
3427 #define PTP_OPC_SkipCount 0xDC92
3428 #define PTP_OPC_LastAccessed 0xDC93
3429 #define PTP_OPC_ParentalRating 0xDC94
3430 #define PTP_OPC_MetaGenre 0xDC95
3431 #define PTP_OPC_Composer 0xDC96
3432 #define PTP_OPC_EffectiveRating 0xDC97
3433 #define PTP_OPC_Subtitle 0xDC98
3434 #define PTP_OPC_OriginalReleaseDate 0xDC99
3435 #define PTP_OPC_AlbumName 0xDC9A
3436 #define PTP_OPC_AlbumArtist 0xDC9B
3437 #define PTP_OPC_Mood 0xDC9C
3438 #define PTP_OPC_DRMStatus 0xDC9D
3439 #define PTP_OPC_SubDescription 0xDC9E
3440 #define PTP_OPC_IsCropped 0xDCD1
3441 #define PTP_OPC_IsColorCorrected 0xDCD2
3442 #define PTP_OPC_ImageBitDepth 0xDCD3
3443 #define PTP_OPC_Fnumber 0xDCD4
3444 #define PTP_OPC_ExposureTime 0xDCD5
3445 #define PTP_OPC_ExposureIndex 0xDCD6
3446 #define PTP_OPC_DisplayName 0xDCE0
3447 #define PTP_OPC_BodyText 0xDCE1
3448 #define PTP_OPC_Subject 0xDCE2
3449 #define PTP_OPC_Priority 0xDCE3
3450 #define PTP_OPC_GivenName 0xDD00
3451 #define PTP_OPC_MiddleNames 0xDD01
3452 #define PTP_OPC_FamilyName 0xDD02
3453 #define PTP_OPC_Prefix 0xDD03
3454 #define PTP_OPC_Suffix 0xDD04
3455 #define PTP_OPC_PhoneticGivenName 0xDD05
3456 #define PTP_OPC_PhoneticFamilyName 0xDD06
3457 #define PTP_OPC_EmailPrimary 0xDD07
3458 #define PTP_OPC_EmailPersonal1 0xDD08
3459 #define PTP_OPC_EmailPersonal2 0xDD09
3460 #define PTP_OPC_EmailBusiness1 0xDD0A
3461 #define PTP_OPC_EmailBusiness2 0xDD0B
3462 #define PTP_OPC_EmailOthers 0xDD0C
3463 #define PTP_OPC_PhoneNumberPrimary 0xDD0D
3464 #define PTP_OPC_PhoneNumberPersonal 0xDD0E
3465 #define PTP_OPC_PhoneNumberPersonal2 0xDD0F
3466 #define PTP_OPC_PhoneNumberBusiness 0xDD10
3467 #define PTP_OPC_PhoneNumberBusiness2 0xDD11
3468 #define PTP_OPC_PhoneNumberMobile 0xDD12
3469 #define PTP_OPC_PhoneNumberMobile2 0xDD13
3470 #define PTP_OPC_FaxNumberPrimary 0xDD14
3471 #define PTP_OPC_FaxNumberPersonal 0xDD15
3472 #define PTP_OPC_FaxNumberBusiness 0xDD16
3473 #define PTP_OPC_PagerNumber 0xDD17
3474 #define PTP_OPC_PhoneNumberOthers 0xDD18
3475 #define PTP_OPC_PrimaryWebAddress 0xDD19
3476 #define PTP_OPC_PersonalWebAddress 0xDD1A
3477 #define PTP_OPC_BusinessWebAddress 0xDD1B
3478 #define PTP_OPC_InstantMessengerAddress 0xDD1C
3479 #define PTP_OPC_InstantMessengerAddress2 0xDD1D
3480 #define PTP_OPC_InstantMessengerAddress3 0xDD1E
3481 #define PTP_OPC_PostalAddressPersonalFull 0xDD1F
3482 #define PTP_OPC_PostalAddressPersonalFullLine1 0xDD20
3483 #define PTP_OPC_PostalAddressPersonalFullLine2 0xDD21
3484 #define PTP_OPC_PostalAddressPersonalFullCity 0xDD22
3485 #define PTP_OPC_PostalAddressPersonalFullRegion 0xDD23
3486 #define PTP_OPC_PostalAddressPersonalFullPostalCode 0xDD24
3487 #define PTP_OPC_PostalAddressPersonalFullCountry 0xDD25
3488 #define PTP_OPC_PostalAddressBusinessFull 0xDD26
3489 #define PTP_OPC_PostalAddressBusinessLine1 0xDD27
3490 #define PTP_OPC_PostalAddressBusinessLine2 0xDD28
3491 #define PTP_OPC_PostalAddressBusinessCity 0xDD29
3492 #define PTP_OPC_PostalAddressBusinessRegion 0xDD2A
3493 #define PTP_OPC_PostalAddressBusinessPostalCode 0xDD2B
3494 #define PTP_OPC_PostalAddressBusinessCountry 0xDD2C
3495 #define PTP_OPC_PostalAddressOtherFull 0xDD2D
3496 #define PTP_OPC_PostalAddressOtherLine1 0xDD2E
3497 #define PTP_OPC_PostalAddressOtherLine2 0xDD2F
3498 #define PTP_OPC_PostalAddressOtherCity 0xDD30
3499 #define PTP_OPC_PostalAddressOtherRegion 0xDD31
3500 #define PTP_OPC_PostalAddressOtherPostalCode 0xDD32
3501 #define PTP_OPC_PostalAddressOtherCountry 0xDD33
3502 #define PTP_OPC_OrganizationName 0xDD34
3503 #define PTP_OPC_PhoneticOrganizationName 0xDD35
3504 #define PTP_OPC_Role 0xDD36
3505 #define PTP_OPC_Birthdate 0xDD37
3506 #define PTP_OPC_MessageTo 0xDD40
3507 #define PTP_OPC_MessageCC 0xDD41
3508 #define PTP_OPC_MessageBCC 0xDD42
3509 #define PTP_OPC_MessageRead 0xDD43
3510 #define PTP_OPC_MessageReceivedTime 0xDD44
3511 #define PTP_OPC_MessageSender 0xDD45
3512 #define PTP_OPC_ActivityBeginTime 0xDD50
3513 #define PTP_OPC_ActivityEndTime 0xDD51
3514 #define PTP_OPC_ActivityLocation 0xDD52
3515 #define PTP_OPC_ActivityRequiredAttendees 0xDD54
3516 #define PTP_OPC_ActivityOptionalAttendees 0xDD55
3517 #define PTP_OPC_ActivityResources 0xDD56
3518 #define PTP_OPC_ActivityAccepted 0xDD57
3519 #define PTP_OPC_Owner 0xDD5D
3520 #define PTP_OPC_Editor 0xDD5E
3521 #define PTP_OPC_Webmaster 0xDD5F
3522 #define PTP_OPC_URLSource 0xDD60
3523 #define PTP_OPC_URLDestination 0xDD61
3524 #define PTP_OPC_TimeBookmark 0xDD62
3525 #define PTP_OPC_ObjectBookmark 0xDD63
3526 #define PTP_OPC_ByteBookmark 0xDD64
3527 #define PTP_OPC_LastBuildDate 0xDD70
3528 #define PTP_OPC_TimetoLive 0xDD71
3529 #define PTP_OPC_MediaGUID 0xDD72
3530 #define PTP_OPC_TotalBitRate 0xDE91
3531 #define PTP_OPC_BitRateType 0xDE92
3532 #define PTP_OPC_SampleRate 0xDE93
3533 #define PTP_OPC_NumberOfChannels 0xDE94
3534 #define PTP_OPC_AudioBitDepth 0xDE95
3535 #define PTP_OPC_ScanDepth 0xDE97
3536 #define PTP_OPC_AudioWAVECodec 0xDE99
3537 #define PTP_OPC_AudioBitRate 0xDE9A
3538 #define PTP_OPC_VideoFourCCCodec 0xDE9B
3539 #define PTP_OPC_VideoBitRate 0xDE9C
3540 #define PTP_OPC_FramesPerThousandSeconds 0xDE9D
3541 #define PTP_OPC_KeyFrameDistance 0xDE9E
3542 #define PTP_OPC_BufferSize 0xDE9F
3543 #define PTP_OPC_EncodingQuality 0xDEA0
3544 #define PTP_OPC_EncodingProfile 0xDEA1
3545 #define PTP_OPC_BuyFlag 0xD901
3546
3547 /* WiFi Provisioning MTP Extension property codes */
3548 #define PTP_OPC_WirelessConfigurationFile 0xB104
3549
3550 /* Device Property Form Flag */
3551
3552 #define PTP_DPFF_None 0x00
3553 #define PTP_DPFF_Range 0x01
3554 #define PTP_DPFF_Enumeration 0x02
3555
3556 /* Object Property Codes used by MTP (first 3 are same as DPFF codes) */
3557 #define PTP_OPFF_None 0x00
3558 #define PTP_OPFF_Range 0x01
3559 #define PTP_OPFF_Enumeration 0x02
3560 #define PTP_OPFF_DateTime 0x03
3561 #define PTP_OPFF_FixedLengthArray 0x04
3562 #define PTP_OPFF_RegularExpression 0x05
3563 #define PTP_OPFF_ByteArray 0x06
3564 #define PTP_OPFF_LongString 0xFF
3565
3566 /* Device Property GetSet type */
3567 #define PTP_DPGS_Get 0x00
3568 #define PTP_DPGS_GetSet 0x01
3569
3570 /* Glue stuff starts here */
3571
3572 typedef struct _PTPParams PTPParams;
3573
3574
3575 typedef uint16_t (* PTPDataGetFunc) (PTPParams* params, void*priv,
3576 unsigned long wantlen,
3577 unsigned char *data, unsigned long *gotlen);
3578
3579 typedef uint16_t (* PTPDataPutFunc) (PTPParams* params, void*priv,
3580 unsigned long sendlen,
3581 unsigned char *data);
3582 typedef struct _PTPDataHandler {
3583 PTPDataGetFunc getfunc;
3584 PTPDataPutFunc putfunc;
3585 void *priv;
3586 } PTPDataHandler;
3587
3588 /*
3589 * This functions take PTP oriented arguments and send them over an
3590 * appropriate data layer doing byteorder conversion accordingly.
3591 */
3592 typedef uint16_t (* PTPIOSendReq) (PTPParams* params, PTPContainer* req, int dataphase);
3593 typedef uint16_t (* PTPIOSendData) (PTPParams* params, PTPContainer* ptp,
3594 uint64_t size, PTPDataHandler*getter);
3595
3596 typedef uint16_t (* PTPIOGetResp) (PTPParams* params, PTPContainer* resp);
3597 typedef uint16_t (* PTPIOGetData) (PTPParams* params, PTPContainer* ptp,
3598 PTPDataHandler *putter);
3599 typedef uint16_t (* PTPIOCancelReq) (PTPParams* params, uint32_t transaction_id);
3600 typedef uint16_t (* PTPIODevStatReq) (PTPParams* params);
3601
3602 /* debug functions */
3603 typedef void (* PTPErrorFunc) (void *data, const char *format, va_list args)
3604 #if (__GNUC__ >= 3)
3605 __attribute__((__format__(printf,2,0)))
3606 #endif
3607 ;
3608 typedef void (* PTPDebugFunc) (void *data, const char *format, va_list args)
3609 #if (__GNUC__ >= 3)
3610 __attribute__((__format__(printf,2,0)))
3611 #endif
3612 ;
3613
3614 struct _PTPObject {
3615 uint32_t oid;
3616 unsigned int flags;
3617 #define PTPOBJECT_OBJECTINFO_LOADED (1<<0)
3618 #define PTPOBJECT_CANONFLAGS_LOADED (1<<1)
3619 #define PTPOBJECT_MTPPROPLIST_LOADED (1<<2)
3620 #define PTPOBJECT_DIRECTORY_LOADED (1<<3)
3621 #define PTPOBJECT_PARENTOBJECT_LOADED (1<<4)
3622 #define PTPOBJECT_STORAGEID_LOADED (1<<5)
3623
3624 PTPObjectInfo oi;
3625 uint32_t canon_flags;
3626 MTPProperties *mtpprops;
3627 unsigned int nrofmtpprops;
3628 };
3629 typedef struct _PTPObject PTPObject;
3630
3631 /* The Device Property Cache */
3632 struct _PTPDeviceProperty {
3633 time_t timestamp;
3634 PTPDevicePropDesc desc;
3635 PTPPropertyValue value;
3636 };
3637 typedef struct _PTPDeviceProperty PTPDeviceProperty;
3638
3639 struct _MTPPropertyDesc {
3640 uint16_t opc;
3641 PTPObjectPropDesc opd;
3642 };
3643 typedef struct _MTPPropertyDesc MTPPropertyDesc;
3644
3645 struct _MTPObjectFormat {
3646 uint16_t ofc;
3647 unsigned int nrofpds;
3648 MTPPropertyDesc *pds;
3649 };
3650 typedef struct _MTPObjectFormat MTPObjectFormat;
3651
3652 struct _PanasonicLiveViewSize {
3653 uint16_t width;
3654 uint16_t height;
3655 uint16_t x;
3656 uint16_t freq;
3657 };
3658 typedef struct _PanasonicLiveViewSize PanasonicLiveViewSize;
3659
3660 /* Transaction data phase description, internal flags to sendreq / transaction driver. */
3661 #define PTP_DP_NODATA 0x0000 /* no data phase */
3662 #define PTP_DP_SENDDATA 0x0001 /* sending data */
3663 #define PTP_DP_GETDATA 0x0002 /* receiving data */
3664 #define PTP_DP_DATA_MASK 0x00ff /* data phase mask */
3665
3666 struct _PTPParams {
3667 /* device flags */
3668 uint32_t device_flags;
3669
3670 /* data layer byteorder */
3671 uint8_t byteorder;
3672 uint16_t maxpacketsize;
3673
3674 /* PTP IO: Custom IO functions */
3675 PTPIOSendReq sendreq_func;
3676 PTPIOSendData senddata_func;
3677 PTPIOGetResp getresp_func;
3678 PTPIOGetData getdata_func;
3679 PTPIOGetResp event_check;
3680 PTPIOGetResp event_check_queue;
3681 PTPIOGetResp event_wait;
3682 PTPIOCancelReq cancelreq_func;
3683 PTPIODevStatReq devstatreq_func;
3684
3685 /* Custom error and debug function */
3686 PTPErrorFunc error_func;
3687 PTPDebugFunc debug_func;
3688
3689 /* Data passed to above functions */
3690 void *data;
3691
3692 /* ptp transaction ID */
3693 uint32_t transaction_id;
3694 /* ptp session ID */
3695 uint32_t session_id;
3696
3697 /* used for open capture */
3698 uint32_t opencapture_transid;
3699
3700 /* PTP IO: if we have MTP style split header/data transfers */
3701 int split_header_data;
3702 int ocs64; /* 64bit objectsize */
3703
3704 int nrofobjectformats;
3705 MTPObjectFormat *objectformats;
3706
3707 /* PTP: internal structures used by ptp driver */
3708 PTPObject *objects;
3709 unsigned int nrofobjects;
3710
3711 PTPDeviceInfo deviceinfo;
3712
3713 /* PTP: the current event queue */
3714 PTPContainer *events;
3715 unsigned int nrofevents;
3716
3717 /* Capture count for SDRAM capture style images */
3718 unsigned int capcnt;
3719
3720 /* live view enabled */
3721 int inliveview;
3722
3723 /* PTP: caching time for properties, default 2 */
3724 int cachetime;
3725
3726 /* PTP: Storage Caching */
3727 PTPStorageIDs storageids;
3728 int storagechanged;
3729
3730 /* PTP: Device Property Caching */
3731 PTPDeviceProperty *deviceproperties;
3732 unsigned int nrofdeviceproperties;
3733
3734 /* PTP: Canon specific flags list */
3735 PTPCanon_Property *canon_props;
3736 unsigned int nrofcanon_props;
3737 int canon_viewfinder_on;
3738 int canon_event_mode;
3739
3740 /* PTP: Canon EOS event queue */
3741 PTPCanon_changes_entry *backlogentries;
3742 unsigned int nrofbacklogentries;
3743 int eos_captureenabled;
3744 int eos_camerastatus;
3745
3746 /* PTP: Nikon specifics */
3747 int controlmode;
3748 int event90c7works;
3749 int deletesdramfails;
3750
3751 /* PTP: Sony specific */
3752 struct timeval starttime;
3753
3754 /* PTP: Wifi profiles */
3755 uint8_t wifi_profiles_version;
3756 uint8_t wifi_profiles_number;
3757 PTPNIKONWifiProfile *wifi_profiles;
3758
3759 /* IO: PTP/IP related data */
3760 int cmdfd, evtfd, jpgfd;
3761 uint8_t cameraguid[16];
3762 uint32_t eventpipeid;
3763 char *cameraname;
3764
3765 /* Olympus UMS wrapping related data */
3766 PTPDeviceInfo outer_deviceinfo;
3767 char *olympus_cmd;
3768 char *olympus_reply;
3769 struct _PTPParams *outer_params;
3770
3771 #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H)
3772 /* PTP: iconv converters */
3773 iconv_t cd_locale_to_ucs2;
3774 iconv_t cd_ucs2_to_locale;
3775 #endif
3776
3777 /* IO: Sometimes the response packet get send in the dataphase
3778 * too. This only happens for a Samsung player now.
3779 */
3780 uint8_t *response_packet;
3781 uint16_t response_packet_size;
3782 };
3783
3784 /* Asynchronous event callback */
3785 typedef void (*PTPEventCbFn)(PTPParams *params, uint16_t code, PTPContainer *event, void *user_data);
3786
3787 /* last, but not least - ptp functions */
3788 uint16_t ptp_usb_sendreq (PTPParams* params, PTPContainer* req, int dataphase);
3789 uint16_t ptp_usb_senddata (PTPParams* params, PTPContainer* ptp,
3790 uint64_t size, PTPDataHandler *handler);
3791 uint16_t ptp_usb_getresp (PTPParams* params, PTPContainer* resp);
3792 uint16_t ptp_usb_getdata (PTPParams* params, PTPContainer* ptp,
3793 PTPDataHandler *handler);
3794 uint16_t ptp_usb_event_async (PTPParams *params, PTPEventCbFn cb, void *user_data);
3795 uint16_t ptp_usb_event_wait (PTPParams* params, PTPContainer* event);
3796 uint16_t ptp_usb_event_check (PTPParams* params, PTPContainer* event);
3797 uint16_t ptp_usb_event_check_queue (PTPParams* params, PTPContainer* event);
3798
3799 uint16_t ptp_usb_control_get_extended_event_data (PTPParams *params, char *buffer, int *size);
3800 uint16_t ptp_usb_control_device_reset_request (PTPParams *params);
3801 uint16_t ptp_usb_control_get_device_status (PTPParams *params, char *buffer, int *size);
3802 uint16_t ptp_usb_control_cancel_request (PTPParams *params, uint32_t transid);
3803 uint16_t ptp_usb_control_device_status_request (PTPParams *params);
3804
3805
3806 int ptp_ptpip_connect (PTPParams* params, const char *port);
3807 uint16_t ptp_ptpip_sendreq (PTPParams* params, PTPContainer* req, int dataphase);
3808 uint16_t ptp_ptpip_senddata (PTPParams* params, PTPContainer* ptp,
3809 uint64_t size, PTPDataHandler *handler);
3810 uint16_t ptp_ptpip_getresp (PTPParams* params, PTPContainer* resp);
3811 uint16_t ptp_ptpip_getdata (PTPParams* params, PTPContainer* ptp,
3812 PTPDataHandler *handler);
3813 uint16_t ptp_ptpip_event_wait (PTPParams* params, PTPContainer* event);
3814 uint16_t ptp_ptpip_event_check (PTPParams* params, PTPContainer* event);
3815 uint16_t ptp_ptpip_event_check_queue (PTPParams* params, PTPContainer* event);
3816
3817 int ptp_fujiptpip_connect (PTPParams* params, const char *port);
3818 int ptp_fujiptpip_init_event (PTPParams* params, const char *address);
3819 uint16_t ptp_fujiptpip_sendreq (PTPParams* params, PTPContainer* req, int dataphase);
3820 uint16_t ptp_fujiptpip_senddata (PTPParams* params, PTPContainer* ptp,
3821 uint64_t size, PTPDataHandler *handler);
3822 uint16_t ptp_fujiptpip_getresp (PTPParams* params, PTPContainer* resp);
3823 uint16_t ptp_fujiptpip_getdata (PTPParams* params, PTPContainer* ptp,
3824 PTPDataHandler *handler);
3825 uint16_t ptp_fujiptpip_event_wait (PTPParams* params, PTPContainer* event);
3826 uint16_t ptp_fujiptpip_event_check (PTPParams* params, PTPContainer* event);
3827 uint16_t ptp_fujiptpip_event_check_queue(PTPParams* params, PTPContainer* event);
3828
3829 uint16_t ptp_fujiptpip_jpeg (PTPParams* params, unsigned char** xdata, unsigned int *xsize);
3830
3831 uint16_t ptp_getdeviceinfo (PTPParams* params, PTPDeviceInfo* deviceinfo);
3832
3833 uint16_t ptp_generic_no_data (PTPParams* params, uint16_t opcode, unsigned int cnt, ...);
3834
3835 uint16_t ptp_opensession (PTPParams *params, uint32_t session);
3836
3837 uint16_t ptp_transaction_new (PTPParams* params, PTPContainer* ptp,
3838 uint16_t flags, uint64_t sendlen,
3839 PTPDataHandler *handler
3840 );
3841 uint16_t ptp_transaction (PTPParams* params, PTPContainer* ptp,
3842 uint16_t flags, uint64_t sendlen,
3843 unsigned char **data, unsigned int *recvlen
3844 );
3845
3846 /**
3847 * ptp_closesession:
3848 * params: PTPParams*
3849 *
3850 * Closes session.
3851 *
3852 * Return values: Some PTP_RC_* code.
3853 **/
3854 #define ptp_closesession(params) ptp_generic_no_data(params,PTP_OC_CloseSession,0)
3855
3856 /**
3857 * ptp_powerdown:
3858 * params: PTPParams*
3859 *
3860 * Powers down device.
3861 *
3862 * Return values: Some PTP_RC_* code.
3863 **/
3864 #define ptp_powerdown(params) ptp_generic_no_data(params,PTP_OC_PowerDown,0)
3865 /**
3866 * ptp_resetdevice:
3867 * params: PTPParams*
3868 *
3869 * Uses the built-in function to reset the device
3870 *
3871 * Return values: Some PTP_RC_* code.
3872 *
3873 */
3874 #define ptp_resetdevice(params) ptp_generic_no_data(params,PTP_OC_ResetDevice,0)
3875
3876 uint16_t ptp_getstorageids (PTPParams* params, PTPStorageIDs* storageids);
3877 uint16_t ptp_getstorageinfo (PTPParams* params, uint32_t storageid,
3878 PTPStorageInfo* storageinfo);
3879 /**
3880 * ptp_formatstore:
3881 * params: PTPParams*
3882 * storageid - StorageID
3883 *
3884 * Formats the storage on the device.
3885 *
3886 * Return values: Some PTP_RC_* code.
3887 **/
3888 #define ptp_formatstore(params,storageid) ptp_generic_no_data(params,PTP_OC_FormatStore,1,storageid)
3889
3890 uint16_t ptp_getobjecthandles (PTPParams* params, uint32_t storage,
3891 uint32_t objectformatcode,
3892 uint32_t associationOH,
3893 PTPObjectHandles* objecthandles);
3894
3895
3896 uint16_t ptp_getnumobjects (PTPParams* params, uint32_t storage,
3897 uint32_t objectformatcode,
3898 uint32_t associationOH,
3899 uint32_t* numobs);
3900
3901 uint16_t ptp_getobjectinfo (PTPParams *params, uint32_t handle,
3902 PTPObjectInfo* objectinfo);
3903
3904 uint16_t ptp_getobject (PTPParams *params, uint32_t handle,
3905 unsigned char** object);
3906 uint16_t ptp_getobject_with_size (PTPParams *params, uint32_t handle,
3907 unsigned char** object, unsigned int *size);
3908 uint16_t ptp_getobject_tofd (PTPParams* params, uint32_t handle, int fd);
3909 uint16_t ptp_getobject_to_handler (PTPParams* params, uint32_t handle, PTPDataHandler*);
3910 uint16_t ptp_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset,
3911 uint32_t maxbytes, unsigned char** object,
3912 uint32_t *len);
3913 uint16_t ptp_getpartialobject_to_handler (PTPParams* params, uint32_t handle, uint32_t offset,
3914 uint32_t maxbytes, PTPDataHandler *handler);
3915
3916 uint16_t ptp_getthumb (PTPParams *params, uint32_t handle,
3917 unsigned char** object, unsigned int *len);
3918
3919 uint16_t ptp_deleteobject (PTPParams* params, uint32_t handle,
3920 uint32_t ofc);
3921
3922 uint16_t ptp_moveobject (PTPParams* params, uint32_t handle,
3923 uint32_t storage, uint32_t parent);
3924
3925 uint16_t ptp_copyobject (PTPParams* params, uint32_t handle,
3926 uint32_t storage, uint32_t parent);
3927
3928 uint16_t ptp_sendobjectinfo (PTPParams* params, uint32_t* store,
3929 uint32_t* parenthandle, uint32_t* handle,
3930 PTPObjectInfo* objectinfo);
3931 /**
3932 * ptp_setobjectprotection:
3933 * params: PTPParams*
3934 * uint16_t newprot - object protection flag
3935 *
3936 * Set protection of object.
3937 *
3938 * Return values: Some PTP_RC_* code.
3939 *
3940 */
3941 #define ptp_setobjectprotection(params,oid,newprot) ptp_generic_no_data(params,PTP_OC_SetObjectProtection,2,oid,newprot)
3942 uint16_t ptp_sendobject (PTPParams* params, unsigned char* object,
3943 uint64_t size);
3944 uint16_t ptp_sendobject_fromfd (PTPParams* params, int fd, uint64_t size);
3945 uint16_t ptp_sendobject_from_handler (PTPParams* params, PTPDataHandler*, uint64_t size);
3946 /**
3947 * ptp_initiatecapture:
3948 * params: PTPParams*
3949 * storageid - destination StorageID on Responder
3950 * ofc - object format code
3951 *
3952 * Causes device to initiate the capture of one or more new data objects
3953 * according to its current device properties, storing the data into store
3954 * indicated by storageid. If storageid is 0x00000000, the object(s) will
3955 * be stored in a store that is determined by the capturing device.
3956 * The capturing of new data objects is an asynchronous operation.
3957 *
3958 * Return values: Some PTP_RC_* code.
3959 **/
3960 #define ptp_initiatecapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateCapture,2,storageid,ofc)
3961
3962 #define ptp_initiateopencapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateOpenCapture,2,storageid,ofc)
3963 #define ptp_terminateopencapture(params,transid) ptp_generic_no_data(params,PTP_OC_TerminateOpenCapture,1,transid)
3964
3965 uint16_t ptp_getdevicepropdesc (PTPParams* params, uint16_t propcode,
3966 PTPDevicePropDesc *devicepropertydesc);
3967 uint16_t ptp_generic_getdevicepropdesc (PTPParams *params, uint16_t propcode,
3968 PTPDevicePropDesc *dpd);
3969 uint16_t ptp_getdevicepropvalue (PTPParams* params, uint16_t propcode,
3970 PTPPropertyValue* value, uint16_t datatype);
3971 uint16_t ptp_setdevicepropvalue (PTPParams* params, uint16_t propcode,
3972 PTPPropertyValue* value, uint16_t datatype);
3973 uint16_t ptp_generic_setdevicepropvalue (PTPParams* params, uint16_t propcode,
3974 PTPPropertyValue* value, uint16_t datatype);
3975 uint16_t ptp_getfilesystemmanifest (PTPParams* params, uint32_t storage,
3976 uint32_t objectformatcode, uint32_t associationOH,
3977 uint64_t *numoifs, PTPObjectFilesystemInfo **oifs);
3978 uint16_t ptp_getstreaminfo (PTPParams *params, uint32_t streamid, PTPStreamInfo *si);
3979 uint16_t ptp_getstream (PTPParams* params, unsigned char **data, unsigned int *size);
3980
3981
3982 uint16_t ptp_check_event (PTPParams *params);
3983 uint16_t ptp_check_event_queue (PTPParams *params);
3984 uint16_t ptp_wait_event (PTPParams *params);
3985 uint16_t ptp_add_event (PTPParams *params, PTPContainer *evt);
3986 int ptp_have_event(PTPParams *params, uint16_t code);
3987 int ptp_get_one_event (PTPParams *params, PTPContainer *evt);
3988 int ptp_get_one_event_by_type(PTPParams *params, uint16_t code, PTPContainer *event);
3989 uint16_t ptp_check_eos_events (PTPParams *params);
3990 int ptp_get_one_eos_event (PTPParams *params, PTPCanon_changes_entry *entry);
3991
3992
3993 /* Microsoft MTP extensions */
3994 uint16_t ptp_mtp_getobjectpropdesc (PTPParams* params, uint16_t opc, uint16_t ofc,
3995 PTPObjectPropDesc *objectpropertydesc);
3996 uint16_t ptp_mtp_getobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc,
3997 PTPPropertyValue *value, uint16_t datatype);
3998 uint16_t ptp_mtp_setobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc,
3999 PTPPropertyValue *value, uint16_t datatype);
4000 uint16_t ptp_mtp_getobjectreferences (PTPParams* params, uint32_t handle, uint32_t** ohArray, uint32_t* arraylen);
4001 uint16_t ptp_mtp_setobjectreferences (PTPParams* params, uint32_t handle, uint32_t* ohArray, uint32_t arraylen);
4002 uint16_t ptp_mtp_getobjectproplist_generic (PTPParams* params, uint32_t handle, uint32_t formats, uint32_t properties, uint32_t propertygroups, uint32_t level, MTPProperties **props, int *nrofprops);
4003 uint16_t ptp_mtp_getobjectproplist_level (PTPParams* params, uint32_t handle, uint32_t level, MTPProperties **props, int *nrofprops);
4004 uint16_t ptp_mtp_getobjectproplist (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops);
4005 uint16_t ptp_mtp_getobjectproplist_single (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops);
4006 uint16_t ptp_mtp_sendobjectproplist (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle,
4007 uint16_t objecttype, uint64_t objectsize, MTPProperties *props, int nrofprops);
4008 uint16_t ptp_mtp_setobjectproplist (PTPParams* params, MTPProperties *props, int nrofprops);
4009
4010 /* Microsoft MTPZ (Zune) extensions */
4011 uint16_t ptp_mtpz_sendwmdrmpdapprequest (PTPParams*, unsigned char *, uint32_t);
4012 #define ptp_mtpz_resethandshake(params) ptp_generic_no_data(params, PTP_OC_MTP_WMDRMPD_EndTrustedAppSession, 0)
4013 uint16_t ptp_mtpz_getwmdrmpdappresponse (PTPParams*, unsigned char **, uint32_t*);
4014 #define ptp_mtpz_wmdrmpd_enabletrustedfilesoperations(params,hash1,hash2,hash3,hash4) \
4015 ptp_generic_no_data(params, PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations, 4,\
4016 hash1, hash2, hash3, hash4)
4017
4018 /* Eastman Kodak extensions */
4019 uint16_t ptp_ek_9007 (PTPParams* params, unsigned char **serial, unsigned int *size);
4020 uint16_t ptp_ek_9009 (PTPParams* params, uint32_t*, uint32_t*);
4021 uint16_t ptp_ek_900c (PTPParams* params, unsigned char **serial, unsigned int *size);
4022 uint16_t ptp_ek_getserial (PTPParams* params, unsigned char **serial, unsigned int *size);
4023 uint16_t ptp_ek_setserial (PTPParams* params, unsigned char *serial, unsigned int size);
4024 uint16_t ptp_ek_settext (PTPParams* params, PTPEKTextParams *text);
4025 uint16_t ptp_ek_sendfileobjectinfo (PTPParams* params, uint32_t* store,
4026 uint32_t* parenthandle, uint32_t* handle,
4027 PTPObjectInfo* objectinfo);
4028 uint16_t ptp_ek_sendfileobject (PTPParams* params, unsigned char* object,
4029 uint32_t size);
4030 uint16_t ptp_ek_sendfileobject_from_handler (PTPParams* params, PTPDataHandler*,
4031 uint32_t size);
4032
4033 /* Canon PTP extensions */
4034 #define ptp_canon_9012(params) ptp_generic_no_data(params,0x9012,0)
4035 uint16_t ptp_canon_gettreeinfo (PTPParams* params, uint32_t* out);
4036 uint16_t ptp_canon_gettreesize (PTPParams* params, PTPCanon_directtransfer_entry**, unsigned int*cnt);
4037 uint16_t ptp_canon_getpartialobjectinfo (PTPParams* params, uint32_t handle,
4038 uint32_t p2, uint32_t* size, uint32_t* rp2);
4039
4040 uint16_t ptp_canon_get_mac_address (PTPParams* params, unsigned char **mac);
4041 /**
4042 * ptp_canon_startshootingmode:
4043 * params: PTPParams*
4044 *
4045 * Starts shooting session. It emits a StorageInfoChanged
4046 * event via the interrupt pipe and pushes the StorageInfoChanged
4047 * and CANON_CameraModeChange events onto the event stack
4048 * (see operation PTP_OC_CANON_CheckEvent).
4049 *
4050 * Return values: Some PTP_RC_* code.
4051 *
4052 **/
4053 #define ptp_canon_startshootingmode(params) ptp_generic_no_data(params,PTP_OC_CANON_InitiateReleaseControl,0)
4054 /**
4055 * ptp_canon_endshootingmode:
4056 * params: PTPParams*
4057 *
4058 * This operation is observed after pressing the Disconnect
4059 * button on the Remote Capture app. It emits a StorageInfoChanged
4060 * event via the interrupt pipe and pushes the StorageInfoChanged
4061 * and CANON_CameraModeChange events onto the event stack
4062 * (see operation PTP_OC_CANON_CheckEvent).
4063 *
4064 * Return values: Some PTP_RC_* code.
4065 *
4066 **/
4067 #define ptp_canon_endshootingmode(params) ptp_generic_no_data(params,PTP_OC_CANON_TerminateReleaseControl,0)
4068 /**
4069 * ptp_canon_viewfinderon:
4070 * params: PTPParams*
4071 *
4072 * Prior to start reading viewfinder images, one must call this operation.
4073 * Supposedly, this operation affects the value of the CANON_ViewfinderMode
4074 * property.
4075 *
4076 * Return values: Some PTP_RC_* code.
4077 *
4078 **/
4079 #define ptp_canon_viewfinderon(params) ptp_generic_no_data(params,PTP_OC_CANON_ViewfinderOn,0)
4080 /**
4081 * ptp_canon_viewfinderoff:
4082 * params: PTPParams*
4083 *
4084 * Before changing the shooting mode, or when one doesn't need to read
4085 * viewfinder images any more, one must call this operation.
4086 * Supposedly, this operation affects the value of the CANON_ViewfinderMode
4087 * property.
4088 *
4089 * Return values: Some PTP_RC_* code.
4090 *
4091 **/
4092 #define ptp_canon_viewfinderoff(params) ptp_generic_no_data(params,PTP_OC_CANON_ViewfinderOff,0)
4093 /**
4094 * ptp_canon_reset_aeafawb:
4095 * params: PTPParams*
4096 * uint32_t flags - what shall be reset.
4097 * 1 - autoexposure
4098 * 2 - autofocus
4099 * 4 - autowhitebalance
4100 *
4101 * Called "Reset AeAfAwb" (auto exposure, focus, white balance)
4102 *
4103 * Return values: Some PTP_RC_* code.
4104 **/
4105 #define PTP_CANON_RESET_AE 0x1
4106 #define PTP_CANON_RESET_AF 0x2
4107 #define PTP_CANON_RESET_AWB 0x4
4108 #define ptp_canon_reset_aeafawb(params,flags) ptp_generic_no_data(params,PTP_OC_CANON_DoAeAfAwb,1,flags)
4109 uint16_t ptp_canon_checkevent (PTPParams* params,
4110 PTPContainer* event, int* isevent);
4111 /**
4112 * ptp_canon_focuslock:
4113 *
4114 * This operation locks the focus. It is followed by the CANON_GetChanges(?)
4115 * operation in the log.
4116 * It affects the CANON_MacroMode property.
4117 *
4118 * params: PTPParams*
4119 *
4120 * Return values: Some PTP_RC_* code.
4121 *
4122 **/
4123 #define ptp_canon_focuslock(params) ptp_generic_no_data(params,PTP_OC_CANON_FocusLock,0)
4124 /**
4125 * ptp_canon_focusunlock:
4126 *
4127 * This operation unlocks the focus. It is followed by the CANON_GetChanges(?)
4128 * operation in the log.
4129 * It sets the CANON_MacroMode property value to 1 (where it occurs in the log).
4130 *
4131 * params: PTPParams*
4132 *
4133 * Return values: Some PTP_RC_* code.
4134 *
4135 **/
4136 #define ptp_canon_focusunlock(params) ptp_generic_no_data(params,PTP_OC_CANON_FocusUnlock,0)
4137 /**
4138 * ptp_canon_keepdeviceon:
4139 *
4140 * This operation sends a "ping" style message to the camera.
4141 *
4142 * params: PTPParams*
4143 *
4144 * Return values: Some PTP_RC_* code.
4145 *
4146 **/
4147 #define ptp_canon_keepdeviceon(params) ptp_generic_no_data(params,PTP_OC_CANON_KeepDeviceOn,0)
4148 /**
4149 * ptp_canon_eos_keepdeviceon:
4150 *
4151 * This operation sends a "ping" style message to the camera.
4152 *
4153 * params: PTPParams*
4154 *
4155 * Return values: Some PTP_RC_* code.
4156 *
4157 **/
4158 #define ptp_canon_eos_keepdeviceon(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_KeepDeviceOn,0)
4159
4160 /**
4161 * ptp_canon_eos_popupflash:
4162 *
4163 * This operation pops up the builtin flash of the Canon EOS.
4164 *
4165 * params: PTPParams*
4166 *
4167 * Return values: Some PTP_RC_* code.
4168 *
4169 **/
4170 #define ptp_canon_eos_popupflash(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_PopupBuiltinFlash,0)
4171 /**
4172 * ptp_canon_initiatecaptureinmemory:
4173 *
4174 * This operation starts the image capture according to the current camera
4175 * settings. When the capture has happened, the camera emits a CaptureComplete
4176 * event via the interrupt pipe and pushes the CANON_RequestObjectTransfer,
4177 * CANON_DeviceInfoChanged and CaptureComplete events onto the event stack
4178 * (see operation CANON_CheckEvent). From the CANON_RequestObjectTransfer
4179 * event's parameter one can learn the just captured image's ObjectHandle.
4180 * The image is stored in the camera's own RAM.
4181 * On the next capture the image will be overwritten!
4182 *
4183 * params: PTPParams*
4184 *
4185 * Return values: Some PTP_RC_* code.
4186 *
4187 **/
4188 #define ptp_canon_initiatecaptureinmemory(params) ptp_generic_no_data(params,PTP_OC_CANON_InitiateCaptureInMemory,0)
4189 /**
4190 * ptp_canon_eos_requestdevicepropvalue:
4191 *
4192 * This operation sends a "ping" style message to the camera.
4193 *
4194 * params: PTPParams*
4195 *
4196 * Return values: Some PTP_RC_* code.
4197 *
4198 **/
4199 #define CANON_EOS_OLC_BUTTON 0x0001
4200 #define CANON_EOS_OLC_SHUTTERSPEED 0x0002
4201 #define CANON_EOS_OLC_APERTURE 0x0004
4202 #define CANON_EOS_OLC_ISO 0x0008
4203
4204 #define ptp_canon_eos_setrequestolcinfogroup(params,igmask) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRequestOLCInfoGroup,1,igmask)
4205 #define ptp_canon_eos_requestdevicepropvalue(params,prop) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RequestDevicePropValue,1,prop)
4206 #define ptp_canon_eos_setrequestrollingpitchinglevel(params,onoff) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRequestRollingPitchingLevel,1,onoff)
4207 uint16_t ptp_canon_eos_getremotemode (PTPParams*, uint32_t *);
4208 uint16_t ptp_canon_eos_capture (PTPParams* params, uint32_t *result);
4209 uint16_t ptp_canon_eos_getevent (PTPParams* params, PTPCanon_changes_entry **entries, int *nrofentries);
4210 uint16_t ptp_canon_getpartialobject (PTPParams* params, uint32_t handle,
4211 uint32_t offset, uint32_t size,
4212 uint32_t pos, unsigned char** block,
4213 uint32_t* readnum);
4214 uint16_t ptp_canon_getviewfinderimage (PTPParams* params, unsigned char** image,
4215 uint32_t* size);
4216 uint16_t ptp_canon_getchanges (PTPParams* params, uint16_t** props,
4217 uint32_t* propnum);
4218 uint16_t ptp_canon_getobjectinfo (PTPParams* params, uint32_t store,
4219 uint32_t p2, uint32_t parenthandle,
4220 uint32_t handle,
4221 PTPCANONFolderEntry** entries,
4222 uint32_t* entnum);
4223 uint16_t ptp_canon_eos_getdeviceinfo (PTPParams* params, PTPCanonEOSDeviceInfo*di);
4224 /**
4225 * ptp_canon_eos_setuilock:
4226 *
4227 * This command sets UI lock
4228 *
4229 * params: PTPParams*
4230 *
4231 * Return values: Some PTP_RC_* code.
4232 *
4233 **/
4234 #define ptp_canon_eos_setuilock(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetUILock,0)
4235 /**
4236 * ptp_canon_eos_resetuilock:
4237 *
4238 * This command sets UI lock
4239 *
4240 * params: PTPParams*
4241 *
4242 * Return values: Some PTP_RC_* code.
4243 *
4244 **/
4245 #define ptp_canon_eos_resetuilock(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_ResetUILock,0)
4246 /**
4247 * ptp_canon_eos_start_viewfinder:
4248 *
4249 * This command starts Viewfinder mode of newer Canon DSLRs.
4250 *
4251 * params: PTPParams*
4252 *
4253 * Return values: Some PTP_RC_* code.
4254 *
4255 **/
4256 #define ptp_canon_eos_start_viewfinder(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_InitiateViewfinder,0)
4257 /**
4258 * ptp_canon_eos_end_viewfinder:
4259 *
4260 * This command ends Viewfinder mode of newer Canon DSLRs.
4261 *
4262 * params: PTPParams*
4263 *
4264 * Return values: Some PTP_RC_* code.
4265 *
4266 **/
4267 #define ptp_canon_eos_end_viewfinder(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_TerminateViewfinder,0)
4268 uint16_t ptp_canon_eos_get_viewfinder_image (PTPParams* params, unsigned char **data, unsigned int *size);
4269 uint16_t ptp_canon_eos_get_viewfinder_image_handler (PTPParams* params, PTPDataHandler*);
4270 uint16_t ptp_canon_get_objecthandle_by_name (PTPParams* params, char* name, uint32_t* objectid);
4271 uint16_t ptp_canon_get_directory (PTPParams* params, PTPObjectHandles *handles, PTPObjectInfo **oinfos, uint32_t **flags);
4272 /**
4273 * ptp_canon_setobjectarchive:
4274 *
4275 * params: PTPParams*
4276 * uint32_t objectid
4277 * uint32_t flags
4278 *
4279 * Return values: Some PTP_RC_* code.
4280 *
4281 **/
4282 #define ptp_canon_setobjectarchive(params,oid,flags) ptp_generic_no_data(params,PTP_OC_CANON_SetObjectArchive,2,oid,flags)
4283 #define ptp_canon_eos_setobjectattributes(params,oid,flags) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetObjectAttributes,2,oid,flags)
4284 uint16_t ptp_canon_get_customize_data (PTPParams* params, uint32_t themenr,
4285 unsigned char **data, unsigned int *size);
4286 uint16_t ptp_canon_getpairinginfo (PTPParams* params, uint32_t nr, unsigned char**, unsigned int*);
4287
4288 uint16_t ptp_canon_eos_getstorageids (PTPParams* params, PTPStorageIDs* storageids);
4289 uint16_t ptp_canon_eos_getstorageinfo (PTPParams* params, uint32_t p1, unsigned char**, unsigned int*);
4290 uint16_t ptp_canon_eos_getpartialobject (PTPParams* params, uint32_t oid, uint32_t off, uint32_t xsize, unsigned char**data);
4291 uint16_t ptp_canon_eos_getpartialobjectex (PTPParams* params, uint32_t oid, uint32_t off, uint32_t xsize, unsigned char**data);
4292 uint16_t ptp_canon_eos_getobjectinfoex (PTPParams* params, uint32_t storageid, uint32_t objectid, uint32_t unk,
4293 PTPCANONFolderEntry **entries, unsigned int *nrofentries);
4294 uint16_t ptp_canon_eos_setdevicepropvalueex (PTPParams* params, unsigned char* data, unsigned int size);
4295 #define ptp_canon_eos_setremotemode(params,p1) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRemoteMode,1,p1)
4296 #define ptp_canon_eos_seteventmode(params,p1) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetEventMode,1,p1)
4297 /**
4298 * ptp_canon_eos_transfercomplete:
4299 *
4300 * This ends a direct object transfer from an EOS camera.
4301 *
4302 * params: PTPParams*
4303 * oid Object ID
4304 *
4305 * Return values: Some PTP_RC_* code.
4306 *
4307 */
4308 #define ptp_canon_eos_transfercomplete(params,oid) ptp_generic_no_data(params,PTP_OC_CANON_EOS_TransferComplete,1,oid)
4309 /* inHDD = %d, inLength =%d, inReset = %d */
4310 #define ptp_canon_eos_pchddcapacity(params,p1,p2,p3) ptp_generic_no_data(params,PTP_OC_CANON_EOS_PCHDDCapacity,3,p1,p2,p3)
4311 uint16_t ptp_canon_eos_bulbstart (PTPParams* params);
4312 uint16_t ptp_canon_eos_bulbend (PTPParams* params);
4313 uint16_t ptp_canon_eos_905f (PTPParams* params, uint32_t);
4314 uint16_t ptp_canon_eos_getdevicepropdesc (PTPParams* params, uint16_t propcode,
4315 PTPDevicePropDesc *devicepropertydesc);
4316 uint16_t ptp_canon_eos_setdevicepropvalue (PTPParams* params, uint16_t propcode,
4317 PTPPropertyValue* value, uint16_t datatype);
4318 uint16_t ptp_nikon_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size);
4319 uint16_t ptp_nikon_curve_download (PTPParams* params,
4320 unsigned char **data, unsigned int *size);
4321 uint16_t ptp_nikon_getlargethumb (PTPParams *params, uint32_t handle,
4322 unsigned char** object, unsigned int *len);
4323 uint16_t ptp_nikon_getobjectsize (PTPParams* params, uint32_t handle, uint64_t *objectsize);
4324 uint16_t ptp_nikon_getpartialobjectex (PTPParams* params, uint32_t handle, uint64_t offset, uint64_t maxbytes, unsigned char** object, uint32_t *len);
4325 uint16_t ptp_nikon_getptpipinfo (PTPParams* params, unsigned char **data, unsigned int *size);
4326 uint16_t ptp_nikon_getwifiprofilelist (PTPParams* params);
4327 uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* profile);
4328
4329 uint16_t ptp_sony_sdioconnect (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3);
4330 uint16_t ptp_sony_qx_connect (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3);
4331 uint16_t ptp_sony_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size);
4332 uint16_t ptp_sony_qx_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size);
4333 uint16_t ptp_sony_getdevicepropdesc (PTPParams* params, uint16_t propcode,
4334 PTPDevicePropDesc *devicepropertydesc);
4335 uint16_t ptp_sony_getalldevicepropdesc (PTPParams* params);
4336 uint16_t ptp_sony_qx_getalldevicepropdesc (PTPParams* params);
4337 uint16_t ptp_sony_setdevicecontrolvaluea (PTPParams* params, uint16_t propcode,
4338 PTPPropertyValue* value, uint16_t datatype);
4339 uint16_t ptp_sony_qx_setdevicecontrolvaluea (PTPParams* params, uint16_t propcode,
4340 PTPPropertyValue* value, uint16_t datatype);
4341 uint16_t ptp_sony_setdevicecontrolvalueb (PTPParams* params, uint16_t propcode,
4342 PTPPropertyValue* value, uint16_t datatype);
4343 uint16_t ptp_sony_qx_setdevicecontrolvalueb (PTPParams* params, uint16_t propcode,
4344 PTPPropertyValue* value, uint16_t datatype);
4345 uint16_t ptp_sony_9280 (PTPParams* params, uint32_t additional, uint32_t data1, uint32_t data2, uint32_t data3, uint32_t data4, uint8_t x, uint8_t y);
4346 uint16_t ptp_sony_9281 (PTPParams* params, uint32_t param1);
4347 /**
4348 * ptp_nikon_deletewifiprofile:
4349 *
4350 * This command deletes a wifi profile.
4351 *
4352 * params: PTPParams*
4353 * unsigned int profilenr - profile number
4354 *
4355 * Return values: Some PTP_RC_* code.
4356 *
4357 **/
4358 #define ptp_nikon_deletewifiprofile(params,profilenr) ptp_generic_no_data(params,PTP_OC_NIKON_DeleteProfile,1,profilenr)
4359 /**
4360 * ptp_nikon_changecameramode:
4361 *
4362 * This command can switch the camera to full PC control mode.
4363 *
4364 * params: PTPParams*
4365 * uint32_t mode - mode
4366 *
4367 * Return values: Some PTP_RC_* code.
4368 *
4369 **/
4370 #define ptp_nikon_changecameramode(params,mode) ptp_generic_no_data(params,PTP_OC_NIKON_ChangeCameraMode,1,mode)
4371 /**
4372 * ptp_nikon_changeapplicationmeramode:
4373 *
4374 * This command can switch the camera between PC control and remote mode.
4375 *
4376 * params: PTPParams*
4377 * uint32_t mode - mode
4378 *
4379 * Return values: Some PTP_RC_* code.
4380 *
4381 **/
4382 #define ptp_nikon_changeapplicationmode(params,mode) ptp_generic_no_data(params,PTP_OC_NIKON_ChangeApplicationMode,1,mode)
4383 /**
4384 * ptp_nikon_terminatecapture:
4385 *
4386 * This command appears to terminate a longer capture
4387 *
4388 * params: PTPParams*
4389 * uint32_t a
4390 * uint32_t b
4391 *
4392 * Return values: Some PTP_RC_* code.
4393 *
4394 **/
4395 #define ptp_nikon_terminatecapture(params,p1,p2) ptp_generic_no_data(params,PTP_OC_NIKON_TerminateCapture,2,p1,p2)
4396 /**
4397 * ptp_nikon_afdrive:
4398 *
4399 * This command runs (drives) the lens autofocus.
4400 *
4401 * params: PTPParams*
4402 *
4403 * Return values: Some PTP_RC_* code.
4404 *
4405 **/
4406 #define ptp_nikon_afdrive(params) ptp_generic_no_data(params,PTP_OC_NIKON_AfDrive,0)
4407 /**
4408 * ptp_nikon_changeafarea:
4409 *
4410 * This command starts movie capture (to card)
4411 *
4412 * params: PTPParams*
4413 * x: x coordinate
4414 * y: y coordinate
4415 *
4416 * Return values: Some PTP_RC_* code.
4417 *
4418 **/
4419 #define ptp_nikon_changeafarea(params,x,y) ptp_generic_no_data(params,PTP_OC_NIKON_ChangeAfArea,2,x,y)
4420 /**
4421 * ptp_nikon_startmovie:
4422 *
4423 * This command starts movie capture (to card)
4424 *
4425 * params: PTPParams*
4426 *
4427 * Return values: Some PTP_RC_* code.
4428 *
4429 **/
4430 #define ptp_nikon_startmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_StartMovieRecInCard,0)
4431 /**
4432 * ptp_nikon_stopmovie:
4433 *
4434 * This command stops movie capture (to card)
4435 *
4436 * params: PTPParams*
4437 *
4438 * Return values: Some PTP_RC_* code.
4439 *
4440 **/
4441 #define ptp_nikon_stopmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndMovieRec,0)
4442 /**
4443 * ptp_canon_eos_afdrive:
4444 *
4445 * This command runs (drives) the lens autofocus.
4446 *
4447 * params: PTPParams*
4448 *
4449 * Return values: Some PTP_RC_* code.
4450 *
4451 **/
4452 #define ptp_canon_eos_afdrive(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_DoAf,0)
4453 /**
4454 * ptp_canon_eos_afcancel:
4455 *
4456 * This command cancels the lens autofocus.
4457 *
4458 * params: PTPParams*
4459 *
4460 * Return values: Some PTP_RC_* code.
4461 *
4462 **/
4463 #define ptp_canon_eos_afcancel(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_AfCancel,0)
4464 /**
4465 * ptp_canon_eos_zoom:
4466 *
4467 * This command runs (drives) the lens autofocus.
4468 *
4469 * params: PTPParams*
4470 * params: arg1 unknown
4471 *
4472 * Return values: Some PTP_RC_* code.
4473 *
4474 **/
4475 #define ptp_canon_eos_zoom(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_Zoom,1,x)
4476 #define ptp_canon_eos_zoomposition(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_ZoomPosition,2,x,y)
4477
4478 #define ptp_canon_eos_remotereleaseon(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOn,2,x,y)
4479 #define ptp_canon_eos_remotereleaseoff(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOff,1,x)
4480 /**
4481 * ptp_nikon_mfdrive:
4482 *
4483 * This command runs (drives) the lens focus manually.
4484 *
4485 * params: PTPParams*
4486 * flag: 0x1 for (no limit - closest), 0x2 for (closest - no limit)
4487 * amount: amount of steps
4488 *
4489 * Return values: Some PTP_RC_* code.
4490 *
4491 **/
4492 #define ptp_nikon_mfdrive(params,flag,amount) ptp_generic_no_data(params,PTP_OC_NIKON_MfDrive,2,flag,amount)
4493
4494 /**
4495 * ptp_canon_eos_drivelens:
4496 *
4497 * This command runs (drives) the lens focus manually.
4498 *
4499 * params: PTPParams*
4500 * amount: 0x1-0x3 for near range, 0x8001-0x8003 for far range.
4501 *
4502 * Return values: Some PTP_RC_* code.
4503 *
4504 **/
4505 #define ptp_canon_eos_drivelens(params,amount) ptp_generic_no_data(params,PTP_OC_CANON_EOS_DriveLens,1,amount)
4506 /**
4507 * ptp_nikon_capture:
4508 *
4509 * This command captures a picture on the Nikon.
4510 *
4511 * params: PTPParams*
4512 * uint32_t x: unknown parameter. seen to be -1.
4513 *
4514 * Return values: Some PTP_RC_* code.
4515 *
4516 **/
4517 #define ptp_nikon_capture(params,x) ptp_generic_no_data(params,PTP_OC_NIKON_InitiateCaptureRecInSdram,1,x)
4518
4519 /**
4520 * ptp_nikon_capture2:
4521 *
4522 * This command captures a picture on the Nikon.
4523 *
4524 * params: PTPParams*
4525 * af: autofocus before capture (1 yes , 0 no)
4526 * target: sdram 1, card 0
4527 *
4528 * Return values: Some PTP_RC_* code.
4529 * 2 params:
4530 * 0xffffffff == No AF before, 0xfffffffe == AF before capture
4531 * sdram=1, card=0
4532 */
4533 #define ptp_nikon_capture2(params,af,target) ptp_generic_no_data(params,PTP_OC_NIKON_InitiateCaptureRecInMedia,2,af?0xfffffffe:0xffffffff,target)
4534 /**
4535 * ptp_nikon_capture_sdram:
4536 *
4537 * This command captures a picture on the Nikon.
4538 *
4539 * params: PTPParams*
4540 *
4541 * Return values: Some PTP_RC_* code.
4542 *
4543 **/
4544 #define ptp_nikon_capture_sdram(params) ptp_generic_no_data(params,PTP_OC_NIKON_AfCaptureSDRAM,0)
4545 /**
4546 * ptp_nikon_delete_sdram_image:
4547 *
4548 * This command deletes the current SDRAM image
4549 *
4550 * params: PTPParams*
4551 * uint32_t oid
4552 *
4553 * Return values: Some PTP_RC_* code.
4554 *
4555 **/
4556 #define ptp_nikon_delete_sdram_image(params,oid) ptp_generic_no_data(params,PTP_OC_NIKON_DelImageSDRAM,1,oid)
4557 /**
4558 * ptp_nikon_start_liveview:
4559 *
4560 * This command starts LiveView mode of newer Nikons DSLRs.
4561 *
4562 * params: PTPParams*
4563 *
4564 * Return values: Some PTP_RC_* code.
4565 *
4566 **/
4567 #define ptp_nikon_start_liveview(params) ptp_generic_no_data(params,PTP_OC_NIKON_StartLiveView,0)
4568 uint16_t ptp_nikon_get_liveview_image (PTPParams* params, unsigned char**,unsigned int*);
4569 uint16_t ptp_nikon_get_preview_image (PTPParams* params, unsigned char**, unsigned int*, uint32_t*);
4570 /**
4571 * ptp_nikon_end_liveview:
4572 *
4573 * This command ends LiveView mode of newer Nikons DSLRs.
4574 *
4575 * params: PTPParams*
4576 *
4577 * Return values: Some PTP_RC_* code.
4578 *
4579 **/
4580 #define ptp_nikon_end_liveview(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndLiveView,0)
4581 uint16_t ptp_nikon_check_event (PTPParams* params, PTPContainer **evt, unsigned int *evtcnt);
4582 uint16_t ptp_nikon_check_eventex (PTPParams* params, PTPContainer **evt, unsigned int *evtcnt);
4583 uint16_t ptp_nikon_getfileinfoinblock (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3,
4584 unsigned char **data, unsigned int *size);
4585 /**
4586 * ptp_nikon_device_ready:
4587 *
4588 * This command checks if the device is ready. Used after
4589 * a capture.
4590 *
4591 * params: PTPParams*
4592 *
4593 * Return values: Some PTP_RC_* code.
4594 *
4595 **/
4596 #define ptp_nikon_device_ready(params) ptp_generic_no_data (params, PTP_OC_NIKON_DeviceReady, 0)
4597 uint16_t ptp_mtp_getobjectpropssupported (PTPParams* params, uint16_t ofc, uint32_t *propnum, uint16_t **props);
4598
4599
4600 /* Android MTP Extensions */
4601 uint16_t ptp_android_getpartialobject64 (PTPParams* params, uint32_t handle, uint64_t offset,
4602 uint32_t maxbytes, unsigned char** object,
4603 uint32_t *len);
4604 #define ptp_android_begineditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_BeginEditObject, 1, handle)
4605 #define ptp_android_truncate(params,handle,offset) ptp_generic_no_data (params, PTP_OC_ANDROID_TruncateObject, 3, handle, (offset & 0xFFFFFFFF), (offset >> 32))
4606 uint16_t ptp_android_sendpartialobject (PTPParams *params, uint32_t handle,
4607 uint64_t offset, unsigned char *object, uint32_t len);
4608 #define ptp_android_endeditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_EndEditObject, 1, handle)
4609
4610 uint16_t ptp_olympus_getdeviceinfo (PTPParams*, PTPDeviceInfo*);
4611 #define ptp_olympus_setcameracontrolmode(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_SetCameraControlMode, 1, p1)
4612 uint16_t ptp_olympus_opensession (PTPParams*, unsigned char**, unsigned int *);
4613 #define ptp_olympus_capture(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_Capture, 1, p1)
4614 uint16_t ptp_olympus_getcameraid (PTPParams*, unsigned char**, unsigned int *);
4615
4616 uint16_t ptp_olympus_omd_capture (PTPParams* params);
4617 uint16_t ptp_olympus_omd_move_focus (PTPParams* params, uint32_t direction, uint32_t step_size);
4618
4619 /* Non PTP protocol functions */
4620 static inline int
4621 ptp_operation_issupported(PTPParams* params, uint16_t operation)
4622 {
4623 unsigned int i=0;
4624
4625 for (;i<params->deviceinfo.OperationsSupported_len;i++) {
4626 if (params->deviceinfo.OperationsSupported[i]==operation)
4627 return 1;
4628 }
4629 return 0;
4630 }
4631
4632 int ptp_event_issupported (PTPParams* params, uint16_t event);
4633 int ptp_property_issupported (PTPParams* params, uint16_t property);
4634
4635 void ptp_free_params (PTPParams *params);
4636 void ptp_free_objectpropdesc (PTPObjectPropDesc*);
4637 void ptp_free_devicepropdesc (PTPDevicePropDesc*);
4638 void ptp_free_devicepropvalue (uint16_t, PTPPropertyValue*);
4639 void ptp_free_objectinfo (PTPObjectInfo *oi);
4640 void ptp_free_object (PTPObject *oi);
4641
4642 const char *ptp_strerror (uint16_t ret, uint16_t vendor);
4643 void ptp_debug (PTPParams *params, const char *format, ...);
4644 void ptp_error (PTPParams *params, const char *format, ...);
4645
4646
4647 const char* ptp_get_property_description(PTPParams* params, uint16_t dpc);
4648
4649 const char* ptp_get_opcode_name(PTPParams* params, uint16_t opcode);
4650 const char* ptp_get_event_code_name(PTPParams* params, uint16_t event_code);
4651
4652 int
4653 ptp_render_property_value(PTPParams* params, uint16_t dpc,
4654 PTPDevicePropDesc *dpd, unsigned int length, char *out);
4655 int ptp_render_ofc(PTPParams* params, uint16_t ofc, int spaceleft, char *txt);
4656 int ptp_render_mtp_propname(uint16_t propid, int spaceleft, char *txt);
4657 MTPProperties *ptp_get_new_object_prop_entry(MTPProperties **props, int *nrofprops);
4658 void ptp_destroy_object_prop(MTPProperties *prop);
4659 void ptp_destroy_object_prop_list(MTPProperties *props, int nrofprops);
4660 MTPProperties *ptp_find_object_prop_in_cache(PTPParams *params, uint32_t const handle, uint32_t const attribute_id);
4661 uint16_t ptp_remove_object_from_cache(PTPParams *params, uint32_t handle);
4662 uint16_t ptp_add_object_to_cache(PTPParams *params, uint32_t handle);
4663 uint16_t ptp_object_want (PTPParams *, uint32_t handle, unsigned int want, PTPObject**retob);
4664 void ptp_objects_sort (PTPParams *);
4665 uint16_t ptp_object_find (PTPParams *params, uint32_t handle, PTPObject **retob);
4666 uint16_t ptp_object_find_or_insert (PTPParams *params, uint32_t handle, PTPObject **retob);
4667 uint16_t ptp_list_folder (PTPParams *params, uint32_t storage, uint32_t handle);
4668 /* ptpip.c */
4669 void ptp_nikon_getptpipguid (unsigned char* guid);
4670
4671 /* CHDK specifics */
4672 #define PTP_OC_CHDK 0x9999
4673 typedef struct tagptp_chdk_videosettings {
4674 long live_image_buffer_width;
4675 long live_image_width;
4676 long live_image_height;
4677 long bitmap_buffer_width;
4678 long bitmap_width;
4679 long bitmap_height;
4680 unsigned palette[16];
4681 } ptp_chdk_videosettings;
4682
4683 /* Nafraf: Test this!!!*/
4684 #define ptp_chdk_switch_mode(params,mode) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_SwitchMode,mode)
4685
4686 /* include CHDK ptp protocol definitions from a CHDK source tree */
4687 #include "chdk_ptp.h"
4688 #if (PTP_CHDK_VERSION_MAJOR < 2 || (PTP_CHDK_VERSION_MAJOR == 2 && PTP_CHDK_VERSION_MINOR < 5))
4689 #error your chdk headers are too old, unset CHDK_SRC_DIR in config.mk
4690 #endif
4691 #include "chdk_live_view.h"
4692
4693 /* the following happens to match what is used in CHDK, but is not part of the protocol */
4694 typedef struct {
4695 unsigned size;
4696 unsigned script_id; /* id of script message is to/from */
4697 unsigned type;
4698 unsigned subtype;
4699 char data[];
4700 } ptp_chdk_script_msg;
4701
4702 /*
4703 chunk for remote capture
4704 */
4705 typedef struct {
4706 uint32_t size; /* length of data */
4707 int last; /* is it the last chunk? */
4708 uint32_t offset; /* offset within file, or -1 */
4709 unsigned char *data; /* data, must be free'd by caller when done */
4710 } ptp_chdk_rc_chunk;
4711
4712
4713 uint16_t ptp_chdk_get_memory(PTPParams* params, int start, int num, unsigned char **);
4714 uint16_t ptp_chdk_set_memory_long(PTPParams* params, int addr, int val);
4715 int ptp_chdk_upload(PTPParams* params, char *local_fn, char *remote_fn);
4716 uint16_t ptp_chdk_download(PTPParams* params, char *remote_fn, PTPDataHandler *handler);
4717
4718 /* remote capture */
4719 uint16_t ptp_chdk_rcisready(PTPParams* params, int *isready,int *imgnum);
4720 uint16_t ptp_chdk_rcgetchunk(PTPParams* params,int fmt, ptp_chdk_rc_chunk *chunk);
4721
4722 uint16_t ptp_chdk_exec_lua(PTPParams* params, char *script, int flags, int *script_id,int *status);
4723 uint16_t ptp_chdk_get_version(PTPParams* params, int *major, int *minor);
4724 uint16_t ptp_chdk_get_script_support(PTPParams* params, unsigned *status);
4725 uint16_t ptp_chdk_get_script_status(PTPParams* params, unsigned *status);
4726 uint16_t ptp_chdk_write_script_msg(PTPParams* params, char *data, unsigned size, int target_script_id, int *status);
4727 uint16_t ptp_chdk_read_script_msg(PTPParams* params, ptp_chdk_script_msg **msg);
4728 uint16_t ptp_chdk_get_live_data(PTPParams* params, unsigned flags, unsigned char **data, unsigned int *data_size);
4729 uint16_t ptp_chdk_parse_live_data (PTPParams* params, unsigned char *data, unsigned int data_size,
4730 lv_data_header *header, lv_framebuffer_desc *vpd, lv_framebuffer_desc *bmd);
4731 uint16_t ptp_chdk_call_function(PTPParams* params, int *args, int size, int *ret);
4732
4733 /*uint16_t ptp_chdk_get_script_output(PTPParams* params, char **output ); */
4734 /*uint16_t ptp_chdk_get_video_settings(PTPParams* params, ptp_chdk_videosettings* vsettings);*/
4735
4736 uint16_t ptp_fuji_getevents (PTPParams* params, uint16_t** events, uint16_t* count);
4737 uint16_t ptp_fuji_getdeviceinfo (PTPParams* params, uint16_t **props, unsigned int *numprops);
4738
4739 #define ptp_panasonic_liveview(params,enable) ptp_generic_no_data(params,PTP_OC_PANASONIC_Liveview,1,enable?0xD000010:0xD000011)
4740 uint16_t ptp_panasonic_liveview_image (PTPParams* params, unsigned char **data, unsigned int *size);
4741 #define ptp_panasonic_movierec(params,enable) ptp_generic_no_data(params,PTP_OC_PANASONIC_MovieRecControl,1,enable?0x07000011:0x07000012)
4742
4743 uint16_t ptp_panasonic_setdeviceproperty (PTPParams* params, uint32_t propcode, unsigned char *value, uint16_t valuesize);
4744 uint16_t ptp_panasonic_getdeviceproperty (PTPParams *params, uint32_t propcode, uint16_t *valuesize, uint32_t *currentValue);
4745 uint16_t ptp_panasonic_getdevicepropertydesc (PTPParams *params, uint32_t propcode, uint16_t valuesize, uint32_t *currentValue, uint32_t **propertyValueList, uint32_t *propertyValueListLength);
4746 uint16_t ptp_panasonic_getdevicepropertysize (PTPParams *params, uint32_t propcode);
4747 uint16_t ptp_panasonic_getcapturetarget (PTPParams *params, uint16_t *target);
4748 uint16_t ptp_panasonic_setcapturetarget (PTPParams *params, uint16_t target);
4749 uint16_t ptp_panasonic_manualfocusdrive (PTPParams* params, uint16_t mode);
4750 uint16_t ptp_panasonic_9401 (PTPParams* params, uint32_t x);
4751
4752 uint16_t ptp_panasonic_9414_0d800012 (PTPParams* params, PanasonicLiveViewSize **liveviewsizes, unsigned int *nrofliveviewsizes);
4753 uint16_t ptp_panasonic_9414_0d800011 (PTPParams* params, PanasonicLiveViewSize *liveviewsize);
4754 uint16_t ptp_panasonic_9415 (PTPParams* params, PanasonicLiveViewSize *liveviewsize);
4755
4756
4757 uint16_t ptp_olympus_liveview_image (PTPParams* params, unsigned char **data, unsigned int *size);
4758 #define ptp_olympus_omd_move_focus(params,direction,step_size) ptp_generic_no_data(params,PTP_OC_OLYMPUS_OMD_MFDrive,2,direction,step_size)
4759 uint16_t ptp_olympus_omd_capture (PTPParams* params);
4760 uint16_t ptp_olympus_omd_bulbstart (PTPParams* params);
4761 uint16_t ptp_olympus_omd_bulbend (PTPParams* params);
4762 uint16_t ptp_olympus_init_pc_mode (PTPParams* params);
4763 uint16_t ptp_olympus_sdram_image (PTPParams* params, unsigned char **data, unsigned int *size);
4764
4765
4766
4767 #define ptp_panasonic_capture(params) ptp_generic_no_data(params,PTP_OC_PANASONIC_InitiateCapture,1,0x3000011)
4768
4769 #define ptp_leica_leopensession(params,session) ptp_generic_no_data(params,PTP_OC_LEICA_LEOpenSession,1,session)
4770 #define ptp_leica_leclosesession(params) ptp_generic_no_data(params,PTP_OC_LEICA_LECloseSession,0)
4771 uint16_t ptp_leica_getstreamdata (PTPParams* params, unsigned char **data, unsigned int *size);
4772
4773 #ifdef __cplusplus
4774 }
4775 #endif /* __cplusplus */
4776
4777 #endif /* __PTP_H__ */