1 /* ptp.h 2 * 3 * Copyright (C) 2001 Mariusz Woloszyn <emsi (at) ipartners.pl> 4 * Copyright (C) 2003-2014 Marcus Meissner <marcus (at) jet.franken.de> 5 * Copyright (C) 2006-2008 Linus Walleij <triad (at) 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 #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) 29 #include <iconv.h> 30 #endif 31 #include "gphoto2-endian.h" 32 #include "device-flags.h" 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif /* __cplusplus */ 37 38 /* PTP datalayer byteorder */ 39 40 #define PTP_DL_BE 0xF0 41 #define PTP_DL_LE 0x0F 42 43 /* USB interface class */ 44 #ifndef USB_CLASS_PTP 45 #define USB_CLASS_PTP 6 46 #endif 47 48 /* PTP request/response/event general PTP container (transport independent) */ 49 50 struct _PTPContainer { 51 uint16_t Code; 52 uint32_t SessionID; 53 uint32_t Transaction_ID; 54 /* params may be of any type of size less or equal to uint32_t */ 55 uint32_t Param1; 56 uint32_t Param2; 57 uint32_t Param3; 58 /* events can only have three parameters */ 59 uint32_t Param4; 60 uint32_t Param5; 61 /* the number of meaningfull parameters */ 62 uint8_t Nparam; 63 }; 64 typedef struct _PTPContainer PTPContainer; 65 66 /* PTP USB Bulk-Pipe container */ 67 /* USB bulk max packet length for high speed endpoints */ 68 /* The max packet is set to 512 bytes. The spec says 69 * "end of data transfers are signaled by short packets or NULL 70 * packets". It never says anything about 512, but current 71 * implementations seem to have chosen this value, which also 72 * happens to be the size of an USB 2.0 HS endpoint, even though 73 * this is not necessary. 74 * 75 * Previously we had this as 4096 for MTP devices. We have found 76 * and fixed the bugs that made this necessary and it can be 512 again. 77 * 78 * USB 3.0 has now 1024 byte EPs. 79 */ 80 #define PTP_USB_BULK_HS_MAX_PACKET_LEN_WRITE 512 81 #define PTP_USB_BULK_HS_MAX_PACKET_LEN_READ 512 82 #define PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE 1024 83 #define PTP_USB_BULK_SS_MAX_PACKET_LEN_READ 1024 84 #define PTP_USB_BULK_HDR_LEN (2*sizeof(uint32_t)+2*sizeof(uint16_t)) 85 #define PTP_USB_BULK_PAYLOAD_LEN_WRITE (PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE-PTP_USB_BULK_HDR_LEN) 86 #define PTP_USB_BULK_PAYLOAD_LEN_READ (PTP_USB_BULK_SS_MAX_PACKET_LEN_READ-PTP_USB_BULK_HDR_LEN) 87 #define PTP_USB_BULK_REQ_LEN (PTP_USB_BULK_HDR_LEN+5*sizeof(uint32_t)) 88 89 struct _PTPUSBBulkContainer { 90 uint32_t length; 91 uint16_t type; 92 uint16_t code; 93 uint32_t trans_id; 94 union { 95 struct { 96 uint32_t param1; 97 uint32_t param2; 98 uint32_t param3; 99 uint32_t param4; 100 uint32_t param5; 101 } params; 102 /* this must be set to the maximum of PTP_USB_BULK_PAYLOAD_LEN_WRITE 103 * and PTP_USB_BULK_PAYLOAD_LEN_READ */ 104 unsigned char data[PTP_USB_BULK_PAYLOAD_LEN_READ]; 105 } payload; 106 }; 107 typedef struct _PTPUSBBulkContainer PTPUSBBulkContainer; 108 109 /* PTP USB Asynchronous Event Interrupt Data Format */ 110 struct _PTPUSBEventContainer { 111 uint32_t length; 112 uint16_t type; 113 uint16_t code; 114 uint32_t trans_id; 115 uint32_t param1; 116 uint32_t param2; 117 uint32_t param3; 118 }; 119 typedef struct _PTPUSBEventContainer PTPUSBEventContainer; 120 121 struct _PTPCanon_directtransfer_entry { 122 uint32_t oid; 123 char *str; 124 }; 125 typedef struct _PTPCanon_directtransfer_entry PTPCanon_directtransfer_entry; 126 127 /* USB container types */ 128 129 #define PTP_USB_CONTAINER_UNDEFINED 0x0000 130 #define PTP_USB_CONTAINER_COMMAND 0x0001 131 #define PTP_USB_CONTAINER_DATA 0x0002 132 #define PTP_USB_CONTAINER_RESPONSE 0x0003 133 #define PTP_USB_CONTAINER_EVENT 0x0004 134 135 /* PTP/IP definitions */ 136 #define PTPIP_INIT_COMMAND_REQUEST 1 137 #define PTPIP_INIT_COMMAND_ACK 2 138 #define PTPIP_INIT_EVENT_REQUEST 3 139 #define PTPIP_INIT_EVENT_ACK 4 140 #define PTPIP_INIT_FAIL 5 141 #define PTPIP_CMD_REQUEST 6 142 #define PTPIP_CMD_RESPONSE 7 143 #define PTPIP_EVENT 8 144 #define PTPIP_START_DATA_PACKET 9 145 #define PTPIP_DATA_PACKET 10 146 #define PTPIP_CANCEL_TRANSACTION 11 147 #define PTPIP_END_DATA_PACKET 12 148 #define PTPIP_PING 13 149 #define PTPIP_PONG 14 150 151 struct _PTPIPHeader { 152 uint32_t length; 153 uint32_t type; 154 }; 155 typedef struct _PTPIPHeader PTPIPHeader; 156 157 /* Vendor IDs */ 158 #define PTP_VENDOR_EASTMAN_KODAK 0x00000001 159 #define PTP_VENDOR_SEIKO_EPSON 0x00000002 160 #define PTP_VENDOR_AGILENT 0x00000003 161 #define PTP_VENDOR_POLAROID 0x00000004 162 #define PTP_VENDOR_AGFA_GEVAERT 0x00000005 163 #define PTP_VENDOR_MICROSOFT 0x00000006 164 #define PTP_VENDOR_EQUINOX 0x00000007 165 #define PTP_VENDOR_VIEWQUEST 0x00000008 166 #define PTP_VENDOR_STMICROELECTRONICS 0x00000009 167 #define PTP_VENDOR_NIKON 0x0000000A 168 #define PTP_VENDOR_CANON 0x0000000B 169 #define PTP_VENDOR_FOTONATION 0x0000000C 170 #define PTP_VENDOR_PENTAX 0x0000000D 171 #define PTP_VENDOR_FUJI 0x0000000E 172 /* not from standards papers, but from traces: */ 173 #define PTP_VENDOR_SONY 0x00000011 /* observed in the A900 */ 174 #define PTP_VENDOR_SAMSUNG 0x0000001a /* observed in the Samsung NX1000 */ 175 #define PTP_VENDOR_PARROT 0x0000001b /* observed in the Parrot Sequoia */ 176 /* Vendor extension ID used for MTP (occasionaly, usualy 6 is used) */ 177 #define PTP_VENDOR_MTP 0xffffffff 178 179 /* gphoto overrides */ 180 #define PTP_VENDOR_GP_OLYMPUS 0xfffffffe 181 182 /* Operation Codes */ 183 184 /* PTP v1.0 operation codes */ 185 #define PTP_OC_Undefined 0x1000 186 #define PTP_OC_GetDeviceInfo 0x1001 187 #define PTP_OC_OpenSession 0x1002 188 #define PTP_OC_CloseSession 0x1003 189 #define PTP_OC_GetStorageIDs 0x1004 190 #define PTP_OC_GetStorageInfo 0x1005 191 #define PTP_OC_GetNumObjects 0x1006 192 #define PTP_OC_GetObjectHandles 0x1007 193 #define PTP_OC_GetObjectInfo 0x1008 194 #define PTP_OC_GetObject 0x1009 195 #define PTP_OC_GetThumb 0x100A 196 #define PTP_OC_DeleteObject 0x100B 197 #define PTP_OC_SendObjectInfo 0x100C 198 #define PTP_OC_SendObject 0x100D 199 #define PTP_OC_InitiateCapture 0x100E 200 #define PTP_OC_FormatStore 0x100F 201 #define PTP_OC_ResetDevice 0x1010 202 #define PTP_OC_SelfTest 0x1011 203 #define PTP_OC_SetObjectProtection 0x1012 204 #define PTP_OC_PowerDown 0x1013 205 #define PTP_OC_GetDevicePropDesc 0x1014 206 #define PTP_OC_GetDevicePropValue 0x1015 207 #define PTP_OC_SetDevicePropValue 0x1016 208 #define PTP_OC_ResetDevicePropValue 0x1017 209 #define PTP_OC_TerminateOpenCapture 0x1018 210 #define PTP_OC_MoveObject 0x1019 211 #define PTP_OC_CopyObject 0x101A 212 #define PTP_OC_GetPartialObject 0x101B 213 #define PTP_OC_InitiateOpenCapture 0x101C 214 /* PTP v1.1 operation codes */ 215 #define PTP_OC_StartEnumHandles 0x101D 216 #define PTP_OC_EnumHandles 0x101E 217 #define PTP_OC_StopEnumHandles 0x101F 218 #define PTP_OC_GetVendorExtensionMaps 0x1020 219 #define PTP_OC_GetVendorDeviceInfo 0x1021 220 #define PTP_OC_GetResizedImageObject 0x1022 221 #define PTP_OC_GetFilesystemManifest 0x1023 222 #define PTP_OC_GetStreamInfo 0x1024 223 #define PTP_OC_GetStream 0x1025 224 225 /* Eastman Kodak extension Operation Codes */ 226 #define PTP_OC_EK_GetSerial 0x9003 227 #define PTP_OC_EK_SetSerial 0x9004 228 #define PTP_OC_EK_SendFileObjectInfo 0x9005 229 #define PTP_OC_EK_SendFileObject 0x9006 230 #define PTP_OC_EK_SetText 0x9008 231 232 /* Canon extension Operation Codes */ 233 #define PTP_OC_CANON_GetPartialObjectInfo 0x9001 234 /* 9002 - sends 2 uint32, nothing back */ 235 #define PTP_OC_CANON_SetObjectArchive 0x9002 236 #define PTP_OC_CANON_KeepDeviceOn 0x9003 237 #define PTP_OC_CANON_LockDeviceUI 0x9004 238 #define PTP_OC_CANON_UnlockDeviceUI 0x9005 239 #define PTP_OC_CANON_GetObjectHandleByName 0x9006 240 /* no 9007 observed yet */ 241 #define PTP_OC_CANON_InitiateReleaseControl 0x9008 242 #define PTP_OC_CANON_TerminateReleaseControl 0x9009 243 #define PTP_OC_CANON_TerminatePlaybackMode 0x900A 244 #define PTP_OC_CANON_ViewfinderOn 0x900B 245 #define PTP_OC_CANON_ViewfinderOff 0x900C 246 #define PTP_OC_CANON_DoAeAfAwb 0x900D 247 248 /* 900e - send nothing, gets 5 uint16t in 32bit entities back in 20byte datablob */ 249 #define PTP_OC_CANON_GetCustomizeSpec 0x900E 250 #define PTP_OC_CANON_GetCustomizeItemInfo 0x900F 251 #define PTP_OC_CANON_GetCustomizeData 0x9010 252 #define PTP_OC_CANON_SetCustomizeData 0x9011 253 #define PTP_OC_CANON_GetCaptureStatus 0x9012 254 #define PTP_OC_CANON_CheckEvent 0x9013 255 #define PTP_OC_CANON_FocusLock 0x9014 256 #define PTP_OC_CANON_FocusUnlock 0x9015 257 #define PTP_OC_CANON_GetLocalReleaseParam 0x9016 258 #define PTP_OC_CANON_SetLocalReleaseParam 0x9017 259 #define PTP_OC_CANON_AskAboutPcEvf 0x9018 260 #define PTP_OC_CANON_SendPartialObject 0x9019 261 #define PTP_OC_CANON_InitiateCaptureInMemory 0x901A 262 #define PTP_OC_CANON_GetPartialObjectEx 0x901B 263 #define PTP_OC_CANON_SetObjectTime 0x901C 264 #define PTP_OC_CANON_GetViewfinderImage 0x901D 265 #define PTP_OC_CANON_GetObjectAttributes 0x901E 266 #define PTP_OC_CANON_ChangeUSBProtocol 0x901F 267 #define PTP_OC_CANON_GetChanges 0x9020 268 #define PTP_OC_CANON_GetObjectInfoEx 0x9021 269 #define PTP_OC_CANON_InitiateDirectTransfer 0x9022 270 #define PTP_OC_CANON_TerminateDirectTransfer 0x9023 271 #define PTP_OC_CANON_SendObjectInfoByPath 0x9024 272 #define PTP_OC_CANON_SendObjectByPath 0x9025 273 #define PTP_OC_CANON_InitiateDirectTansferEx 0x9026 274 #define PTP_OC_CANON_GetAncillaryObjectHandles 0x9027 275 #define PTP_OC_CANON_GetTreeInfo 0x9028 276 #define PTP_OC_CANON_GetTreeSize 0x9029 277 #define PTP_OC_CANON_NotifyProgress 0x902A 278 #define PTP_OC_CANON_NotifyCancelAccepted 0x902B 279 /* 902c: no parms, read 3 uint32 in data, no response parms */ 280 #define PTP_OC_CANON_902C 0x902C 281 #define PTP_OC_CANON_GetDirectory 0x902D 282 #define PTP_OC_CANON_902E 0x902E 283 #define PTP_OC_CANON_902F 0x902F /* used during camera init */ 284 285 #define PTP_OC_CANON_SetPairingInfo 0x9030 286 #define PTP_OC_CANON_GetPairingInfo 0x9031 287 #define PTP_OC_CANON_DeletePairingInfo 0x9032 288 #define PTP_OC_CANON_GetMACAddress 0x9033 289 /* 9034: 1 param, no parms returned */ 290 #define PTP_OC_CANON_SetDisplayMonitor 0x9034 291 #define PTP_OC_CANON_PairingComplete 0x9035 292 #define PTP_OC_CANON_GetWirelessMAXChannel 0x9036 293 294 #define PTP_OC_CANON_GetWebServiceSpec 0x9068 295 #define PTP_OC_CANON_GetWebServiceData 0x9069 296 #define PTP_OC_CANON_SetWebServiceData 0x906B 297 #define PTP_OC_CANON_GetRootCertificateSpec 0x906C 298 #define PTP_OC_CANON_GetRootCertificateData 0x906D 299 #define PTP_OC_CANON_SetRootCertificateData 0x906F 300 301 /* 9101: no args, 8 byte data (01 00 00 00 00 00 00 00), no resp data. */ 302 #define PTP_OC_CANON_EOS_GetStorageIDs 0x9101 303 /* 9102: 1 arg (0) 304 * 0x28 bytes of data: 305 00000000: 34 00 00 00 02 00 02 91 0a 00 00 00 04 00 03 00 306 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 307 00000020: 00 00 ff ff ff ff 03 43 00 46 00 00 00 03 41 00 308 00000030: 3a 00 00 00 309 * no resp args 310 */ 311 #define PTP_OC_CANON_EOS_GetStorageInfo 0x9102 312 #define PTP_OC_CANON_EOS_GetObjectInfo 0x9103 313 #define PTP_OC_CANON_EOS_GetObject 0x9104 314 #define PTP_OC_CANON_EOS_DeleteObject 0x9105 315 #define PTP_OC_CANON_EOS_FormatStore 0x9106 316 #define PTP_OC_CANON_EOS_GetPartialObject 0x9107 317 #define PTP_OC_CANON_EOS_GetDeviceInfoEx 0x9108 318 319 /* sample1: 320 * 3 cmdargs: 1,0xffffffff,00 00 10 00; 321 * data: 322 00000000: 48 00 00 00 02 00 09 91 12 00 00 00 01 00 00 00 323 00000010: 38 00 00 00 00 00 00 30 01 00 00 00 01 30 00 00 324 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 20 325 00000030: 00 00 00 30 44 43 49 4d 00 00 00 00 00 00 00 00 DCIM 326 00000040: 00 00 00 00 cc c3 01 46 327 * 2 respargs: 0x0, 0x3c 328 * 329 * sample2: 330 * 331 00000000: 18 00 00 00 01 00 09 91 15 00 00 00 01 00 00 00 332 00000010: 00 00 00 30 00 00 10 00 333 334 00000000: 48 00 00 00 02 00 09 91 15 00 00 00 01 00 00 00 335 00000010: 38 00 00 00 00 00 9c 33 01 00 00 00 01 30 00 00 336 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 30 337 00000030: 00 00 9c 33 32 33 31 43 41 4e 4f 4e 00 00 00 00 231CANON 338 00000040: 00 00 00 00 cc c3 01 46 339 340 */ 341 #define PTP_OC_CANON_EOS_GetObjectInfoEx 0x9109 342 #define PTP_OC_CANON_EOS_GetThumbEx 0x910A 343 #define PTP_OC_CANON_EOS_SendPartialObject 0x910B 344 #define PTP_OC_CANON_EOS_SetObjectAttributes 0x910C 345 #define PTP_OC_CANON_EOS_GetObjectTime 0x910D 346 #define PTP_OC_CANON_EOS_SetObjectTime 0x910E 347 348 /* 910f: no args, no data, 1 response arg (0). */ 349 #define PTP_OC_CANON_EOS_RemoteRelease 0x910F 350 /* Marcus: looks more like "Set DeviceProperty" in the trace. 351 * 352 * no cmd args 353 * data phase (0xc, 0xd11c, 0x1) 354 * no resp args 355 */ 356 #define PTP_OC_CANON_EOS_SetDevicePropValueEx 0x9110 357 #define PTP_OC_CANON_EOS_GetRemoteMode 0x9113 358 /* 9114: 1 arg (0x1), no data, no resp data. */ 359 #define PTP_OC_CANON_EOS_SetRemoteMode 0x9114 360 /* 9115: 1 arg (0x1), no data, no resp data. */ 361 #define PTP_OC_CANON_EOS_SetEventMode 0x9115 362 /* 9116: no args, data phase, no resp data. */ 363 #define PTP_OC_CANON_EOS_GetEvent 0x9116 364 #define PTP_OC_CANON_EOS_TransferComplete 0x9117 365 #define PTP_OC_CANON_EOS_CancelTransfer 0x9118 366 #define PTP_OC_CANON_EOS_ResetTransfer 0x9119 367 368 /* 911a: 3 args (0xfffffff7, 0x00001000, 0x00000001), no data, no resp data. */ 369 /* 911a: 3 args (0x001dfc60, 0x00001000, 0x00000001), no data, no resp data. */ 370 #define PTP_OC_CANON_EOS_PCHDDCapacity 0x911A 371 372 /* 911b: no cmd args, no data, no resp args */ 373 #define PTP_OC_CANON_EOS_SetUILock 0x911B 374 /* 911c: no cmd args, no data, no resp args */ 375 #define PTP_OC_CANON_EOS_ResetUILock 0x911C 376 #define PTP_OC_CANON_EOS_KeepDeviceOn 0x911D 377 #define PTP_OC_CANON_EOS_SetNullPacketMode 0x911E 378 #define PTP_OC_CANON_EOS_UpdateFirmware 0x911F 379 #define PTP_OC_CANON_EOS_TransferCompleteDT 0x9120 380 #define PTP_OC_CANON_EOS_CancelTransferDT 0x9121 381 #define PTP_OC_CANON_EOS_SetWftProfile 0x9122 382 #define PTP_OC_CANON_EOS_GetWftProfile 0x9123 383 #define PTP_OC_CANON_EOS_SetProfileToWft 0x9124 384 #define PTP_OC_CANON_EOS_BulbStart 0x9125 385 #define PTP_OC_CANON_EOS_BulbEnd 0x9126 386 #define PTP_OC_CANON_EOS_RequestDevicePropValue 0x9127 387 388 /* 0x9128 args (0x1/0x2, 0x0), no data, no resp args */ 389 #define PTP_OC_CANON_EOS_RemoteReleaseOn 0x9128 390 /* 0x9129 args (0x1/0x2), no data, no resp args */ 391 #define PTP_OC_CANON_EOS_RemoteReleaseOff 0x9129 392 393 #define PTP_OC_CANON_EOS_RegistBackgroundImage 0x912A 394 #define PTP_OC_CANON_EOS_ChangePhotoStudioMode 0x912B 395 #define PTP_OC_CANON_EOS_GetPartialObjectEx 0x912C 396 #define PTP_OC_CANON_EOS_ResetMirrorLockupState 0x9130 397 #define PTP_OC_CANON_EOS_PopupBuiltinFlash 0x9131 398 #define PTP_OC_CANON_EOS_EndGetPartialObjectEx 0x9132 399 #define PTP_OC_CANON_EOS_MovieSelectSWOn 0x9133 400 #define PTP_OC_CANON_EOS_MovieSelectSWOff 0x9134 401 #define PTP_OC_CANON_EOS_GetCTGInfo 0x9135 402 #define PTP_OC_CANON_EOS_GetLensAdjust 0x9136 403 #define PTP_OC_CANON_EOS_SetLensAdjust 0x9137 404 #define PTP_OC_CANON_EOS_GetMusicInfo 0x9138 405 /* 3 paramaeters, no data, OFC, size, unknown */ 406 #define PTP_OC_CANON_EOS_CreateHandle 0x9139 407 #define PTP_OC_CANON_EOS_SendPartialObjectEx 0x913A 408 #define PTP_OC_CANON_EOS_EndSendPartialObjectEx 0x913B 409 #define PTP_OC_CANON_EOS_SetCTGInfo 0x913C 410 #define PTP_OC_CANON_EOS_SetRequestOLCInfoGroup 0x913D 411 #define PTP_OC_CANON_EOS_SetRequestRollingPitchingLevel 0x913E 412 /* 3 args, 0x21201020, 0x110, 0x1000000 (potentially reverse order) */ 413 #define PTP_OC_CANON_EOS_GetCameraSupport 0x913F 414 #define PTP_OC_CANON_EOS_SetRating 0x9140 /* 2 args */ 415 #define PTP_OC_CANON_EOS_RequestInnerDevelopStart 0x9141 /* 2 args: 1 type, 1 object? */ 416 #define PTP_OC_CANON_EOS_RequestInnerDevelopParamChange 0x9142 417 #define PTP_OC_CANON_EOS_RequestInnerDevelopEnd 0x9143 418 #define PTP_OC_CANON_EOS_GpsLoggingDataMode 0x9144 /* 1 arg */ 419 #define PTP_OC_CANON_EOS_GetGpsLogCurrentHandle 0x9145 420 421 #define PTP_OC_CANON_EOS_InitiateViewfinder 0x9151 422 #define PTP_OC_CANON_EOS_TerminateViewfinder 0x9152 423 /* EOS M2 wlan: 2 params, 0x00200000 0x01000000 */ 424 #define PTP_OC_CANON_EOS_GetViewFinderData 0x9153 425 #define PTP_OC_CANON_EOS_DoAf 0x9154 426 #define PTP_OC_CANON_EOS_DriveLens 0x9155 427 #define PTP_OC_CANON_EOS_DepthOfFieldPreview 0x9156 /* 1 arg */ 428 #define PTP_OC_CANON_EOS_ClickWB 0x9157 /* 2 args: x,y */ 429 #define PTP_OC_CANON_EOS_Zoom 0x9158 /* 1 arg */ 430 #define PTP_OC_CANON_EOS_ZoomPosition 0x9159 /* 2 args: x,y */ 431 #define PTP_OC_CANON_EOS_SetLiveAfFrame 0x915A 432 #define PTP_OC_CANON_EOS_TouchAfPosition 0x915B /* 3 args: type,x,y */ 433 #define PTP_OC_CANON_EOS_SetLvPcFlavoreditMode 0x915C /* 1 arg */ 434 #define PTP_OC_CANON_EOS_SetLvPcFlavoreditParam 0x915D /* 1 arg */ 435 #define PTP_OC_CANON_EOS_AfCancel 0x9160 436 #define PTP_OC_CANON_EOS_SetDefaultCameraSetting 0x91BE 437 #define PTP_OC_CANON_EOS_GetAEData 0x91BF 438 #define PTP_OC_CANON_EOS_NotifyNetworkError 0x91E8 439 #define PTP_OC_CANON_EOS_AdapterTransferProgress 0x91E9 440 #define PTP_OC_CANON_EOS_TransferComplete2 0x91F0 441 #define PTP_OC_CANON_EOS_CancelTransfer2 0x91F1 442 #define PTP_OC_CANON_EOS_FAPIMessageTX 0x91FE 443 #define PTP_OC_CANON_EOS_FAPIMessageRX 0x91FF 444 445 /* A1E8 ... also seen? is an error code? */ 446 447 /* Nikon extension Operation Codes */ 448 #define PTP_OC_NIKON_GetProfileAllData 0x9006 449 #define PTP_OC_NIKON_SendProfileData 0x9007 450 #define PTP_OC_NIKON_DeleteProfile 0x9008 451 #define PTP_OC_NIKON_SetProfileData 0x9009 452 #define PTP_OC_NIKON_AdvancedTransfer 0x9010 453 #define PTP_OC_NIKON_GetFileInfoInBlock 0x9011 454 #define PTP_OC_NIKON_Capture 0x90C0 /* 1 param, no data */ 455 #define PTP_OC_NIKON_AfDrive 0x90C1 /* no params, no data */ 456 #define PTP_OC_NIKON_SetControlMode 0x90C2 /* 1 param, no data */ 457 #define PTP_OC_NIKON_DelImageSDRAM 0x90C3 /* 1 param, no data */ 458 #define PTP_OC_NIKON_GetLargeThumb 0x90C4 459 #define PTP_OC_NIKON_CurveDownload 0x90C5 /* 1 param, data in */ 460 #define PTP_OC_NIKON_CurveUpload 0x90C6 /* 1 param, data out */ 461 #define PTP_OC_NIKON_CheckEvent 0x90C7 /* no params, data in */ 462 #define PTP_OC_NIKON_DeviceReady 0x90C8 /* no params, no data */ 463 #define PTP_OC_NIKON_SetPreWBData 0x90C9 /* 3 params, data out */ 464 #define PTP_OC_NIKON_GetVendorPropCodes 0x90CA /* 0 params, data in */ 465 #define PTP_OC_NIKON_AfCaptureSDRAM 0x90CB /* no params, no data */ 466 #define PTP_OC_NIKON_GetPictCtrlData 0x90CC /* 2 params, data in */ 467 #define PTP_OC_NIKON_SetPictCtrlData 0x90CD /* 2 params, data out */ 468 #define PTP_OC_NIKON_DelCstPicCtrl 0x90CE /* 1 param, no data */ 469 #define PTP_OC_NIKON_GetPicCtrlCapability 0x90CF /* 1 param, data in */ 470 471 /* Nikon Liveview stuff */ 472 #define PTP_OC_NIKON_GetPreviewImg 0x9200 473 #define PTP_OC_NIKON_StartLiveView 0x9201 /* no params */ 474 #define PTP_OC_NIKON_EndLiveView 0x9202 /* no params */ 475 #define PTP_OC_NIKON_GetLiveViewImg 0x9203 /* no params, data in */ 476 #define PTP_OC_NIKON_MfDrive 0x9204 /* 2 params */ 477 #define PTP_OC_NIKON_ChangeAfArea 0x9205 /* 2 params */ 478 #define PTP_OC_NIKON_AfDriveCancel 0x9206 /* no params */ 479 /* 2 params: 480 * 0xffffffff == No AF before, 0xfffffffe == AF before capture 481 * sdram=1, card=0 482 */ 483 #define PTP_OC_NIKON_InitiateCaptureRecInMedia 0x9207 /* 1 params */ 484 485 #define PTP_OC_NIKON_GetVendorStorageIDs 0x9209 /* no params, data in */ 486 487 #define PTP_OC_NIKON_StartMovieRecInCard 0x920a /* no params, no data */ 488 #define PTP_OC_NIKON_EndMovieRec 0x920b /* no params, no data */ 489 490 #define PTP_OC_NIKON_TerminateCapture 0x920c /* 2 params */ 491 492 #define PTP_OC_NIKON_GetDevicePTPIPInfo 0x90E0 493 494 #define PTP_OC_NIKON_GetPartialObjectHiSpeed 0x9400 /* 3 params, data in */ 495 496 /* From Nikon V1 Trace */ 497 #define PTP_OC_NIKON_GetDevicePropEx 0x9504 /* gets device prop dataa */ 498 499 /* Casio EX-F1 (from http://code.google.com/p/exf1ctrl/ ) */ 500 #define PTP_OC_CASIO_STILL_START 0x9001 501 #define PTP_OC_CASIO_STILL_STOP 0x9002 502 503 #define PTP_OC_CASIO_FOCUS 0x9007 504 #define PTP_OC_CASIO_CF_PRESS 0x9009 505 #define PTP_OC_CASIO_CF_RELEASE 0x900A 506 #define PTP_OC_CASIO_GET_OBJECT_INFO 0x900C 507 508 #define PTP_OC_CASIO_SHUTTER 0x9024 509 #define PTP_OC_CASIO_GET_STILL_HANDLES 0x9027 510 #define PTP_OC_CASIO_STILL_RESET 0x9028 511 #define PTP_OC_CASIO_HALF_PRESS 0x9029 512 #define PTP_OC_CASIO_HALF_RELEASE 0x902A 513 #define PTP_OC_CASIO_CS_PRESS 0x902B 514 #define PTP_OC_CASIO_CS_RELEASE 0x902C 515 516 #define PTP_OC_CASIO_ZOOM 0x902D 517 #define PTP_OC_CASIO_CZ_PRESS 0x902E 518 #define PTP_OC_CASIO_CZ_RELEASE 0x902F 519 520 #define PTP_OC_CASIO_MOVIE_START 0x9041 521 #define PTP_OC_CASIO_MOVIE_STOP 0x9042 522 #define PTP_OC_CASIO_MOVIE_PRESS 0x9043 523 #define PTP_OC_CASIO_MOVIE_RELEASE 0x9044 524 #define PTP_OC_CASIO_GET_MOVIE_HANDLES 0x9045 525 #define PTP_OC_CASIO_MOVIE_RESET 0x9046 526 527 #define PTP_OC_CASIO_GET_OBJECT 0x9025 528 #define PTP_OC_CASIO_GET_THUMBNAIL 0x9026 529 530 /* Sony stuff */ 531 /* 9201: 532 * 3 params: 1,0,0 ; IN: data 8 bytes all 0 533 * or: 534 * 3 params: 2,0,0 ; IN: data 8 bytes all 0 535 * or 536 * 3 params: 3,0,0,: IN: data 8 butes all 0 537 */ 538 #define PTP_OC_SONY_SDIOConnect 0x9201 539 /* 9202: 1 param, 0xc8; IN data: 540 * 16 bit: 0xc8 541 * ptp array 32 bit: index, 16 bit values of propcodes */ 542 #define PTP_OC_SONY_GetSDIOGetExtDeviceInfo 0x9202 543 544 #define PTP_OC_SONY_GetDevicePropdesc 0x9203 545 #define PTP_OC_SONY_GetDevicePropertyValue 0x9204 546 /* 1 param, 16bit propcode, SEND DATA: propvalue */ 547 #define PTP_OC_SONY_SetControlDeviceA 0x9205 548 #define PTP_OC_SONY_GetControlDeviceDesc 0x9206 549 /* 1 param, 16bit propcode, SEND DATA: propvalue */ 550 #define PTP_OC_SONY_SetControlDeviceB 0x9207 551 /* get all device property data at once */ 552 #define PTP_OC_SONY_GetAllDevicePropData 0x9209 /* gets a 4126 byte blob of device props ?*/ 553 554 /* Microsoft / MTP extension codes */ 555 556 #define PTP_OC_MTP_GetObjectPropsSupported 0x9801 557 #define PTP_OC_MTP_GetObjectPropDesc 0x9802 558 #define PTP_OC_MTP_GetObjectPropValue 0x9803 559 #define PTP_OC_MTP_SetObjectPropValue 0x9804 560 #define PTP_OC_MTP_GetObjPropList 0x9805 561 #define PTP_OC_MTP_SetObjPropList 0x9806 562 #define PTP_OC_MTP_GetInterdependendPropdesc 0x9807 563 #define PTP_OC_MTP_SendObjectPropList 0x9808 564 #define PTP_OC_MTP_GetObjectReferences 0x9810 565 #define PTP_OC_MTP_SetObjectReferences 0x9811 566 #define PTP_OC_MTP_UpdateDeviceFirmware 0x9812 567 #define PTP_OC_MTP_Skip 0x9820 568 569 /* 570 * Windows Media Digital Rights Management for Portable Devices 571 * Extension Codes (microsoft.com/WMDRMPD: 10.1) 572 */ 573 #define PTP_OC_MTP_WMDRMPD_GetSecureTimeChallenge 0x9101 574 #define PTP_OC_MTP_WMDRMPD_GetSecureTimeResponse 0x9102 575 #define PTP_OC_MTP_WMDRMPD_SetLicenseResponse 0x9103 576 #define PTP_OC_MTP_WMDRMPD_GetSyncList 0x9104 577 #define PTP_OC_MTP_WMDRMPD_SendMeterChallengeQuery 0x9105 578 #define PTP_OC_MTP_WMDRMPD_GetMeterChallenge 0x9106 579 #define PTP_OC_MTP_WMDRMPD_SetMeterResponse 0x9107 580 #define PTP_OC_MTP_WMDRMPD_CleanDataStore 0x9108 581 #define PTP_OC_MTP_WMDRMPD_GetLicenseState 0x9109 582 #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDCommand 0x910A 583 #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDRequest 0x910B 584 585 /* 586 * Windows Media Digital Rights Management for Portable Devices 587 * Extension Codes (microsoft.com/WMDRMPD: 10.1) 588 * Below are operations that have no public documented identifier 589 * associated with them "Vendor-defined Command Code" 590 */ 591 #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest 0x9212 592 #define PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse 0x9213 593 #define PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations 0x9214 594 #define PTP_OC_MTP_WMDRMPD_DisableTrustedFilesOperations 0x9215 595 #define PTP_OC_MTP_WMDRMPD_EndTrustedAppSession 0x9216 596 /* ^^^ guess ^^^ */ 597 598 /* 599 * Microsoft Advanced Audio/Video Transfer 600 * Extensions (microsoft.com/AAVT: 1.0) 601 */ 602 #define PTP_OC_MTP_AAVT_OpenMediaSession 0x9170 603 #define PTP_OC_MTP_AAVT_CloseMediaSession 0x9171 604 #define PTP_OC_MTP_AAVT_GetNextDataBlock 0x9172 605 #define PTP_OC_MTP_AAVT_SetCurrentTimePosition 0x9173 606 607 /* 608 * Windows Media Digital Rights Management for Network Devices 609 * Extensions (microsoft.com/WMDRMND: 1.0) MTP/IP? 610 */ 611 #define PTP_OC_MTP_WMDRMND_SendRegistrationRequest 0x9180 612 #define PTP_OC_MTP_WMDRMND_GetRegistrationResponse 0x9181 613 #define PTP_OC_MTP_WMDRMND_GetProximityChallenge 0x9182 614 #define PTP_OC_MTP_WMDRMND_SendProximityResponse 0x9183 615 #define PTP_OC_MTP_WMDRMND_SendWMDRMNDLicenseRequest 0x9184 616 #define PTP_OC_MTP_WMDRMND_GetWMDRMNDLicenseResponse 0x9185 617 618 /* 619 * Windows Media Player Portiable Devices 620 * Extension Codes (microsoft.com/WMPPD: 11.1) 621 */ 622 #define PTP_OC_MTP_WMPPD_ReportAddedDeletedItems 0x9201 623 #define PTP_OC_MTP_WMPPD_ReportAcquiredItems 0x9202 624 #define PTP_OC_MTP_WMPPD_PlaylistObjectPref 0x9203 625 626 /* 627 * Undocumented Zune Operation Codes 628 * maybe related to WMPPD extension set? 629 */ 630 #define PTP_OC_MTP_ZUNE_GETUNDEFINED001 0x9204 631 632 /* WiFi Provisioning MTP Extension Codes (microsoft.com/WPDWCN: 1.0) */ 633 #define PTP_OC_MTP_WPDWCN_ProcessWFCObject 0x9122 634 635 636 /* Olympus E series commands */ 637 #define PTP_OC_OLYMPUS_Capture 0x9101 638 #define PTP_OC_OLYMPUS_SelfCleaning 0x9103 639 #define PTP_OC_OLYMPUS_SetRGBGain 0x9106 640 #define PTP_OC_OLYMPUS_SetPresetMode 0x9107 641 #define PTP_OC_OLYMPUS_SetWBBiasAll 0x9108 642 #define PTP_OC_OLYMPUS_GetCameraControlMode 0x910a 643 #define PTP_OC_OLYMPUS_SetCameraControlMode 0x910b 644 #define PTP_OC_OLYMPUS_SetWBRGBGain 0x910c 645 #define PTP_OC_OLYMPUS_GetDeviceInfo 0x9301 646 #define PTP_OC_OLYMPUS_OpenSession 0x9302 647 #define PTP_OC_OLYMPUS_SetDateTime 0x9402 648 #define PTP_OC_OLYMPUS_GetDateTime 0x9482 649 #define PTP_OC_OLYMPUS_SetCameraID 0x9501 650 #define PTP_OC_OLYMPUS_GetCameraID 0x9581 651 652 /* Android Random I/O Extensions Codes */ 653 #define PTP_OC_ANDROID_GetPartialObject64 0x95C1 654 #define PTP_OC_ANDROID_SendPartialObject 0x95C2 655 #define PTP_OC_ANDROID_TruncateObject 0x95C3 656 #define PTP_OC_ANDROID_BeginEditObject 0x95C4 657 #define PTP_OC_ANDROID_EndEditObject 0x95C5 658 659 /* Leica opcodes, from Lightroom tether plugin */ 660 #define PTP_OC_LEICA_SetCameraSettings 0x9001 661 #define PTP_OC_LEICA_GetCameraSettings 0x9002 662 #define PTP_OC_LEICA_GetLensParameter 0x9003 663 /* probably 2 arguments. 664 * generic: releaseStage, stepSize 665 * Release(releasestage) = (releasestage,0) 666 * Release() = (0,0) 667 * AEStart() = (1,0) 668 * Autofocusrelease() = (2,0) 669 * AutofocusPush() = (1,0) ... same as AEStart? 670 * KeepCameraActive() = (0xe,0) 671 */ 672 #define PTP_OC_LEICA_Release 0x9004 673 #define PTP_OC_LEICA_OpenLESession 0x9005 674 #define PTP_OC_LEICA_CloseLESession 0x9006 675 #define PTP_OC_LEICA_RequestObjectTransferReady 0x9007 676 677 #define PTP_OC_PARROT_GetSunshineValues 0x9201 678 #define PTP_OC_PARROT_GetTemperatureValues 0x9202 679 #define PTP_OC_PARROT_GetAngleValues 0x9203 680 #define PTP_OC_PARROT_GetGpsValues 0x9204 681 #define PTP_OC_PARROT_GetGyroscopeValues 0x9205 682 #define PTP_OC_PARROT_GetAccelerometerValues 0x9206 683 #define PTP_OC_PARROT_GetMagnetometerValues 0x9207 684 #define PTP_OC_PARROT_GetImuValues 0x9208 685 #define PTP_OC_PARROT_GetStatusMask 0x9209 686 #define PTP_OC_PARROT_EjectStorage 0x920A 687 #define PTP_OC_PARROT_StartMagnetoCalib 0x9210 688 #define PTP_OC_PARROT_StopMagnetoCalib 0x9211 689 #define PTP_OC_PARROT_MagnetoCalibStatus 0x9212 690 #define PTP_OC_PARROT_SendFirmwareUpdate 0x9213 691 692 693 /* Proprietary vendor extension operations mask */ 694 #define PTP_OC_EXTENSION_MASK 0xF000 695 #define PTP_OC_EXTENSION 0x9000 696 697 /* Response Codes */ 698 699 /* PTP v1.0 response codes */ 700 #define PTP_RC_Undefined 0x2000 701 #define PTP_RC_OK 0x2001 702 #define PTP_RC_GeneralError 0x2002 703 #define PTP_RC_SessionNotOpen 0x2003 704 #define PTP_RC_InvalidTransactionID 0x2004 705 #define PTP_RC_OperationNotSupported 0x2005 706 #define PTP_RC_ParameterNotSupported 0x2006 707 #define PTP_RC_IncompleteTransfer 0x2007 708 #define PTP_RC_InvalidStorageId 0x2008 709 #define PTP_RC_InvalidObjectHandle 0x2009 710 #define PTP_RC_DevicePropNotSupported 0x200A 711 #define PTP_RC_InvalidObjectFormatCode 0x200B 712 #define PTP_RC_StoreFull 0x200C 713 #define PTP_RC_ObjectWriteProtected 0x200D 714 #define PTP_RC_StoreReadOnly 0x200E 715 #define PTP_RC_AccessDenied 0x200F 716 #define PTP_RC_NoThumbnailPresent 0x2010 717 #define PTP_RC_SelfTestFailed 0x2011 718 #define PTP_RC_PartialDeletion 0x2012 719 #define PTP_RC_StoreNotAvailable 0x2013 720 #define PTP_RC_SpecificationByFormatUnsupported 0x2014 721 #define PTP_RC_NoValidObjectInfo 0x2015 722 #define PTP_RC_InvalidCodeFormat 0x2016 723 #define PTP_RC_UnknownVendorCode 0x2017 724 #define PTP_RC_CaptureAlreadyTerminated 0x2018 725 #define PTP_RC_DeviceBusy 0x2019 726 #define PTP_RC_InvalidParentObject 0x201A 727 #define PTP_RC_InvalidDevicePropFormat 0x201B 728 #define PTP_RC_InvalidDevicePropValue 0x201C 729 #define PTP_RC_InvalidParameter 0x201D 730 #define PTP_RC_SessionAlreadyOpened 0x201E 731 #define PTP_RC_TransactionCanceled 0x201F 732 #define PTP_RC_SpecificationOfDestinationUnsupported 0x2020 733 /* PTP v1.1 response codes */ 734 #define PTP_RC_InvalidEnumHandle 0x2021 735 #define PTP_RC_NoStreamEnabled 0x2022 736 #define PTP_RC_InvalidDataSet 0x2023 737 738 /* Eastman Kodak extension Response Codes */ 739 #define PTP_RC_EK_FilenameRequired 0xA001 740 #define PTP_RC_EK_FilenameConflicts 0xA002 741 #define PTP_RC_EK_FilenameInvalid 0xA003 742 743 /* Nikon specific response codes */ 744 #define PTP_RC_NIKON_HardwareError 0xA001 745 #define PTP_RC_NIKON_OutOfFocus 0xA002 746 #define PTP_RC_NIKON_ChangeCameraModeFailed 0xA003 747 #define PTP_RC_NIKON_InvalidStatus 0xA004 748 #define PTP_RC_NIKON_SetPropertyNotSupported 0xA005 749 #define PTP_RC_NIKON_WbResetError 0xA006 750 #define PTP_RC_NIKON_DustReferenceError 0xA007 751 #define PTP_RC_NIKON_ShutterSpeedBulb 0xA008 752 #define PTP_RC_NIKON_MirrorUpSequence 0xA009 753 #define PTP_RC_NIKON_CameraModeNotAdjustFNumber 0xA00A 754 #define PTP_RC_NIKON_NotLiveView 0xA00B 755 #define PTP_RC_NIKON_MfDriveStepEnd 0xA00C 756 #define PTP_RC_NIKON_MfDriveStepInsufficiency 0xA00E 757 #define PTP_RC_NIKON_AdvancedTransferCancel 0xA022 758 759 /* Canon specific response codes */ 760 #define PTP_RC_CANON_UNKNOWN_COMMAND 0xA001 761 #define PTP_RC_CANON_OPERATION_REFUSED 0xA005 762 #define PTP_RC_CANON_LENS_COVER 0xA006 763 #define PTP_RC_CANON_BATTERY_LOW 0xA101 764 #define PTP_RC_CANON_NOT_READY 0xA102 765 766 #define PTP_RC_CANON_A009 0xA009 767 768 #define PTP_RC_CANON_EOS_UnknownCommand 0xA001 769 #define PTP_RC_CANON_EOS_OperationRefused 0xA005 770 #define PTP_RC_CANON_EOS_LensCoverClosed 0xA006 771 #define PTP_RC_CANON_EOS_LowBattery 0xA101 772 #define PTP_RC_CANON_EOS_ObjectNotReady 0xA102 773 #define PTP_RC_CANON_EOS_CannotMakeObject 0xA104 774 #define PTP_RC_CANON_EOS_MemoryStatusNotReady 0xA106 775 776 777 /* Microsoft/MTP specific codes */ 778 #define PTP_RC_MTP_Undefined 0xA800 779 #define PTP_RC_MTP_Invalid_ObjectPropCode 0xA801 780 #define PTP_RC_MTP_Invalid_ObjectProp_Format 0xA802 781 #define PTP_RC_MTP_Invalid_ObjectProp_Value 0xA803 782 #define PTP_RC_MTP_Invalid_ObjectReference 0xA804 783 #define PTP_RC_MTP_Invalid_Dataset 0xA806 784 #define PTP_RC_MTP_Specification_By_Group_Unsupported 0xA807 785 #define PTP_RC_MTP_Specification_By_Depth_Unsupported 0xA808 786 #define PTP_RC_MTP_Object_Too_Large 0xA809 787 #define PTP_RC_MTP_ObjectProp_Not_Supported 0xA80A 788 789 /* Microsoft Advanced Audio/Video Transfer response codes 790 (microsoft.com/AAVT 1.0) */ 791 #define PTP_RC_MTP_Invalid_Media_Session_ID 0xA170 792 #define PTP_RC_MTP_Media_Session_Limit_Reached 0xA171 793 #define PTP_RC_MTP_No_More_Data 0xA172 794 795 /* WiFi Provisioning MTP Extension Error Codes (microsoft.com/WPDWCN: 1.0) */ 796 #define PTP_RC_MTP_Invalid_WFC_Syntax 0xA121 797 #define PTP_RC_MTP_WFC_Version_Not_Supported 0xA122 798 799 /* libptp2 extended ERROR codes */ 800 #define PTP_ERROR_TIMEOUT 0x02FA 801 #define PTP_ERROR_CANCEL 0x02FB 802 #define PTP_ERROR_BADPARAM 0x02FC 803 #define PTP_ERROR_RESP_EXPECTED 0x02FD 804 #define PTP_ERROR_DATA_EXPECTED 0x02FE 805 #define PTP_ERROR_IO 0x02FF 806 807 /* PTP Event Codes */ 808 809 #define PTP_EC_Undefined 0x4000 810 #define PTP_EC_CancelTransaction 0x4001 811 #define PTP_EC_ObjectAdded 0x4002 812 #define PTP_EC_ObjectRemoved 0x4003 813 #define PTP_EC_StoreAdded 0x4004 814 #define PTP_EC_StoreRemoved 0x4005 815 #define PTP_EC_DevicePropChanged 0x4006 816 #define PTP_EC_ObjectInfoChanged 0x4007 817 #define PTP_EC_DeviceInfoChanged 0x4008 818 #define PTP_EC_RequestObjectTransfer 0x4009 819 #define PTP_EC_StoreFull 0x400A 820 #define PTP_EC_DeviceReset 0x400B 821 #define PTP_EC_StorageInfoChanged 0x400C 822 #define PTP_EC_CaptureComplete 0x400D 823 #define PTP_EC_UnreportedStatus 0x400E 824 825 /* Canon extension Event Codes */ 826 #define PTP_EC_CANON_ExtendedErrorcode 0xC005 /* ? */ 827 #define PTP_EC_CANON_ObjectInfoChanged 0xC008 828 #define PTP_EC_CANON_RequestObjectTransfer 0xC009 829 #define PTP_EC_CANON_ShutterButtonPressed0 0xC00B 830 #define PTP_EC_CANON_CameraModeChanged 0xC00C 831 #define PTP_EC_CANON_ShutterButtonPressed1 0xC00E 832 833 #define PTP_EC_CANON_StartDirectTransfer 0xC011 834 #define PTP_EC_CANON_StopDirectTransfer 0xC013 835 836 /* Canon EOS events */ 837 #define PTP_EC_CANON_EOS_RequestGetEvent 0xc101 838 #define PTP_EC_CANON_EOS_ObjectAddedEx 0xc181 839 #define PTP_EC_CANON_EOS_ObjectRemoved 0xc182 840 #define PTP_EC_CANON_EOS_RequestGetObjectInfoEx 0xc183 841 #define PTP_EC_CANON_EOS_StorageStatusChanged 0xc184 842 #define PTP_EC_CANON_EOS_StorageInfoChanged 0xc185 843 #define PTP_EC_CANON_EOS_RequestObjectTransfer 0xc186 844 #define PTP_EC_CANON_EOS_ObjectInfoChangedEx 0xc187 845 #define PTP_EC_CANON_EOS_ObjectContentChanged 0xc188 846 #define PTP_EC_CANON_EOS_PropValueChanged 0xc189 847 #define PTP_EC_CANON_EOS_AvailListChanged 0xc18a 848 #define PTP_EC_CANON_EOS_CameraStatusChanged 0xc18b 849 #define PTP_EC_CANON_EOS_WillSoonShutdown 0xc18d 850 #define PTP_EC_CANON_EOS_ShutdownTimerUpdated 0xc18e 851 #define PTP_EC_CANON_EOS_RequestCancelTransfer 0xc18f 852 #define PTP_EC_CANON_EOS_RequestObjectTransferDT 0xc190 853 #define PTP_EC_CANON_EOS_RequestCancelTransferDT 0xc191 854 #define PTP_EC_CANON_EOS_StoreAdded 0xc192 855 #define PTP_EC_CANON_EOS_StoreRemoved 0xc193 856 #define PTP_EC_CANON_EOS_BulbExposureTime 0xc194 857 #define PTP_EC_CANON_EOS_RecordingTime 0xc195 858 #define PTP_EC_CANON_EOS_RequestObjectTransferTS 0xc1a2 859 #define PTP_EC_CANON_EOS_AfResult 0xc1a3 860 #define PTP_EC_CANON_EOS_CTGInfoCheckComplete 0xc1a4 861 #define PTP_EC_CANON_EOS_OLCInfoChanged 0xc1a5 862 #define PTP_EC_CANON_EOS_ObjectAddedUnknown 0xc1a7 863 #define PTP_EC_CANON_EOS_RequestObjectTransferNew 0xc1a9 864 #define PTP_EC_CANON_EOS_RequestObjectTransferFTP 0xc1f1 865 866 /* Nikon extension Event Codes */ 867 868 /* Nikon extension Event Codes */ 869 #define PTP_EC_Nikon_ObjectAddedInSDRAM 0xC101 870 #define PTP_EC_Nikon_CaptureCompleteRecInSdram 0xC102 871 /* Gets 1 parameter, objectid pointing to DPOF object */ 872 #define PTP_EC_Nikon_AdvancedTransfer 0xC103 873 #define PTP_EC_Nikon_PreviewImageAdded 0xC104 874 875 /* Olympus E series */ 876 #define PTP_EC_Olympus_PropertyChanged 0xC102 877 #define PTP_EC_Olympus_CaptureComplete 0xC103 878 879 /* Sony */ 880 #define PTP_EC_Sony_ObjectAdded 0xC201 881 #define PTP_EC_Sony_ObjectRemoved 0xC202 882 #define PTP_EC_Sony_PropertyChanged 0xC203 883 884 /* MTP Event codes */ 885 #define PTP_EC_MTP_ObjectPropChanged 0xC801 886 #define PTP_EC_MTP_ObjectPropDescChanged 0xC802 887 #define PTP_EC_MTP_ObjectReferencesChanged 0xC803 888 889 #define PTP_EC_PARROT_Status 0xC201 890 #define PTP_EC_PARROT_MagnetoCalibrationStatus 0xC202 891 892 893 /* constants for GetObjectHandles */ 894 #define PTP_GOH_ALL_STORAGE 0xffffffff 895 #define PTP_GOH_ALL_FORMATS 0x00000000 896 #define PTP_GOH_ALL_ASSOCS 0x00000000 897 #define PTP_GOH_ROOT_PARENT 0xffffffff 898 899 /* PTP device info structure (returned by GetDevInfo) */ 900 901 struct _PTPDeviceInfo { 902 uint16_t StandardVersion; 903 uint32_t VendorExtensionID; 904 uint16_t VendorExtensionVersion; 905 char *VendorExtensionDesc; 906 uint16_t FunctionalMode; 907 uint32_t OperationsSupported_len; 908 uint16_t *OperationsSupported; 909 uint32_t EventsSupported_len; 910 uint16_t *EventsSupported; 911 uint32_t DevicePropertiesSupported_len; 912 uint16_t *DevicePropertiesSupported; 913 uint32_t CaptureFormats_len; 914 uint16_t *CaptureFormats; 915 uint32_t ImageFormats_len; 916 uint16_t *ImageFormats; 917 char *Manufacturer; 918 char *Model; 919 char *DeviceVersion; 920 char *SerialNumber; 921 }; 922 typedef struct _PTPDeviceInfo PTPDeviceInfo; 923 924 /* PTP storageIDs structute (returned by GetStorageIDs) */ 925 926 struct _PTPStorageIDs { 927 uint32_t n; 928 uint32_t *Storage; 929 }; 930 typedef struct _PTPStorageIDs PTPStorageIDs; 931 932 /* PTP StorageInfo structure (returned by GetStorageInfo) */ 933 struct _PTPStorageInfo { 934 uint16_t StorageType; 935 uint16_t FilesystemType; 936 uint16_t AccessCapability; 937 uint64_t MaxCapability; 938 uint64_t FreeSpaceInBytes; 939 uint32_t FreeSpaceInImages; 940 char *StorageDescription; 941 char *VolumeLabel; 942 }; 943 typedef struct _PTPStorageInfo PTPStorageInfo; 944 945 /* PTP objecthandles structure (returned by GetObjectHandles) */ 946 947 struct _PTPObjectHandles { 948 uint32_t n; 949 uint32_t *Handler; 950 }; 951 typedef struct _PTPObjectHandles PTPObjectHandles; 952 953 #define PTP_HANDLER_SPECIAL 0xffffffff 954 #define PTP_HANDLER_ROOT 0x00000000 955 956 957 /* PTP objectinfo structure (returned by GetObjectInfo) */ 958 959 struct _PTPObjectInfo { 960 uint32_t StorageID; 961 uint16_t ObjectFormat; 962 uint16_t ProtectionStatus; 963 /* In the regular objectinfo this is 32bit, 964 * but we keep the general object size here 965 * that also arrives via other methods and so 966 * use 64bit */ 967 uint64_t ObjectCompressedSize; 968 uint16_t ThumbFormat; 969 uint32_t ThumbCompressedSize; 970 uint32_t ThumbPixWidth; 971 uint32_t ThumbPixHeight; 972 uint32_t ImagePixWidth; 973 uint32_t ImagePixHeight; 974 uint32_t ImageBitDepth; 975 uint32_t ParentObject; 976 uint16_t AssociationType; 977 uint32_t AssociationDesc; 978 uint32_t SequenceNumber; 979 char *Filename; 980 time_t CaptureDate; 981 time_t ModificationDate; 982 char *Keywords; 983 }; 984 typedef struct _PTPObjectInfo PTPObjectInfo; 985 986 /* max ptp string length INCLUDING terminating null character */ 987 988 #define PTP_MAXSTRLEN 255 989 990 /* PTP Object Format Codes */ 991 992 /* ancillary formats */ 993 #define PTP_OFC_Undefined 0x3000 994 #define PTP_OFC_Defined 0x3800 995 #define PTP_OFC_Association 0x3001 996 #define PTP_OFC_Script 0x3002 997 #define PTP_OFC_Executable 0x3003 998 #define PTP_OFC_Text 0x3004 999 #define PTP_OFC_HTML 0x3005 1000 #define PTP_OFC_DPOF 0x3006 1001 #define PTP_OFC_AIFF 0x3007 1002 #define PTP_OFC_WAV 0x3008 1003 #define PTP_OFC_MP3 0x3009 1004 #define PTP_OFC_AVI 0x300A 1005 #define PTP_OFC_MPEG 0x300B 1006 #define PTP_OFC_ASF 0x300C 1007 #define PTP_OFC_QT 0x300D /* guessing */ 1008 /* image formats */ 1009 #define PTP_OFC_EXIF_JPEG 0x3801 1010 #define PTP_OFC_TIFF_EP 0x3802 1011 #define PTP_OFC_FlashPix 0x3803 1012 #define PTP_OFC_BMP 0x3804 1013 #define PTP_OFC_CIFF 0x3805 1014 #define PTP_OFC_Undefined_0x3806 0x3806 1015 #define PTP_OFC_GIF 0x3807 1016 #define PTP_OFC_JFIF 0x3808 1017 #define PTP_OFC_PCD 0x3809 1018 #define PTP_OFC_PICT 0x380A 1019 #define PTP_OFC_PNG 0x380B 1020 #define PTP_OFC_Undefined_0x380C 0x380C 1021 #define PTP_OFC_TIFF 0x380D 1022 #define PTP_OFC_TIFF_IT 0x380E 1023 #define PTP_OFC_JP2 0x380F 1024 #define PTP_OFC_JPX 0x3810 1025 /* ptp v1.1 has only DNG new */ 1026 #define PTP_OFC_DNG 0x3811 1027 /* Eastman Kodak extension ancillary format */ 1028 #define PTP_OFC_EK_M3U 0xb002 1029 /* Canon extension */ 1030 #define PTP_OFC_CANON_CRW 0xb101 1031 #define PTP_OFC_CANON_CRW3 0xb103 1032 #define PTP_OFC_CANON_MOV 0xb104 1033 #define PTP_OFC_CANON_MOV2 0xb105 1034 /* CHDK specific raw mode */ 1035 #define PTP_OFC_CANON_CHDK_CRW 0xb1ff 1036 /* Sony */ 1037 #define PTP_OFC_SONY_RAW 0xb101 1038 /* MTP extensions */ 1039 #define PTP_OFC_MTP_MediaCard 0xb211 1040 #define PTP_OFC_MTP_MediaCardGroup 0xb212 1041 #define PTP_OFC_MTP_Encounter 0xb213 1042 #define PTP_OFC_MTP_EncounterBox 0xb214 1043 #define PTP_OFC_MTP_M4A 0xb215 1044 #define PTP_OFC_MTP_ZUNEUNDEFINED 0xb217 /* Unknown file type */ 1045 #define PTP_OFC_MTP_Firmware 0xb802 1046 #define PTP_OFC_MTP_WindowsImageFormat 0xb881 1047 #define PTP_OFC_MTP_UndefinedAudio 0xb900 1048 #define PTP_OFC_MTP_WMA 0xb901 1049 #define PTP_OFC_MTP_OGG 0xb902 1050 #define PTP_OFC_MTP_AAC 0xb903 1051 #define PTP_OFC_MTP_AudibleCodec 0xb904 1052 #define PTP_OFC_MTP_FLAC 0xb906 1053 #define PTP_OFC_MTP_SamsungPlaylist 0xb909 1054 #define PTP_OFC_MTP_UndefinedVideo 0xb980 1055 #define PTP_OFC_MTP_WMV 0xb981 1056 #define PTP_OFC_MTP_MP4 0xb982 1057 #define PTP_OFC_MTP_MP2 0xb983 1058 #define PTP_OFC_MTP_3GP 0xb984 1059 #define PTP_OFC_MTP_UndefinedCollection 0xba00 1060 #define PTP_OFC_MTP_AbstractMultimediaAlbum 0xba01 1061 #define PTP_OFC_MTP_AbstractImageAlbum 0xba02 1062 #define PTP_OFC_MTP_AbstractAudioAlbum 0xba03 1063 #define PTP_OFC_MTP_AbstractVideoAlbum 0xba04 1064 #define PTP_OFC_MTP_AbstractAudioVideoPlaylist 0xba05 1065 #define PTP_OFC_MTP_AbstractContactGroup 0xba06 1066 #define PTP_OFC_MTP_AbstractMessageFolder 0xba07 1067 #define PTP_OFC_MTP_AbstractChapteredProduction 0xba08 1068 #define PTP_OFC_MTP_AbstractAudioPlaylist 0xba09 1069 #define PTP_OFC_MTP_AbstractVideoPlaylist 0xba0a 1070 #define PTP_OFC_MTP_AbstractMediacast 0xba0b 1071 #define PTP_OFC_MTP_WPLPlaylist 0xba10 1072 #define PTP_OFC_MTP_M3UPlaylist 0xba11 1073 #define PTP_OFC_MTP_MPLPlaylist 0xba12 1074 #define PTP_OFC_MTP_ASXPlaylist 0xba13 1075 #define PTP_OFC_MTP_PLSPlaylist 0xba14 1076 #define PTP_OFC_MTP_UndefinedDocument 0xba80 1077 #define PTP_OFC_MTP_AbstractDocument 0xba81 1078 #define PTP_OFC_MTP_XMLDocument 0xba82 1079 #define PTP_OFC_MTP_MSWordDocument 0xba83 1080 #define PTP_OFC_MTP_MHTCompiledHTMLDocument 0xba84 1081 #define PTP_OFC_MTP_MSExcelSpreadsheetXLS 0xba85 1082 #define PTP_OFC_MTP_MSPowerpointPresentationPPT 0xba86 1083 #define PTP_OFC_MTP_UndefinedMessage 0xbb00 1084 #define PTP_OFC_MTP_AbstractMessage 0xbb01 1085 #define PTP_OFC_MTP_UndefinedContact 0xbb80 1086 #define PTP_OFC_MTP_AbstractContact 0xbb81 1087 #define PTP_OFC_MTP_vCard2 0xbb82 1088 #define PTP_OFC_MTP_vCard3 0xbb83 1089 #define PTP_OFC_MTP_UndefinedCalendarItem 0xbe00 1090 #define PTP_OFC_MTP_AbstractCalendarItem 0xbe01 1091 #define PTP_OFC_MTP_vCalendar1 0xbe02 1092 #define PTP_OFC_MTP_vCalendar2 0xbe03 1093 #define PTP_OFC_MTP_UndefinedWindowsExecutable 0xbe80 1094 #define PTP_OFC_MTP_MediaCast 0xbe81 1095 #define PTP_OFC_MTP_Section 0xbe82 1096 1097 /* PTP Association Types */ 1098 #define PTP_AT_Undefined 0x0000 1099 #define PTP_AT_GenericFolder 0x0001 1100 #define PTP_AT_Album 0x0002 1101 #define PTP_AT_TimeSequence 0x0003 1102 #define PTP_AT_HorizontalPanoramic 0x0004 1103 #define PTP_AT_VerticalPanoramic 0x0005 1104 #define PTP_AT_2DPanoramic 0x0006 1105 #define PTP_AT_AncillaryData 0x0007 1106 1107 /* PTP Protection Status */ 1108 1109 #define PTP_PS_NoProtection 0x0000 1110 #define PTP_PS_ReadOnly 0x0001 1111 #define PTP_PS_MTP_ReadOnlyData 0x8002 1112 #define PTP_PS_MTP_NonTransferableData 0x8003 1113 1114 /* PTP Storage Types */ 1115 1116 #define PTP_ST_Undefined 0x0000 1117 #define PTP_ST_FixedROM 0x0001 1118 #define PTP_ST_RemovableROM 0x0002 1119 #define PTP_ST_FixedRAM 0x0003 1120 #define PTP_ST_RemovableRAM 0x0004 1121 1122 /* PTP FilesystemType Values */ 1123 1124 #define PTP_FST_Undefined 0x0000 1125 #define PTP_FST_GenericFlat 0x0001 1126 #define PTP_FST_GenericHierarchical 0x0002 1127 #define PTP_FST_DCF 0x0003 1128 1129 /* PTP StorageInfo AccessCapability Values */ 1130 1131 #define PTP_AC_ReadWrite 0x0000 1132 #define PTP_AC_ReadOnly 0x0001 1133 #define PTP_AC_ReadOnly_with_Object_Deletion 0x0002 1134 1135 /* Property Describing Dataset, Range Form */ 1136 1137 union _PTPPropertyValue { 1138 char *str; /* common string, malloced */ 1139 uint8_t u8; 1140 int8_t i8; 1141 uint16_t u16; 1142 int16_t i16; 1143 uint32_t u32; 1144 int32_t i32; 1145 uint64_t u64; 1146 int64_t i64; 1147 /* XXXX: 128 bit signed and unsigned missing */ 1148 struct array { 1149 uint32_t count; 1150 union _PTPPropertyValue *v; /* malloced, count elements */ 1151 } a; 1152 }; 1153 1154 typedef union _PTPPropertyValue PTPPropertyValue; 1155 1156 /* Metadata lists for MTP operations */ 1157 struct _MTPProperties { 1158 uint16_t property; 1159 uint16_t datatype; 1160 uint32_t ObjectHandle; 1161 PTPPropertyValue propval; 1162 }; 1163 typedef struct _MTPProperties MTPProperties; 1164 1165 struct _PTPPropDescRangeForm { 1166 PTPPropertyValue MinimumValue; 1167 PTPPropertyValue MaximumValue; 1168 PTPPropertyValue StepSize; 1169 }; 1170 typedef struct _PTPPropDescRangeForm PTPPropDescRangeForm; 1171 1172 /* Property Describing Dataset, Enum Form */ 1173 1174 struct _PTPPropDescEnumForm { 1175 uint16_t NumberOfValues; 1176 PTPPropertyValue *SupportedValue; /* malloced */ 1177 }; 1178 typedef struct _PTPPropDescEnumForm PTPPropDescEnumForm; 1179 1180 /* Device Property Describing Dataset (DevicePropDesc) */ 1181 1182 struct _PTPDevicePropDesc { 1183 uint16_t DevicePropertyCode; 1184 uint16_t DataType; 1185 uint8_t GetSet; 1186 PTPPropertyValue FactoryDefaultValue; 1187 PTPPropertyValue CurrentValue; 1188 uint8_t FormFlag; 1189 union { 1190 PTPPropDescEnumForm Enum; 1191 PTPPropDescRangeForm Range; 1192 } FORM; 1193 }; 1194 typedef struct _PTPDevicePropDesc PTPDevicePropDesc; 1195 1196 /* Object Property Describing Dataset (DevicePropDesc) */ 1197 1198 struct _PTPObjectPropDesc { 1199 uint16_t ObjectPropertyCode; 1200 uint16_t DataType; 1201 uint8_t GetSet; 1202 PTPPropertyValue FactoryDefaultValue; 1203 uint32_t GroupCode; 1204 uint8_t FormFlag; 1205 union { 1206 PTPPropDescEnumForm Enum; 1207 PTPPropDescRangeForm Range; 1208 } FORM; 1209 }; 1210 typedef struct _PTPObjectPropDesc PTPObjectPropDesc; 1211 1212 /* Canon filesystem's folder entry Dataset */ 1213 1214 #define PTP_CANON_FilenameBufferLen 13 1215 #define PTP_CANON_FolderEntryLen 28 1216 1217 struct _PTPCANONFolderEntry { 1218 uint32_t ObjectHandle; 1219 uint16_t ObjectFormatCode; 1220 uint8_t Flags; 1221 uint32_t ObjectSize; 1222 time_t Time; 1223 char Filename[PTP_CANON_FilenameBufferLen]; 1224 1225 uint32_t StorageID; 1226 }; 1227 typedef struct _PTPCANONFolderEntry PTPCANONFolderEntry; 1228 1229 /* Nikon Tone Curve Data */ 1230 1231 #define PTP_NIKON_MaxCurvePoints 19 1232 1233 struct _PTPNIKONCoordinatePair { 1234 uint8_t X; 1235 uint8_t Y; 1236 }; 1237 1238 typedef struct _PTPNIKONCoordinatePair PTPNIKONCoordinatePair; 1239 1240 struct _PTPNTCCoordinatePair { 1241 uint8_t X; 1242 uint8_t Y; 1243 }; 1244 1245 typedef struct _PTPNTCCoordinatePair PTPNTCCoordinatePair; 1246 1247 struct _PTPNIKONCurveData { 1248 char static_preamble[6]; 1249 uint8_t XAxisStartPoint; 1250 uint8_t XAxisEndPoint; 1251 uint8_t YAxisStartPoint; 1252 uint8_t YAxisEndPoint; 1253 uint8_t MidPointIntegerPart; 1254 uint8_t MidPointDecimalPart; 1255 uint8_t NCoordinates; 1256 PTPNIKONCoordinatePair CurveCoordinates[PTP_NIKON_MaxCurvePoints]; 1257 }; 1258 1259 typedef struct _PTPNIKONCurveData PTPNIKONCurveData; 1260 1261 struct _PTPEKTextParams { 1262 char *title; 1263 char *line[5]; 1264 }; 1265 typedef struct _PTPEKTextParams PTPEKTextParams; 1266 1267 /* Nikon Wifi profiles */ 1268 1269 struct _PTPNIKONWifiProfile { 1270 /* Values valid both when reading and writing profiles */ 1271 char profile_name[17]; 1272 uint8_t device_type; 1273 uint8_t icon_type; 1274 char essid[33]; 1275 1276 /* Values only valid when reading. Some of these are in the write packet, 1277 * but are set automatically, like id, display_order and creation_date. */ 1278 uint8_t id; 1279 uint8_t valid; 1280 uint8_t display_order; 1281 char creation_date[16]; 1282 char lastusage_date[16]; 1283 1284 /* Values only valid when writing */ 1285 uint32_t ip_address; 1286 uint8_t subnet_mask; /* first zero bit position, e.g. 24 for 255.255.255.0 */ 1287 uint32_t gateway_address; 1288 uint8_t address_mode; /* 0 - Manual, 2-3 - DHCP ad-hoc/managed*/ 1289 uint8_t access_mode; /* 0 - Managed, 1 - Adhoc */ 1290 uint8_t wifi_channel; /* 1-11 */ 1291 uint8_t authentification; /* 0 - Open, 1 - Shared, 2 - WPA-PSK */ 1292 uint8_t encryption; /* 0 - None, 1 - WEP 64bit, 2 - WEP 128bit (not supported: 3 - TKIP) */ 1293 uint8_t key[64]; 1294 uint8_t key_nr; 1295 /* char guid[16]; */ 1296 }; 1297 1298 typedef struct _PTPNIKONWifiProfile PTPNIKONWifiProfile; 1299 1300 enum _PTPCanon_changes_types { 1301 PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN, 1302 PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO, 1303 PTP_CANON_EOS_CHANGES_TYPE_OBJECTTRANSFER, 1304 PTP_CANON_EOS_CHANGES_TYPE_PROPERTY, 1305 PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS, 1306 PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO, 1307 PTP_CANON_EOS_CHANGES_TYPE_FOCUSMASK, 1308 PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED 1309 }; 1310 1311 struct _PTPCanon_New_Object { 1312 uint32_t oid; 1313 PTPObjectInfo oi; 1314 }; 1315 1316 struct _PTPCanon_changes_entry { 1317 enum _PTPCanon_changes_types type; 1318 union { 1319 struct _PTPCanon_New_Object object; /* TYPE_OBJECTINFO */ 1320 char *info; 1321 uint16_t propid; 1322 int status; 1323 } u; 1324 }; 1325 typedef struct _PTPCanon_changes_entry PTPCanon_changes_entry; 1326 1327 typedef struct _PTPCanon_Property { 1328 uint32_t size; 1329 uint32_t proptype; 1330 unsigned char *data; 1331 1332 /* fill out for queries */ 1333 PTPDevicePropDesc dpd; 1334 } PTPCanon_Property; 1335 1336 typedef struct _PTPCanonEOSDeviceInfo { 1337 /* length */ 1338 uint32_t EventsSupported_len; 1339 uint32_t *EventsSupported; 1340 1341 uint32_t DevicePropertiesSupported_len; 1342 uint32_t *DevicePropertiesSupported; 1343 1344 uint32_t unk_len; 1345 uint32_t *unk; 1346 } PTPCanonEOSDeviceInfo; 1347 1348 /* DataType Codes */ 1349 1350 #define PTP_DTC_UNDEF 0x0000 1351 #define PTP_DTC_INT8 0x0001 1352 #define PTP_DTC_UINT8 0x0002 1353 #define PTP_DTC_INT16 0x0003 1354 #define PTP_DTC_UINT16 0x0004 1355 #define PTP_DTC_INT32 0x0005 1356 #define PTP_DTC_UINT32 0x0006 1357 #define PTP_DTC_INT64 0x0007 1358 #define PTP_DTC_UINT64 0x0008 1359 #define PTP_DTC_INT128 0x0009 1360 #define PTP_DTC_UINT128 0x000A 1361 1362 #define PTP_DTC_ARRAY_MASK 0x4000 1363 1364 #define PTP_DTC_AINT8 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT8) 1365 #define PTP_DTC_AUINT8 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT8) 1366 #define PTP_DTC_AINT16 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT16) 1367 #define PTP_DTC_AUINT16 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT16) 1368 #define PTP_DTC_AINT32 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT32) 1369 #define PTP_DTC_AUINT32 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT32) 1370 #define PTP_DTC_AINT64 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT64) 1371 #define PTP_DTC_AUINT64 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT64) 1372 #define PTP_DTC_AINT128 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT128) 1373 #define PTP_DTC_AUINT128 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT128) 1374 1375 #define PTP_DTC_STR 0xFFFF 1376 1377 /* Device Properties Codes */ 1378 1379 /* PTP v1.0 property codes */ 1380 #define PTP_DPC_Undefined 0x5000 1381 #define PTP_DPC_BatteryLevel 0x5001 1382 #define PTP_DPC_FunctionalMode 0x5002 1383 #define PTP_DPC_ImageSize 0x5003 1384 #define PTP_DPC_CompressionSetting 0x5004 1385 #define PTP_DPC_WhiteBalance 0x5005 1386 #define PTP_DPC_RGBGain 0x5006 1387 #define PTP_DPC_FNumber 0x5007 1388 #define PTP_DPC_FocalLength 0x5008 1389 #define PTP_DPC_FocusDistance 0x5009 1390 #define PTP_DPC_FocusMode 0x500A 1391 #define PTP_DPC_ExposureMeteringMode 0x500B 1392 #define PTP_DPC_FlashMode 0x500C 1393 #define PTP_DPC_ExposureTime 0x500D 1394 #define PTP_DPC_ExposureProgramMode 0x500E 1395 #define PTP_DPC_ExposureIndex 0x500F 1396 #define PTP_DPC_ExposureBiasCompensation 0x5010 1397 #define PTP_DPC_DateTime 0x5011 1398 #define PTP_DPC_CaptureDelay 0x5012 1399 #define PTP_DPC_StillCaptureMode 0x5013 1400 #define PTP_DPC_Contrast 0x5014 1401 #define PTP_DPC_Sharpness 0x5015 1402 #define PTP_DPC_DigitalZoom 0x5016 1403 #define PTP_DPC_EffectMode 0x5017 1404 #define PTP_DPC_BurstNumber 0x5018 1405 #define PTP_DPC_BurstInterval 0x5019 1406 #define PTP_DPC_TimelapseNumber 0x501A 1407 #define PTP_DPC_TimelapseInterval 0x501B 1408 #define PTP_DPC_FocusMeteringMode 0x501C 1409 #define PTP_DPC_UploadURL 0x501D 1410 #define PTP_DPC_Artist 0x501E 1411 #define PTP_DPC_CopyrightInfo 0x501F 1412 /* PTP v1.1 property codes */ 1413 #define PTP_DPC_SupportedStreams 0x5020 1414 #define PTP_DPC_EnabledStreams 0x5021 1415 #define PTP_DPC_VideoFormat 0x5022 1416 #define PTP_DPC_VideoResolution 0x5023 1417 #define PTP_DPC_VideoQuality 0x5024 1418 #define PTP_DPC_VideoFrameRate 0x5025 1419 #define PTP_DPC_VideoContrast 0x5026 1420 #define PTP_DPC_VideoBrightness 0x5027 1421 #define PTP_DPC_AudioFormat 0x5028 1422 #define PTP_DPC_AudioBitrate 0x5029 1423 #define PTP_DPC_AudioSamplingRate 0x502A 1424 #define PTP_DPC_AudioBitPerSample 0x502B 1425 #define PTP_DPC_AudioVolume 0x502C 1426 1427 /* Proprietary vendor extension device property mask */ 1428 #define PTP_DPC_EXTENSION_MASK 0xF000 1429 #define PTP_DPC_EXTENSION 0xD000 1430 1431 /* Zune extension device property codes */ 1432 #define PTP_DPC_MTP_ZUNE_UNKNOWN1 0xD181 1433 #define PTP_DPC_MTP_ZUNE_UNKNOWN2 0xD132 1434 #define PTP_DPC_MTP_ZUNE_UNKNOWN3 0xD215 1435 #define PTP_DPC_MTP_ZUNE_UNKNOWN4 0xD216 1436 1437 /* Eastman Kodak extension device property codes */ 1438 #define PTP_DPC_EK_ColorTemperature 0xD001 1439 #define PTP_DPC_EK_DateTimeStampFormat 0xD002 1440 #define PTP_DPC_EK_BeepMode 0xD003 1441 #define PTP_DPC_EK_VideoOut 0xD004 1442 #define PTP_DPC_EK_PowerSaving 0xD005 1443 #define PTP_DPC_EK_UI_Language 0xD006 1444 1445 /* Canon extension device property codes */ 1446 #define PTP_DPC_CANON_BeepMode 0xD001 1447 #define PTP_DPC_CANON_BatteryKind 0xD002 1448 #define PTP_DPC_CANON_BatteryStatus 0xD003 1449 #define PTP_DPC_CANON_UILockType 0xD004 1450 #define PTP_DPC_CANON_CameraMode 0xD005 1451 #define PTP_DPC_CANON_ImageQuality 0xD006 1452 #define PTP_DPC_CANON_FullViewFileFormat 0xD007 1453 #define PTP_DPC_CANON_ImageSize 0xD008 1454 #define PTP_DPC_CANON_SelfTime 0xD009 1455 #define PTP_DPC_CANON_FlashMode 0xD00A 1456 #define PTP_DPC_CANON_Beep 0xD00B 1457 #define PTP_DPC_CANON_ShootingMode 0xD00C 1458 #define PTP_DPC_CANON_ImageMode 0xD00D 1459 #define PTP_DPC_CANON_DriveMode 0xD00E 1460 #define PTP_DPC_CANON_EZoom 0xD00F 1461 #define PTP_DPC_CANON_MeteringMode 0xD010 1462 #define PTP_DPC_CANON_AFDistance 0xD011 1463 #define PTP_DPC_CANON_FocusingPoint 0xD012 1464 #define PTP_DPC_CANON_WhiteBalance 0xD013 1465 #define PTP_DPC_CANON_SlowShutterSetting 0xD014 1466 #define PTP_DPC_CANON_AFMode 0xD015 1467 #define PTP_DPC_CANON_ImageStabilization 0xD016 1468 #define PTP_DPC_CANON_Contrast 0xD017 1469 #define PTP_DPC_CANON_ColorGain 0xD018 1470 #define PTP_DPC_CANON_Sharpness 0xD019 1471 #define PTP_DPC_CANON_Sensitivity 0xD01A 1472 #define PTP_DPC_CANON_ParameterSet 0xD01B 1473 #define PTP_DPC_CANON_ISOSpeed 0xD01C 1474 #define PTP_DPC_CANON_Aperture 0xD01D 1475 #define PTP_DPC_CANON_ShutterSpeed 0xD01E 1476 #define PTP_DPC_CANON_ExpCompensation 0xD01F 1477 #define PTP_DPC_CANON_FlashCompensation 0xD020 1478 #define PTP_DPC_CANON_AEBExposureCompensation 0xD021 1479 #define PTP_DPC_CANON_AvOpen 0xD023 1480 #define PTP_DPC_CANON_AvMax 0xD024 1481 #define PTP_DPC_CANON_FocalLength 0xD025 1482 #define PTP_DPC_CANON_FocalLengthTele 0xD026 1483 #define PTP_DPC_CANON_FocalLengthWide 0xD027 1484 #define PTP_DPC_CANON_FocalLengthDenominator 0xD028 1485 #define PTP_DPC_CANON_CaptureTransferMode 0xD029 1486 #define CANON_TRANSFER_ENTIRE_IMAGE_TO_PC 0x0002 1487 #define CANON_TRANSFER_SAVE_THUMBNAIL_TO_DEVICE 0x0004 1488 #define CANON_TRANSFER_SAVE_IMAGE_TO_DEVICE 0x0008 1489 /* we use those values: */ 1490 #define CANON_TRANSFER_MEMORY (2|1) 1491 #define CANON_TRANSFER_CARD (8|4|1) 1492 1493 #define PTP_DPC_CANON_Zoom 0xD02A 1494 #define PTP_DPC_CANON_NamePrefix 0xD02B 1495 #define PTP_DPC_CANON_SizeQualityMode 0xD02C 1496 #define PTP_DPC_CANON_SupportedThumbSize 0xD02D 1497 #define PTP_DPC_CANON_SizeOfOutputDataFromCamera 0xD02E 1498 #define PTP_DPC_CANON_SizeOfInputDataToCamera 0xD02F 1499 #define PTP_DPC_CANON_RemoteAPIVersion 0xD030 1500 #define PTP_DPC_CANON_FirmwareVersion 0xD031 1501 #define PTP_DPC_CANON_CameraModel 0xD032 1502 #define PTP_DPC_CANON_CameraOwner 0xD033 1503 #define PTP_DPC_CANON_UnixTime 0xD034 1504 #define PTP_DPC_CANON_CameraBodyID 0xD035 1505 #define PTP_DPC_CANON_CameraOutput 0xD036 1506 #define PTP_DPC_CANON_DispAv 0xD037 1507 #define PTP_DPC_CANON_AvOpenApex 0xD038 1508 #define PTP_DPC_CANON_DZoomMagnification 0xD039 1509 #define PTP_DPC_CANON_MlSpotPos 0xD03A 1510 #define PTP_DPC_CANON_DispAvMax 0xD03B 1511 #define PTP_DPC_CANON_AvMaxApex 0xD03C 1512 #define PTP_DPC_CANON_EZoomStartPosition 0xD03D 1513 #define PTP_DPC_CANON_FocalLengthOfTele 0xD03E 1514 #define PTP_DPC_CANON_EZoomSizeOfTele 0xD03F 1515 #define PTP_DPC_CANON_PhotoEffect 0xD040 1516 #define PTP_DPC_CANON_AssistLight 0xD041 1517 #define PTP_DPC_CANON_FlashQuantityCount 0xD042 1518 #define PTP_DPC_CANON_RotationAngle 0xD043 1519 #define PTP_DPC_CANON_RotationScene 0xD044 1520 #define PTP_DPC_CANON_EventEmulateMode 0xD045 1521 #define PTP_DPC_CANON_DPOFVersion 0xD046 1522 #define PTP_DPC_CANON_TypeOfSupportedSlideShow 0xD047 1523 #define PTP_DPC_CANON_AverageFilesizes 0xD048 1524 #define PTP_DPC_CANON_ModelID 0xD049 1525 1526 /* From EOS 400D trace. */ 1527 #define PTP_DPC_CANON_EOS_Aperture 0xD101 1528 #define PTP_DPC_CANON_EOS_ShutterSpeed 0xD102 1529 #define PTP_DPC_CANON_EOS_ISOSpeed 0xD103 1530 #define PTP_DPC_CANON_EOS_ExpCompensation 0xD104 1531 #define PTP_DPC_CANON_EOS_AutoExposureMode 0xD105 1532 #define PTP_DPC_CANON_EOS_DriveMode 0xD106 1533 #define PTP_DPC_CANON_EOS_MeteringMode 0xD107 1534 #define PTP_DPC_CANON_EOS_FocusMode 0xD108 1535 #define PTP_DPC_CANON_EOS_WhiteBalance 0xD109 1536 #define PTP_DPC_CANON_EOS_ColorTemperature 0xD10A 1537 #define PTP_DPC_CANON_EOS_WhiteBalanceAdjustA 0xD10B 1538 #define PTP_DPC_CANON_EOS_WhiteBalanceAdjustB 0xD10C 1539 #define PTP_DPC_CANON_EOS_WhiteBalanceXA 0xD10D 1540 #define PTP_DPC_CANON_EOS_WhiteBalanceXB 0xD10E 1541 #define PTP_DPC_CANON_EOS_ColorSpace 0xD10F 1542 #define PTP_DPC_CANON_EOS_PictureStyle 0xD110 1543 #define PTP_DPC_CANON_EOS_BatteryPower 0xD111 1544 #define PTP_DPC_CANON_EOS_BatterySelect 0xD112 1545 #define PTP_DPC_CANON_EOS_CameraTime 0xD113 1546 #define PTP_DPC_CANON_EOS_AutoPowerOff 0xD114 1547 #define PTP_DPC_CANON_EOS_Owner 0xD115 1548 #define PTP_DPC_CANON_EOS_ModelID 0xD116 1549 #define PTP_DPC_CANON_EOS_PTPExtensionVersion 0xD119 1550 #define PTP_DPC_CANON_EOS_DPOFVersion 0xD11A 1551 #define PTP_DPC_CANON_EOS_AvailableShots 0xD11B 1552 #define PTP_CANON_EOS_CAPTUREDEST_HD 4 1553 #define PTP_DPC_CANON_EOS_CaptureDestination 0xD11C 1554 #define PTP_DPC_CANON_EOS_BracketMode 0xD11D 1555 #define PTP_DPC_CANON_EOS_CurrentStorage 0xD11E 1556 #define PTP_DPC_CANON_EOS_CurrentFolder 0xD11F 1557 #define PTP_DPC_CANON_EOS_ImageFormat 0xD120 /* file setting */ 1558 #define PTP_DPC_CANON_EOS_ImageFormatCF 0xD121 /* file setting CF */ 1559 #define PTP_DPC_CANON_EOS_ImageFormatSD 0xD122 /* file setting SD */ 1560 #define PTP_DPC_CANON_EOS_ImageFormatExtHD 0xD123 /* file setting exthd */ 1561 #define PTP_DPC_CANON_EOS_CompressionS 0xD130 1562 #define PTP_DPC_CANON_EOS_CompressionM1 0xD131 1563 #define PTP_DPC_CANON_EOS_CompressionM2 0xD132 1564 #define PTP_DPC_CANON_EOS_CompressionL 0xD133 1565 #define PTP_DPC_CANON_EOS_AEModeDial 0xD138 1566 #define PTP_DPC_CANON_EOS_AEModeCustom 0xD139 1567 #define PTP_DPC_CANON_EOS_MirrorUpSetting 0xD13A 1568 #define PTP_DPC_CANON_EOS_HighlightTonePriority 0xD13B 1569 #define PTP_DPC_CANON_EOS_AFSelectFocusArea 0xD13C 1570 #define PTP_DPC_CANON_EOS_HDRSetting 0xD13D 1571 #define PTP_DPC_CANON_EOS_PCWhiteBalance1 0xD140 1572 #define PTP_DPC_CANON_EOS_PCWhiteBalance2 0xD141 1573 #define PTP_DPC_CANON_EOS_PCWhiteBalance3 0xD142 1574 #define PTP_DPC_CANON_EOS_PCWhiteBalance4 0xD143 1575 #define PTP_DPC_CANON_EOS_PCWhiteBalance5 0xD144 1576 #define PTP_DPC_CANON_EOS_MWhiteBalance 0xD145 1577 #define PTP_DPC_CANON_EOS_MWhiteBalanceEx 0xD146 1578 #define PTP_DPC_CANON_EOS_UnknownPropD14D 0xD14D /*found in Canon EOS 5D M3*/ 1579 #define PTP_DPC_CANON_EOS_PictureStyleStandard 0xD150 1580 #define PTP_DPC_CANON_EOS_PictureStylePortrait 0xD151 1581 #define PTP_DPC_CANON_EOS_PictureStyleLandscape 0xD152 1582 #define PTP_DPC_CANON_EOS_PictureStyleNeutral 0xD153 1583 #define PTP_DPC_CANON_EOS_PictureStyleFaithful 0xD154 1584 #define PTP_DPC_CANON_EOS_PictureStyleBlackWhite 0xD155 1585 #define PTP_DPC_CANON_EOS_PictureStyleAuto 0xD156 1586 #define PTP_DPC_CANON_EOS_PictureStyleUserSet1 0xD160 1587 #define PTP_DPC_CANON_EOS_PictureStyleUserSet2 0xD161 1588 #define PTP_DPC_CANON_EOS_PictureStyleUserSet3 0xD162 1589 #define PTP_DPC_CANON_EOS_PictureStyleParam1 0xD170 1590 #define PTP_DPC_CANON_EOS_PictureStyleParam2 0xD171 1591 #define PTP_DPC_CANON_EOS_PictureStyleParam3 0xD172 1592 #define PTP_DPC_CANON_EOS_HighISOSettingNoiseReduction 0xD178 1593 #define PTP_DPC_CANON_EOS_MovieServoAF 0xD179 1594 #define PTP_DPC_CANON_EOS_ContinuousAFValid 0xD17A 1595 #define PTP_DPC_CANON_EOS_Attenuator 0xD17B 1596 #define PTP_DPC_CANON_EOS_UTCTime 0xD17C 1597 #define PTP_DPC_CANON_EOS_Timezone 0xD17D 1598 #define PTP_DPC_CANON_EOS_Summertime 0xD17E 1599 #define PTP_DPC_CANON_EOS_FlavorLUTParams 0xD17F 1600 #define PTP_DPC_CANON_EOS_CustomFunc1 0xD180 1601 #define PTP_DPC_CANON_EOS_CustomFunc2 0xD181 1602 #define PTP_DPC_CANON_EOS_CustomFunc3 0xD182 1603 #define PTP_DPC_CANON_EOS_CustomFunc4 0xD183 1604 #define PTP_DPC_CANON_EOS_CustomFunc5 0xD184 1605 #define PTP_DPC_CANON_EOS_CustomFunc6 0xD185 1606 #define PTP_DPC_CANON_EOS_CustomFunc7 0xD186 1607 #define PTP_DPC_CANON_EOS_CustomFunc8 0xD187 1608 #define PTP_DPC_CANON_EOS_CustomFunc9 0xD188 1609 #define PTP_DPC_CANON_EOS_CustomFunc10 0xD189 1610 #define PTP_DPC_CANON_EOS_CustomFunc11 0xD18a 1611 #define PTP_DPC_CANON_EOS_CustomFunc12 0xD18b 1612 #define PTP_DPC_CANON_EOS_CustomFunc13 0xD18c 1613 #define PTP_DPC_CANON_EOS_CustomFunc14 0xD18d 1614 #define PTP_DPC_CANON_EOS_CustomFunc15 0xD18e 1615 #define PTP_DPC_CANON_EOS_CustomFunc16 0xD18f 1616 #define PTP_DPC_CANON_EOS_CustomFunc17 0xD190 1617 #define PTP_DPC_CANON_EOS_CustomFunc18 0xD191 1618 #define PTP_DPC_CANON_EOS_CustomFunc19 0xD192 1619 #define PTP_DPC_CANON_EOS_CustomFunc19 0xD192 1620 #define PTP_DPC_CANON_EOS_InnerDevelop 0xD193 1621 #define PTP_DPC_CANON_EOS_MultiAspect 0xD194 1622 #define PTP_DPC_CANON_EOS_MovieSoundRecord 0xD195 1623 #define PTP_DPC_CANON_EOS_MovieRecordVolume 0xD196 1624 #define PTP_DPC_CANON_EOS_WindCut 0xD197 1625 #define PTP_DPC_CANON_EOS_ExtenderType 0xD198 1626 #define PTP_DPC_CANON_EOS_OLCInfoVersion 0xD199 1627 #define PTP_DPC_CANON_EOS_UnknownPropD19A 0xD19A /*found in Canon EOS 5D M3*/ 1628 #define PTP_DPC_CANON_EOS_UnknownPropD19C 0xD19C /*found in Canon EOS 5D M3*/ 1629 #define PTP_DPC_CANON_EOS_UnknownPropD19D 0xD19D /*found in Canon EOS 5D M3*/ 1630 #define PTP_DPC_CANON_EOS_CustomFuncEx 0xD1a0 1631 #define PTP_DPC_CANON_EOS_MyMenu 0xD1a1 1632 #define PTP_DPC_CANON_EOS_MyMenuList 0xD1a2 1633 #define PTP_DPC_CANON_EOS_WftStatus 0xD1a3 1634 #define PTP_DPC_CANON_EOS_WftInputTransmission 0xD1a4 1635 #define PTP_DPC_CANON_EOS_HDDirectoryStructure 0xD1a5 1636 #define PTP_DPC_CANON_EOS_BatteryInfo 0xD1a6 1637 #define PTP_DPC_CANON_EOS_AdapterInfo 0xD1a7 1638 #define PTP_DPC_CANON_EOS_LensStatus 0xD1a8 1639 #define PTP_DPC_CANON_EOS_QuickReviewTime 0xD1a9 1640 #define PTP_DPC_CANON_EOS_CardExtension 0xD1aa 1641 #define PTP_DPC_CANON_EOS_TempStatus 0xD1ab 1642 #define PTP_DPC_CANON_EOS_ShutterCounter 0xD1ac 1643 #define PTP_DPC_CANON_EOS_SpecialOption 0xD1ad 1644 #define PTP_DPC_CANON_EOS_PhotoStudioMode 0xD1ae 1645 #define PTP_DPC_CANON_EOS_SerialNumber 0xD1af 1646 #define PTP_DPC_CANON_EOS_EVFOutputDevice 0xD1b0 1647 #define PTP_DPC_CANON_EOS_EVFMode 0xD1b1 1648 #define PTP_DPC_CANON_EOS_DepthOfFieldPreview 0xD1b2 1649 #define PTP_DPC_CANON_EOS_EVFSharpness 0xD1b3 1650 #define PTP_DPC_CANON_EOS_EVFWBMode 0xD1b4 1651 #define PTP_DPC_CANON_EOS_EVFClickWBCoeffs 0xD1b5 1652 #define PTP_DPC_CANON_EOS_EVFColorTemp 0xD1b6 1653 #define PTP_DPC_CANON_EOS_ExposureSimMode 0xD1b7 1654 #define PTP_DPC_CANON_EOS_EVFRecordStatus 0xD1b8 1655 #define PTP_DPC_CANON_EOS_LvAfSystem 0xD1ba 1656 #define PTP_DPC_CANON_EOS_MovSize 0xD1bb 1657 #define PTP_DPC_CANON_EOS_LvViewTypeSelect 0xD1bc 1658 #define PTP_DPC_CANON_EOS_MirrorDownStatus 0xD1bd 1659 #define PTP_DPC_CANON_EOS_MovieParam 0xD1be 1660 #define PTP_DPC_CANON_EOS_MirrorLockupState 0xD1bf 1661 #define PTP_DPC_CANON_EOS_FlashChargingState 0xD1C0 1662 #define PTP_DPC_CANON_EOS_AloMode 0xD1C1 1663 #define PTP_DPC_CANON_EOS_FixedMovie 0xD1C2 1664 #define PTP_DPC_CANON_EOS_OneShotRawOn 0xD1C3 1665 #define PTP_DPC_CANON_EOS_ErrorForDisplay 0xD1C4 1666 #define PTP_DPC_CANON_EOS_AEModeMovie 0xD1C5 1667 #define PTP_DPC_CANON_EOS_BuiltinStroboMode 0xD1C6 1668 #define PTP_DPC_CANON_EOS_StroboDispState 0xD1C7 1669 #define PTP_DPC_CANON_EOS_StroboETTL2Metering 0xD1C8 1670 #define PTP_DPC_CANON_EOS_ContinousAFMode 0xD1C9 1671 #define PTP_DPC_CANON_EOS_MovieParam2 0xD1CA 1672 #define PTP_DPC_CANON_EOS_StroboSettingExpComposition 0xD1CB 1673 #define PTP_DPC_CANON_EOS_MovieParam3 0xD1CC 1674 #define PTP_DPC_CANON_EOS_LVMedicalRotate 0xD1CF 1675 #define PTP_DPC_CANON_EOS_Artist 0xD1d0 1676 #define PTP_DPC_CANON_EOS_Copyright 0xD1d1 1677 #define PTP_DPC_CANON_EOS_BracketValue 0xD1d2 1678 #define PTP_DPC_CANON_EOS_FocusInfoEx 0xD1d3 1679 #define PTP_DPC_CANON_EOS_DepthOfField 0xD1d4 1680 #define PTP_DPC_CANON_EOS_Brightness 0xD1d5 1681 #define PTP_DPC_CANON_EOS_LensAdjustParams 0xD1d6 1682 #define PTP_DPC_CANON_EOS_EFComp 0xD1d7 1683 #define PTP_DPC_CANON_EOS_LensName 0xD1d8 1684 #define PTP_DPC_CANON_EOS_AEB 0xD1d9 1685 #define PTP_DPC_CANON_EOS_StroboSetting 0xD1da 1686 #define PTP_DPC_CANON_EOS_StroboWirelessSetting 0xD1db 1687 #define PTP_DPC_CANON_EOS_StroboFiring 0xD1dc 1688 #define PTP_DPC_CANON_EOS_LensID 0xD1dd 1689 #define PTP_DPC_CANON_EOS_LCDBrightness 0xD1de 1690 #define PTP_DPC_CANON_EOS_CADarkBright 0xD1df 1691 1692 /* Nikon extension device property codes */ 1693 #define PTP_DPC_NIKON_ShootingBank 0xD010 1694 #define PTP_DPC_NIKON_ShootingBankNameA 0xD011 1695 #define PTP_DPC_NIKON_ShootingBankNameB 0xD012 1696 #define PTP_DPC_NIKON_ShootingBankNameC 0xD013 1697 #define PTP_DPC_NIKON_ShootingBankNameD 0xD014 1698 #define PTP_DPC_NIKON_ResetBank0 0xD015 1699 #define PTP_DPC_NIKON_RawCompression 0xD016 1700 #define PTP_DPC_NIKON_WhiteBalanceAutoBias 0xD017 1701 #define PTP_DPC_NIKON_WhiteBalanceTungstenBias 0xD018 1702 #define PTP_DPC_NIKON_WhiteBalanceFluorescentBias 0xD019 1703 #define PTP_DPC_NIKON_WhiteBalanceDaylightBias 0xD01A 1704 #define PTP_DPC_NIKON_WhiteBalanceFlashBias 0xD01B 1705 #define PTP_DPC_NIKON_WhiteBalanceCloudyBias 0xD01C 1706 #define PTP_DPC_NIKON_WhiteBalanceShadeBias 0xD01D 1707 #define PTP_DPC_NIKON_WhiteBalanceColorTemperature 0xD01E 1708 #define PTP_DPC_NIKON_WhiteBalancePresetNo 0xD01F 1709 #define PTP_DPC_NIKON_WhiteBalancePresetName0 0xD020 1710 #define PTP_DPC_NIKON_WhiteBalancePresetName1 0xD021 1711 #define PTP_DPC_NIKON_WhiteBalancePresetName2 0xD022 1712 #define PTP_DPC_NIKON_WhiteBalancePresetName3 0xD023 1713 #define PTP_DPC_NIKON_WhiteBalancePresetName4 0xD024 1714 #define PTP_DPC_NIKON_WhiteBalancePresetVal0 0xD025 1715 #define PTP_DPC_NIKON_WhiteBalancePresetVal1 0xD026 1716 #define PTP_DPC_NIKON_WhiteBalancePresetVal2 0xD027 1717 #define PTP_DPC_NIKON_WhiteBalancePresetVal3 0xD028 1718 #define PTP_DPC_NIKON_WhiteBalancePresetVal4 0xD029 1719 #define PTP_DPC_NIKON_ImageSharpening 0xD02A 1720 #define PTP_DPC_NIKON_ToneCompensation 0xD02B 1721 #define PTP_DPC_NIKON_ColorModel 0xD02C 1722 #define PTP_DPC_NIKON_HueAdjustment 0xD02D 1723 #define PTP_DPC_NIKON_NonCPULensDataFocalLength 0xD02E /* Set FMM Manual */ 1724 #define PTP_DPC_NIKON_NonCPULensDataMaximumAperture 0xD02F /* Set F0 Manual */ 1725 #define PTP_DPC_NIKON_ShootingMode 0xD030 1726 #define PTP_DPC_NIKON_JPEG_Compression_Policy 0xD031 1727 #define PTP_DPC_NIKON_ColorSpace 0xD032 1728 #define PTP_DPC_NIKON_AutoDXCrop 0xD033 1729 #define PTP_DPC_NIKON_FlickerReduction 0xD034 1730 #define PTP_DPC_NIKON_RemoteMode 0xD035 1731 #define PTP_DPC_NIKON_VideoMode 0xD036 1732 #define PTP_DPC_NIKON_EffectMode 0xD037 1733 #define PTP_DPC_NIKON_1_Mode 0xD038 1734 #define PTP_DPC_NIKON_CSMMenuBankSelect 0xD040 1735 #define PTP_DPC_NIKON_MenuBankNameA 0xD041 1736 #define PTP_DPC_NIKON_MenuBankNameB 0xD042 1737 #define PTP_DPC_NIKON_MenuBankNameC 0xD043 1738 #define PTP_DPC_NIKON_MenuBankNameD 0xD044 1739 #define PTP_DPC_NIKON_ResetBank 0xD045 1740 #define PTP_DPC_NIKON_A1AFCModePriority 0xD048 1741 #define PTP_DPC_NIKON_A2AFSModePriority 0xD049 1742 #define PTP_DPC_NIKON_A3GroupDynamicAF 0xD04A 1743 #define PTP_DPC_NIKON_A4AFActivation 0xD04B 1744 #define PTP_DPC_NIKON_FocusAreaIllumManualFocus 0xD04C 1745 #define PTP_DPC_NIKON_FocusAreaIllumContinuous 0xD04D 1746 #define PTP_DPC_NIKON_FocusAreaIllumWhenSelected 0xD04E 1747 #define PTP_DPC_NIKON_FocusAreaWrap 0xD04F /* area sel */ 1748 #define PTP_DPC_NIKON_VerticalAFON 0xD050 1749 #define PTP_DPC_NIKON_AFLockOn 0xD051 1750 #define PTP_DPC_NIKON_FocusAreaZone 0xD052 1751 #define PTP_DPC_NIKON_EnableCopyright 0xD053 1752 #define PTP_DPC_NIKON_ISOAuto 0xD054 1753 #define PTP_DPC_NIKON_EVISOStep 0xD055 1754 #define PTP_DPC_NIKON_EVStep 0xD056 /* EV Step SS FN */ 1755 #define PTP_DPC_NIKON_EVStepExposureComp 0xD057 1756 #define PTP_DPC_NIKON_ExposureCompensation 0xD058 1757 #define PTP_DPC_NIKON_CenterWeightArea 0xD059 1758 #define PTP_DPC_NIKON_ExposureBaseMatrix 0xD05A 1759 #define PTP_DPC_NIKON_ExposureBaseCenter 0xD05B 1760 #define PTP_DPC_NIKON_ExposureBaseSpot 0xD05C 1761 #define PTP_DPC_NIKON_LiveViewAFArea 0xD05D /* FIXME: AfAtLiveview? */ 1762 #define PTP_DPC_NIKON_AELockMode 0xD05E 1763 #define PTP_DPC_NIKON_AELAFLMode 0xD05F 1764 #define PTP_DPC_NIKON_LiveViewAFFocus 0xD061 1765 #define PTP_DPC_NIKON_MeterOff 0xD062 1766 #define PTP_DPC_NIKON_SelfTimer 0xD063 1767 #define PTP_DPC_NIKON_MonitorOff 0xD064 1768 #define PTP_DPC_NIKON_ImgConfTime 0xD065 1769 #define PTP_DPC_NIKON_AutoOffTimers 0xD066 1770 #define PTP_DPC_NIKON_AngleLevel 0xD067 1771 #define PTP_DPC_NIKON_D1ShootingSpeed 0xD068 /* continous speed low */ 1772 #define PTP_DPC_NIKON_D2MaximumShots 0xD069 1773 #define PTP_DPC_NIKON_ExposureDelayMode 0xD06A 1774 #define PTP_DPC_NIKON_LongExposureNoiseReduction 0xD06B 1775 #define PTP_DPC_NIKON_FileNumberSequence 0xD06C 1776 #define PTP_DPC_NIKON_ControlPanelFinderRearControl 0xD06D 1777 #define PTP_DPC_NIKON_ControlPanelFinderViewfinder 0xD06E 1778 #define PTP_DPC_NIKON_D7Illumination 0xD06F 1779 #define PTP_DPC_NIKON_NrHighISO 0xD070 1780 #define PTP_DPC_NIKON_SHSET_CH_GUID_DISP 0xD071 1781 #define PTP_DPC_NIKON_ArtistName 0xD072 1782 #define PTP_DPC_NIKON_CopyrightInfo 0xD073 1783 #define PTP_DPC_NIKON_FlashSyncSpeed 0xD074 1784 #define PTP_DPC_NIKON_FlashShutterSpeed 0xD075 /* SB Low Limit */ 1785 #define PTP_DPC_NIKON_E3AAFlashMode 0xD076 1786 #define PTP_DPC_NIKON_E4ModelingFlash 0xD077 1787 #define PTP_DPC_NIKON_BracketSet 0xD078 /* Bracket Type? */ 1788 #define PTP_DPC_NIKON_E6ManualModeBracketing 0xD079 /* Bracket Factor? */ 1789 #define PTP_DPC_NIKON_BracketOrder 0xD07A 1790 #define PTP_DPC_NIKON_E8AutoBracketSelection 0xD07B /* Bracket Method? */ 1791 #define PTP_DPC_NIKON_BracketingSet 0xD07C 1792 #define PTP_DPC_NIKON_F1CenterButtonShootingMode 0xD080 1793 #define PTP_DPC_NIKON_CenterButtonPlaybackMode 0xD081 1794 #define PTP_DPC_NIKON_F2Multiselector 0xD082 1795 #define PTP_DPC_NIKON_F3PhotoInfoPlayback 0xD083 /* MultiSelector Dir */ 1796 #define PTP_DPC_NIKON_F4AssignFuncButton 0xD084 /* CMD Dial Rotate */ 1797 #define PTP_DPC_NIKON_F5CustomizeCommDials 0xD085 /* CMD Dial Change */ 1798 #define PTP_DPC_NIKON_ReverseCommandDial 0xD086 /* CMD Dial FN Set */ 1799 #define PTP_DPC_NIKON_ApertureSetting 0xD087 /* CMD Dial Active */ 1800 #define PTP_DPC_NIKON_MenusAndPlayback 0xD088 /* CMD Dial Active */ 1801 #define PTP_DPC_NIKON_F6ButtonsAndDials 0xD089 /* Universal Mode? */ 1802 #define PTP_DPC_NIKON_NoCFCard 0xD08A /* Enable Shutter? */ 1803 #define PTP_DPC_NIKON_CenterButtonZoomRatio 0xD08B 1804 #define PTP_DPC_NIKON_FunctionButton2 0xD08C 1805 #define PTP_DPC_NIKON_AFAreaPoint 0xD08D 1806 #define PTP_DPC_NIKON_NormalAFOn 0xD08E 1807 #define PTP_DPC_NIKON_CleanImageSensor 0xD08F 1808 #define PTP_DPC_NIKON_ImageCommentString 0xD090 1809 #define PTP_DPC_NIKON_ImageCommentEnable 0xD091 1810 #define PTP_DPC_NIKON_ImageRotation 0xD092 1811 #define PTP_DPC_NIKON_ManualSetLensNo 0xD093 1812 #define PTP_DPC_NIKON_MovScreenSize 0xD0A0 1813 #define PTP_DPC_NIKON_MovVoice 0xD0A1 1814 #define PTP_DPC_NIKON_MovMicrophone 0xD0A2 1815 #define PTP_DPC_NIKON_MovFileSlot 0xD0A3 1816 #define PTP_DPC_NIKON_MovRecProhibitCondition 0xD0A4 1817 #define PTP_DPC_NIKON_ManualMovieSetting 0xD0A6 1818 #define PTP_DPC_NIKON_MovQuality 0xD0A7 1819 #define PTP_DPC_NIKON_LiveViewScreenDisplaySetting 0xD0B2 1820 #define PTP_DPC_NIKON_MonitorOffDelay 0xD0B3 1821 #define PTP_DPC_NIKON_Bracketing 0xD0C0 1822 #define PTP_DPC_NIKON_AutoExposureBracketStep 0xD0C1 1823 #define PTP_DPC_NIKON_AutoExposureBracketProgram 0xD0C2 1824 #define PTP_DPC_NIKON_AutoExposureBracketCount 0xD0C3 1825 #define PTP_DPC_NIKON_WhiteBalanceBracketStep 0xD0C4 1826 #define PTP_DPC_NIKON_WhiteBalanceBracketProgram 0xD0C5 1827 #define PTP_DPC_NIKON_LensID 0xD0E0 1828 #define PTP_DPC_NIKON_LensSort 0xD0E1 1829 #define PTP_DPC_NIKON_LensType 0xD0E2 1830 #define PTP_DPC_NIKON_FocalLengthMin 0xD0E3 1831 #define PTP_DPC_NIKON_FocalLengthMax 0xD0E4 1832 #define PTP_DPC_NIKON_MaxApAtMinFocalLength 0xD0E5 1833 #define PTP_DPC_NIKON_MaxApAtMaxFocalLength 0xD0E6 1834 #define PTP_DPC_NIKON_FinderISODisp 0xD0F0 1835 #define PTP_DPC_NIKON_AutoOffPhoto 0xD0F2 1836 #define PTP_DPC_NIKON_AutoOffMenu 0xD0F3 1837 #define PTP_DPC_NIKON_AutoOffInfo 0xD0F4 1838 #define PTP_DPC_NIKON_SelfTimerShootNum 0xD0F5 1839 #define PTP_DPC_NIKON_VignetteCtrl 0xD0F7 1840 #define PTP_DPC_NIKON_AutoDistortionControl 0xD0F8 1841 #define PTP_DPC_NIKON_SceneMode 0xD0F9 1842 #define PTP_DPC_NIKON_SceneMode2 0xD0FD 1843 #define PTP_DPC_NIKON_SelfTimerInterval 0xD0FE 1844 #define PTP_DPC_NIKON_ExposureTime 0xD100 /* Shutter Speed */ 1845 #define PTP_DPC_NIKON_ACPower 0xD101 1846 #define PTP_DPC_NIKON_WarningStatus 0xD102 1847 #define PTP_DPC_NIKON_MaximumShots 0xD103 /* remain shots (in RAM buffer?) */ 1848 #define PTP_DPC_NIKON_AFLockStatus 0xD104 1849 #define PTP_DPC_NIKON_AELockStatus 0xD105 1850 #define PTP_DPC_NIKON_FVLockStatus 0xD106 1851 #define PTP_DPC_NIKON_AutofocusLCDTopMode2 0xD107 1852 #define PTP_DPC_NIKON_AutofocusArea 0xD108 1853 #define PTP_DPC_NIKON_FlexibleProgram 0xD109 1854 #define PTP_DPC_NIKON_LightMeter 0xD10A /* Exposure Status */ 1855 #define PTP_DPC_NIKON_RecordingMedia 0xD10B /* Card or SDRAM */ 1856 #define PTP_DPC_NIKON_USBSpeed 0xD10C 1857 #define PTP_DPC_NIKON_CCDNumber 0xD10D 1858 #define PTP_DPC_NIKON_CameraOrientation 0xD10E 1859 #define PTP_DPC_NIKON_GroupPtnType 0xD10F 1860 #define PTP_DPC_NIKON_FNumberLock 0xD110 1861 #define PTP_DPC_NIKON_ExposureApertureLock 0xD111 /* shutterspeed lock*/ 1862 #define PTP_DPC_NIKON_TVLockSetting 0xD112 1863 #define PTP_DPC_NIKON_AVLockSetting 0xD113 1864 #define PTP_DPC_NIKON_IllumSetting 0xD114 1865 #define PTP_DPC_NIKON_FocusPointBright 0xD115 1866 #define PTP_DPC_NIKON_ExternalFlashAttached 0xD120 1867 #define PTP_DPC_NIKON_ExternalFlashStatus 0xD121 1868 #define PTP_DPC_NIKON_ExternalFlashSort 0xD122 1869 #define PTP_DPC_NIKON_ExternalFlashMode 0xD123 1870 #define PTP_DPC_NIKON_ExternalFlashCompensation 0xD124 1871 #define PTP_DPC_NIKON_NewExternalFlashMode 0xD125 1872 #define PTP_DPC_NIKON_FlashExposureCompensation 0xD126 1873 #define PTP_DPC_NIKON_HDRMode 0xD130 1874 #define PTP_DPC_NIKON_HDRHighDynamic 0xD131 1875 #define PTP_DPC_NIKON_HDRSmoothing 0xD132 1876 #define PTP_DPC_NIKON_OptimizeImage 0xD140 1877 #define PTP_DPC_NIKON_Saturation 0xD142 1878 #define PTP_DPC_NIKON_BW_FillerEffect 0xD143 1879 #define PTP_DPC_NIKON_BW_Sharpness 0xD144 1880 #define PTP_DPC_NIKON_BW_Contrast 0xD145 1881 #define PTP_DPC_NIKON_BW_Setting_Type 0xD146 1882 #define PTP_DPC_NIKON_Slot2SaveMode 0xD148 1883 #define PTP_DPC_NIKON_RawBitMode 0xD149 1884 #define PTP_DPC_NIKON_ActiveDLighting 0xD14E /* was PTP_DPC_NIKON_ISOAutoTime */ 1885 #define PTP_DPC_NIKON_FlourescentType 0xD14F 1886 #define PTP_DPC_NIKON_TuneColourTemperature 0xD150 1887 #define PTP_DPC_NIKON_TunePreset0 0xD151 1888 #define PTP_DPC_NIKON_TunePreset1 0xD152 1889 #define PTP_DPC_NIKON_TunePreset2 0xD153 1890 #define PTP_DPC_NIKON_TunePreset3 0xD154 1891 #define PTP_DPC_NIKON_TunePreset4 0xD155 1892 #define PTP_DPC_NIKON_BeepOff 0xD160 1893 #define PTP_DPC_NIKON_AutofocusMode 0xD161 1894 #define PTP_DPC_NIKON_AFAssist 0xD163 1895 #define PTP_DPC_NIKON_PADVPMode 0xD164 /* iso auto time */ 1896 #define PTP_DPC_NIKON_ImageReview 0xD165 1897 #define PTP_DPC_NIKON_AFAreaIllumination 0xD166 1898 #define PTP_DPC_NIKON_FlashMode 0xD167 1899 #define PTP_DPC_NIKON_FlashCommanderMode 0xD168 1900 #define PTP_DPC_NIKON_FlashSign 0xD169 1901 #define PTP_DPC_NIKON_ISO_Auto 0xD16A 1902 #define PTP_DPC_NIKON_RemoteTimeout 0xD16B 1903 #define PTP_DPC_NIKON_GridDisplay 0xD16C 1904 #define PTP_DPC_NIKON_FlashModeManualPower 0xD16D 1905 #define PTP_DPC_NIKON_FlashModeCommanderPower 0xD16E 1906 #define PTP_DPC_NIKON_AutoFP 0xD16F 1907 #define PTP_DPC_NIKON_DateImprintSetting 0xD170 1908 #define PTP_DPC_NIKON_DateCounterSelect 0xD171 1909 #define PTP_DPC_NIKON_DateCountData 0xD172 1910 #define PTP_DPC_NIKON_DateCountDisplaySetting 0xD173 1911 #define PTP_DPC_NIKON_RangeFinderSetting 0xD174 1912 #define PTP_DPC_NIKON_CSMMenu 0xD180 1913 #define PTP_DPC_NIKON_WarningDisplay 0xD181 1914 #define PTP_DPC_NIKON_BatteryCellKind 0xD182 1915 #define PTP_DPC_NIKON_ISOAutoHiLimit 0xD183 1916 #define PTP_DPC_NIKON_DynamicAFArea 0xD184 1917 #define PTP_DPC_NIKON_ContinuousSpeedHigh 0xD186 1918 #define PTP_DPC_NIKON_InfoDispSetting 0xD187 1919 #define PTP_DPC_NIKON_PreviewButton 0xD189 1920 #define PTP_DPC_NIKON_PreviewButton2 0xD18A 1921 #define PTP_DPC_NIKON_AEAFLockButton2 0xD18B 1922 #define PTP_DPC_NIKON_IndicatorDisp 0xD18D 1923 #define PTP_DPC_NIKON_CellKindPriority 0xD18E 1924 #define PTP_DPC_NIKON_BracketingFramesAndSteps 0xD190 1925 #define PTP_DPC_NIKON_LiveViewMode 0xD1A0 1926 #define PTP_DPC_NIKON_LiveViewDriveMode 0xD1A1 1927 #define PTP_DPC_NIKON_LiveViewStatus 0xD1A2 1928 #define PTP_DPC_NIKON_LiveViewImageZoomRatio 0xD1A3 1929 #define PTP_DPC_NIKON_LiveViewProhibitCondition 0xD1A4 1930 #define PTP_DPC_NIKON_MovieShutterSpeed 0xD1A8 1931 #define PTP_DPC_NIKON_MovieFNumber 0xD1A9 1932 #define PTP_DPC_NIKON_MovieISO 0xD1AA 1933 #define PTP_DPC_NIKON_LiveViewMovieMode 0xD1AC /* ? */ 1934 #define PTP_DPC_NIKON_ExposureDisplayStatus 0xD1B0 1935 #define PTP_DPC_NIKON_ExposureIndicateStatus 0xD1B1 1936 #define PTP_DPC_NIKON_InfoDispErrStatus 0xD1B2 1937 #define PTP_DPC_NIKON_ExposureIndicateLightup 0xD1B3 1938 #define PTP_DPC_NIKON_FlashOpen 0xD1C0 1939 #define PTP_DPC_NIKON_FlashCharged 0xD1C1 1940 #define PTP_DPC_NIKON_FlashMRepeatValue 0xD1D0 1941 #define PTP_DPC_NIKON_FlashMRepeatCount 0xD1D1 1942 #define PTP_DPC_NIKON_FlashMRepeatInterval 0xD1D2 1943 #define PTP_DPC_NIKON_FlashCommandChannel 0xD1D3 1944 #define PTP_DPC_NIKON_FlashCommandSelfMode 0xD1D4 1945 #define PTP_DPC_NIKON_FlashCommandSelfCompensation 0xD1D5 1946 #define PTP_DPC_NIKON_FlashCommandSelfValue 0xD1D6 1947 #define PTP_DPC_NIKON_FlashCommandAMode 0xD1D7 1948 #define PTP_DPC_NIKON_FlashCommandACompensation 0xD1D8 1949 #define PTP_DPC_NIKON_FlashCommandAValue 0xD1D9 1950 #define PTP_DPC_NIKON_FlashCommandBMode 0xD1DA 1951 #define PTP_DPC_NIKON_FlashCommandBCompensation 0xD1DB 1952 #define PTP_DPC_NIKON_FlashCommandBValue 0xD1DC 1953 #define PTP_DPC_NIKON_ApplicationMode 0xD1F0 1954 #define PTP_DPC_NIKON_ActiveSlot 0xD1F2 1955 #define PTP_DPC_NIKON_ActivePicCtrlItem 0xD200 1956 #define PTP_DPC_NIKON_ChangePicCtrlItem 0xD201 1957 #define PTP_DPC_NIKON_MovieNrHighISO 0xD236 1958 1959 1960 /* Nikon V1 (or WU adapter?) Trace */ 1961 /* d241 - gets string "Nikon_WU2_0090B5123C61" */ 1962 #define PTP_DPC_NIKON_D241 0xD241 1963 /* d244 - gets a single byte 0x00 */ 1964 #define PTP_DPC_NIKON_D244 0xD244 1965 /* d247 - gets 3 bytes 0x01 0x00 0x00 */ 1966 #define PTP_DPC_NIKON_D247 0xD247 1967 /* S9700 */ 1968 #define PTP_DPC_NIKON_GUID 0xD24F 1969 /* d250 - gets a string "0000123C61" */ 1970 #define PTP_DPC_NIKON_D250 0xD250 1971 /* d251 - gets a 0x0100000d */ 1972 #define PTP_DPC_NIKON_D251 0xD251 1973 1974 /* this is irregular, as it should be -0x5000 or 0xD000 based */ 1975 #define PTP_DPC_NIKON_1_ISO 0xF002 1976 #define PTP_DPC_NIKON_1_ImageCompression 0xF009 1977 #define PTP_DPC_NIKON_1_ImageSize 0xF00A 1978 #define PTP_DPC_NIKON_1_WhiteBalance 0xF00C 1979 #define PTP_DPC_NIKON_1_LongExposureNoiseReduction 0xF00D 1980 #define PTP_DPC_NIKON_1_HiISONoiseReduction 0xF00E 1981 #define PTP_DPC_NIKON_1_ActiveDLighting 0xF00F 1982 #define PTP_DPC_NIKON_1_MovQuality 0xF01C 1983 1984 /* Fuji specific */ 1985 #define PTP_DPC_FUJI_ColorTemperature 0xD017 1986 #define PTP_DPC_FUJI_Quality 0xD018 1987 #define PTP_DPC_FUJI_ReleaseMode 0xD201 1988 #define PTP_DPC_FUJI_FocusAreas 0xD206 1989 #define PTP_DPC_FUJI_AELock 0xD213 1990 #define PTP_DPC_FUJI_Aperture 0xD218 1991 #define PTP_DPC_FUJI_ShutterSpeed 0xD219 1992 1993 /* Microsoft/MTP specific */ 1994 #define PTP_DPC_MTP_SecureTime 0xD101 1995 #define PTP_DPC_MTP_DeviceCertificate 0xD102 1996 #define PTP_DPC_MTP_RevocationInfo 0xD103 1997 #define PTP_DPC_MTP_SynchronizationPartner 0xD401 1998 #define PTP_DPC_MTP_DeviceFriendlyName 0xD402 1999 #define PTP_DPC_MTP_VolumeLevel 0xD403 2000 #define PTP_DPC_MTP_DeviceIcon 0xD405 2001 #define PTP_DPC_MTP_SessionInitiatorInfo 0xD406 2002 #define PTP_DPC_MTP_PerceivedDeviceType 0xD407 2003 #define PTP_DPC_MTP_PlaybackRate 0xD410 2004 #define PTP_DPC_MTP_PlaybackObject 0xD411 2005 #define PTP_DPC_MTP_PlaybackContainerIndex 0xD412 2006 #define PTP_DPC_MTP_PlaybackPosition 0xD413 2007 #define PTP_DPC_MTP_PlaysForSureID 0xD131 2008 2009 /* Zune specific property codes */ 2010 #define PTP_DPC_MTP_Zune_UnknownVersion 0xD181 2011 2012 /* Olympus */ 2013 #define PTP_DPC_OLYMPUS_ResolutionMode 0xD102 2014 #define PTP_DPC_OLYMPUS_FocusPriority 0xD103 2015 #define PTP_DPC_OLYMPUS_DriveMode 0xD104 2016 #define PTP_DPC_OLYMPUS_DateTimeFormat 0xD105 2017 #define PTP_DPC_OLYMPUS_ExposureBiasStep 0xD106 2018 #define PTP_DPC_OLYMPUS_WBMode 0xD107 2019 #define PTP_DPC_OLYMPUS_OneTouchWB 0xD108 2020 #define PTP_DPC_OLYMPUS_ManualWB 0xD109 2021 #define PTP_DPC_OLYMPUS_ManualWBRBBias 0xD10A 2022 #define PTP_DPC_OLYMPUS_CustomWB 0xD10B 2023 #define PTP_DPC_OLYMPUS_CustomWBValue 0xD10C 2024 #define PTP_DPC_OLYMPUS_ExposureTimeEx 0xD10D 2025 #define PTP_DPC_OLYMPUS_BulbMode 0xD10E 2026 #define PTP_DPC_OLYMPUS_AntiMirrorMode 0xD10F 2027 #define PTP_DPC_OLYMPUS_AEBracketingFrame 0xD110 2028 #define PTP_DPC_OLYMPUS_AEBracketingStep 0xD111 2029 #define PTP_DPC_OLYMPUS_WBBracketingFrame 0xD112 2030 #define PTP_DPC_OLYMPUS_WBBracketingRBFrame 0xD112 /* dup ? */ 2031 #define PTP_DPC_OLYMPUS_WBBracketingRBRange 0xD113 2032 #define PTP_DPC_OLYMPUS_WBBracketingGMFrame 0xD114 2033 #define PTP_DPC_OLYMPUS_WBBracketingGMRange 0xD115 2034 #define PTP_DPC_OLYMPUS_FLBracketingFrame 0xD118 2035 #define PTP_DPC_OLYMPUS_FLBracketingStep 0xD119 2036 #define PTP_DPC_OLYMPUS_FlashBiasCompensation 0xD11A 2037 #define PTP_DPC_OLYMPUS_ManualFocusMode 0xD11B 2038 #define PTP_DPC_OLYMPUS_RawSaveMode 0xD11D 2039 #define PTP_DPC_OLYMPUS_AUXLightMode 0xD11E 2040 #define PTP_DPC_OLYMPUS_LensSinkMode 0xD11F 2041 #define PTP_DPC_OLYMPUS_BeepStatus 0xD120 2042 #define PTP_DPC_OLYMPUS_ColorSpace 0xD122 2043 #define PTP_DPC_OLYMPUS_ColorMatching 0xD123 2044 #define PTP_DPC_OLYMPUS_Saturation 0xD124 2045 #define PTP_DPC_OLYMPUS_NoiseReductionPattern 0xD126 2046 #define PTP_DPC_OLYMPUS_NoiseReductionRandom 0xD127 2047 #define PTP_DPC_OLYMPUS_ShadingMode 0xD129 2048 #define PTP_DPC_OLYMPUS_ISOBoostMode 0xD12A 2049 #define PTP_DPC_OLYMPUS_ExposureIndexBiasStep 0xD12B 2050 #define PTP_DPC_OLYMPUS_FilterEffect 0xD12C 2051 #define PTP_DPC_OLYMPUS_ColorTune 0xD12D 2052 #define PTP_DPC_OLYMPUS_Language 0xD12E 2053 #define PTP_DPC_OLYMPUS_LanguageCode 0xD12F 2054 #define PTP_DPC_OLYMPUS_RecviewMode 0xD130 2055 #define PTP_DPC_OLYMPUS_SleepTime 0xD131 2056 #define PTP_DPC_OLYMPUS_ManualWBGMBias 0xD132 2057 #define PTP_DPC_OLYMPUS_AELAFLMode 0xD135 2058 #define PTP_DPC_OLYMPUS_AELButtonStatus 0xD136 2059 #define PTP_DPC_OLYMPUS_CompressionSettingEx 0xD137 2060 #define PTP_DPC_OLYMPUS_ToneMode 0xD139 2061 #define PTP_DPC_OLYMPUS_GradationMode 0xD13A 2062 #define PTP_DPC_OLYMPUS_DevelopMode 0xD13B 2063 #define PTP_DPC_OLYMPUS_ExtendInnerFlashMode 0xD13C 2064 #define PTP_DPC_OLYMPUS_OutputDeviceMode 0xD13D 2065 #define PTP_DPC_OLYMPUS_LiveViewMode 0xD13E 2066 #define PTP_DPC_OLYMPUS_LCDBacklight 0xD140 2067 #define PTP_DPC_OLYMPUS_CustomDevelop 0xD141 2068 #define PTP_DPC_OLYMPUS_GradationAutoBias 0xD142 2069 #define PTP_DPC_OLYMPUS_FlashRCMode 0xD143 2070 #define PTP_DPC_OLYMPUS_FlashRCGroupValue 0xD144 2071 #define PTP_DPC_OLYMPUS_FlashRCChannelValue 0xD145 2072 #define PTP_DPC_OLYMPUS_FlashRCFPMode 0xD146 2073 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicMode 0xD147 2074 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicBias 0xD148 2075 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicManualBias 0xD149 2076 #define PTP_DPC_OLYMPUS_FlashRCQuantityLightLevel 0xD14A 2077 #define PTP_DPC_OLYMPUS_FocusMeteringValue 0xD14B 2078 #define PTP_DPC_OLYMPUS_ISOBracketingFrame 0xD14C 2079 #define PTP_DPC_OLYMPUS_ISOBracketingStep 0xD14D 2080 #define PTP_DPC_OLYMPUS_BulbMFMode 0xD14E 2081 #define PTP_DPC_OLYMPUS_BurstFPSValue 0xD14F 2082 #define PTP_DPC_OLYMPUS_ISOAutoBaseValue 0xD150 2083 #define PTP_DPC_OLYMPUS_ISOAutoMaxValue 0xD151 2084 #define PTP_DPC_OLYMPUS_BulbLimiterValue 0xD152 2085 #define PTP_DPC_OLYMPUS_DPIMode 0xD153 2086 #define PTP_DPC_OLYMPUS_DPICustomValue 0xD154 2087 #define PTP_DPC_OLYMPUS_ResolutionValueSetting 0xD155 2088 #define PTP_DPC_OLYMPUS_AFTargetSize 0xD157 2089 #define PTP_DPC_OLYMPUS_LightSensorMode 0xD158 2090 #define PTP_DPC_OLYMPUS_AEBracket 0xD159 2091 #define PTP_DPC_OLYMPUS_WBRBBracket 0xD15A 2092 #define PTP_DPC_OLYMPUS_WBGMBracket 0xD15B 2093 #define PTP_DPC_OLYMPUS_FlashBracket 0xD15C 2094 #define PTP_DPC_OLYMPUS_ISOBracket 0xD15D 2095 #define PTP_DPC_OLYMPUS_MyModeStatus 0xD15E 2096 2097 /* Sony A900 */ 2098 #define PTP_DPC_SONY_DPCCompensation 0xD200 2099 #define PTP_DPC_SONY_DRangeOptimize 0xD201 2100 #define PTP_DPC_SONY_ImageSize 0xD203 2101 #define PTP_DPC_SONY_ShutterSpeed 0xD20D 2102 #define PTP_DPC_SONY_ColorTemp 0xD20F 2103 #define PTP_DPC_SONY_CCFilter 0xD210 2104 #define PTP_DPC_SONY_AspectRatio 0xD211 2105 #define PTP_DPC_SONY_FocusFound 0xD213 /* seems to be signaled (1->2) when focus is achieved */ 2106 #define PTP_DPC_SONY_ObjectInMemory 0xD215 /* used to signal when to retrieve new object */ 2107 #define PTP_DPC_SONY_ExposeIndex 0xD216 2108 #define PTP_DPC_SONY_BatteryLevel 0xD218 2109 #define PTP_DPC_SONY_PictureEffect 0xD21B 2110 #define PTP_DPC_SONY_ABFilter 0xD21C 2111 #define PTP_DPC_SONY_ISO 0xD21E /* ? */ 2112 #define PTP_DPC_SONY_AutoFocus 0xD2C1 /* ? half-press */ 2113 #define PTP_DPC_SONY_Capture 0xD2C2 /* ? full-press */ 2114 /* also seen: D2C3 D2C4 */ 2115 /* semi control opcodes */ 2116 #define PTP_DPC_SONY_Movie 0xD2C8 /* ? */ 2117 #define PTP_DPC_SONY_StillImage 0xD2C7 /* ? */ 2118 2119 2120 2121 /* Casio EX-F1 */ 2122 #define PTP_DPC_CASIO_MONITOR 0xD001 2123 #define PTP_DPC_CASIO_STORAGE 0xD002 //Not reported by DeviceInfo? 2124 #define PTP_DPC_CASIO_UNKNOWN_1 0xD004 2125 #define PTP_DPC_CASIO_UNKNOWN_2 0xD005 2126 #define PTP_DPC_CASIO_UNKNOWN_3 0xD007 2127 #define PTP_DPC_CASIO_RECORD_LIGHT 0xD008 2128 #define PTP_DPC_CASIO_UNKNOWN_4 0xD009 2129 #define PTP_DPC_CASIO_UNKNOWN_5 0xD00A 2130 #define PTP_DPC_CASIO_MOVIE_MODE 0xD00B 2131 #define PTP_DPC_CASIO_HD_SETTING 0xD00C 2132 #define PTP_DPC_CASIO_HS_SETTING 0xD00D 2133 #define PTP_DPC_CASIO_CS_HIGH_SPEED 0xD00F 2134 #define PTP_DPC_CASIO_CS_UPPER_LIMIT 0xD010 2135 #define PTP_DPC_CASIO_CS_SHOT 0xD011 2136 #define PTP_DPC_CASIO_UNKNOWN_6 0xD012 2137 #define PTP_DPC_CASIO_UNKNOWN_7 0xD013 2138 #define PTP_DPC_CASIO_UNKNOWN_8 0xD015 2139 #define PTP_DPC_CASIO_UNKNOWN_9 0xD017 2140 #define PTP_DPC_CASIO_UNKNOWN_10 0xD018 2141 #define PTP_DPC_CASIO_UNKNOWN_11 0xD019 2142 #define PTP_DPC_CASIO_UNKNOWN_12 0xD01A 2143 #define PTP_DPC_CASIO_UNKNOWN_13 0xD01B 2144 #define PTP_DPC_CASIO_UNKNOWN_14 0xD01C 2145 #define PTP_DPC_CASIO_UNKNOWN_15 0xD01D 2146 #define PTP_DPC_CASIO_UNKNOWN_16 0xD020 2147 #define PTP_DPC_CASIO_UNKNOWN_17 0xD030 2148 #define PTP_DPC_CASIO_UNKNOWN_18 0xD080 2149 2150 #define PTP_DPC_RICOH_ShutterSpeed 0xD00F 2151 2152 /* https://github.com/Parrot-Developers/sequoia-ptpy */ 2153 #define PTP_DPC_PARROT_PhotoSensorEnableMask 0xD201 2154 #define PTP_DPC_PARROT_PhotoSensorsKeepOn 0xD202 2155 #define PTP_DPC_PARROT_MultispectralImageSize 0xD203 2156 #define PTP_DPC_PARROT_MainBitDepth 0xD204 2157 #define PTP_DPC_PARROT_MultispectralBitDepth 0xD205 2158 #define PTP_DPC_PARROT_HeatingEnable 0xD206 2159 #define PTP_DPC_PARROT_WifiStatus 0xD207 2160 #define PTP_DPC_PARROT_WifiSSID 0xD208 2161 #define PTP_DPC_PARROT_WifiEncryptionType 0xD209 2162 #define PTP_DPC_PARROT_WifiPassphrase 0xD20A 2163 #define PTP_DPC_PARROT_WifiChannel 0xD20B 2164 #define PTP_DPC_PARROT_Localization 0xD20C 2165 #define PTP_DPC_PARROT_WifiMode 0xD20D 2166 #define PTP_DPC_PARROT_AntiFlickeringFrequency 0xD210 2167 #define PTP_DPC_PARROT_DisplayOverlayMask 0xD211 2168 #define PTP_DPC_PARROT_GPSInterval 0xD212 2169 #define PTP_DPC_PARROT_MultisensorsExposureMeteringMode 0xD213 2170 #define PTP_DPC_PARROT_MultisensorsExposureTime 0xD214 2171 #define PTP_DPC_PARROT_MultisensorsExposureProgramMode 0xD215 2172 #define PTP_DPC_PARROT_MultisensorsExposureIndex 0xD216 2173 #define PTP_DPC_PARROT_MultisensorsIrradianceGain 0xD217 2174 #define PTP_DPC_PARROT_MultisensorsIrradianceIntegrationTime 0xD218 2175 #define PTP_DPC_PARROT_OverlapRate 0xD219 2176 2177 2178 /* MTP specific Object Properties */ 2179 #define PTP_OPC_StorageID 0xDC01 2180 #define PTP_OPC_ObjectFormat 0xDC02 2181 #define PTP_OPC_ProtectionStatus 0xDC03 2182 #define PTP_OPC_ObjectSize 0xDC04 2183 #define PTP_OPC_AssociationType 0xDC05 2184 #define PTP_OPC_AssociationDesc 0xDC06 2185 #define PTP_OPC_ObjectFileName 0xDC07 2186 #define PTP_OPC_DateCreated 0xDC08 2187 #define PTP_OPC_DateModified 0xDC09 2188 #define PTP_OPC_Keywords 0xDC0A 2189 #define PTP_OPC_ParentObject 0xDC0B 2190 #define PTP_OPC_AllowedFolderContents 0xDC0C 2191 #define PTP_OPC_Hidden 0xDC0D 2192 #define PTP_OPC_SystemObject 0xDC0E 2193 #define PTP_OPC_PersistantUniqueObjectIdentifier 0xDC41 2194 #define PTP_OPC_SyncID 0xDC42 2195 #define PTP_OPC_PropertyBag 0xDC43 2196 #define PTP_OPC_Name 0xDC44 2197 #define PTP_OPC_CreatedBy 0xDC45 2198 #define PTP_OPC_Artist 0xDC46 2199 #define PTP_OPC_DateAuthored 0xDC47 2200 #define PTP_OPC_Description 0xDC48 2201 #define PTP_OPC_URLReference 0xDC49 2202 #define PTP_OPC_LanguageLocale 0xDC4A 2203 #define PTP_OPC_CopyrightInformation 0xDC4B 2204 #define PTP_OPC_Source 0xDC4C 2205 #define PTP_OPC_OriginLocation 0xDC4D 2206 #define PTP_OPC_DateAdded 0xDC4E 2207 #define PTP_OPC_NonConsumable 0xDC4F 2208 #define PTP_OPC_CorruptOrUnplayable 0xDC50 2209 #define PTP_OPC_ProducerSerialNumber 0xDC51 2210 #define PTP_OPC_RepresentativeSampleFormat 0xDC81 2211 #define PTP_OPC_RepresentativeSampleSize 0xDC82 2212 #define PTP_OPC_RepresentativeSampleHeight 0xDC83 2213 #define PTP_OPC_RepresentativeSampleWidth 0xDC84 2214 #define PTP_OPC_RepresentativeSampleDuration 0xDC85 2215 #define PTP_OPC_RepresentativeSampleData 0xDC86 2216 #define PTP_OPC_Width 0xDC87 2217 #define PTP_OPC_Height 0xDC88 2218 #define PTP_OPC_Duration 0xDC89 2219 #define PTP_OPC_Rating 0xDC8A 2220 #define PTP_OPC_Track 0xDC8B 2221 #define PTP_OPC_Genre 0xDC8C 2222 #define PTP_OPC_Credits 0xDC8D 2223 #define PTP_OPC_Lyrics 0xDC8E 2224 #define PTP_OPC_SubscriptionContentID 0xDC8F 2225 #define PTP_OPC_ProducedBy 0xDC90 2226 #define PTP_OPC_UseCount 0xDC91 2227 #define PTP_OPC_SkipCount 0xDC92 2228 #define PTP_OPC_LastAccessed 0xDC93 2229 #define PTP_OPC_ParentalRating 0xDC94 2230 #define PTP_OPC_MetaGenre 0xDC95 2231 #define PTP_OPC_Composer 0xDC96 2232 #define PTP_OPC_EffectiveRating 0xDC97 2233 #define PTP_OPC_Subtitle 0xDC98 2234 #define PTP_OPC_OriginalReleaseDate 0xDC99 2235 #define PTP_OPC_AlbumName 0xDC9A 2236 #define PTP_OPC_AlbumArtist 0xDC9B 2237 #define PTP_OPC_Mood 0xDC9C 2238 #define PTP_OPC_DRMStatus 0xDC9D 2239 #define PTP_OPC_SubDescription 0xDC9E 2240 #define PTP_OPC_IsCropped 0xDCD1 2241 #define PTP_OPC_IsColorCorrected 0xDCD2 2242 #define PTP_OPC_ImageBitDepth 0xDCD3 2243 #define PTP_OPC_Fnumber 0xDCD4 2244 #define PTP_OPC_ExposureTime 0xDCD5 2245 #define PTP_OPC_ExposureIndex 0xDCD6 2246 #define PTP_OPC_DisplayName 0xDCE0 2247 #define PTP_OPC_BodyText 0xDCE1 2248 #define PTP_OPC_Subject 0xDCE2 2249 #define PTP_OPC_Priority 0xDCE3 2250 #define PTP_OPC_GivenName 0xDD00 2251 #define PTP_OPC_MiddleNames 0xDD01 2252 #define PTP_OPC_FamilyName 0xDD02 2253 #define PTP_OPC_Prefix 0xDD03 2254 #define PTP_OPC_Suffix 0xDD04 2255 #define PTP_OPC_PhoneticGivenName 0xDD05 2256 #define PTP_OPC_PhoneticFamilyName 0xDD06 2257 #define PTP_OPC_EmailPrimary 0xDD07 2258 #define PTP_OPC_EmailPersonal1 0xDD08 2259 #define PTP_OPC_EmailPersonal2 0xDD09 2260 #define PTP_OPC_EmailBusiness1 0xDD0A 2261 #define PTP_OPC_EmailBusiness2 0xDD0B 2262 #define PTP_OPC_EmailOthers 0xDD0C 2263 #define PTP_OPC_PhoneNumberPrimary 0xDD0D 2264 #define PTP_OPC_PhoneNumberPersonal 0xDD0E 2265 #define PTP_OPC_PhoneNumberPersonal2 0xDD0F 2266 #define PTP_OPC_PhoneNumberBusiness 0xDD10 2267 #define PTP_OPC_PhoneNumberBusiness2 0xDD11 2268 #define PTP_OPC_PhoneNumberMobile 0xDD12 2269 #define PTP_OPC_PhoneNumberMobile2 0xDD13 2270 #define PTP_OPC_FaxNumberPrimary 0xDD14 2271 #define PTP_OPC_FaxNumberPersonal 0xDD15 2272 #define PTP_OPC_FaxNumberBusiness 0xDD16 2273 #define PTP_OPC_PagerNumber 0xDD17 2274 #define PTP_OPC_PhoneNumberOthers 0xDD18 2275 #define PTP_OPC_PrimaryWebAddress 0xDD19 2276 #define PTP_OPC_PersonalWebAddress 0xDD1A 2277 #define PTP_OPC_BusinessWebAddress 0xDD1B 2278 #define PTP_OPC_InstantMessengerAddress 0xDD1C 2279 #define PTP_OPC_InstantMessengerAddress2 0xDD1D 2280 #define PTP_OPC_InstantMessengerAddress3 0xDD1E 2281 #define PTP_OPC_PostalAddressPersonalFull 0xDD1F 2282 #define PTP_OPC_PostalAddressPersonalFullLine1 0xDD20 2283 #define PTP_OPC_PostalAddressPersonalFullLine2 0xDD21 2284 #define PTP_OPC_PostalAddressPersonalFullCity 0xDD22 2285 #define PTP_OPC_PostalAddressPersonalFullRegion 0xDD23 2286 #define PTP_OPC_PostalAddressPersonalFullPostalCode 0xDD24 2287 #define PTP_OPC_PostalAddressPersonalFullCountry 0xDD25 2288 #define PTP_OPC_PostalAddressBusinessFull 0xDD26 2289 #define PTP_OPC_PostalAddressBusinessLine1 0xDD27 2290 #define PTP_OPC_PostalAddressBusinessLine2 0xDD28 2291 #define PTP_OPC_PostalAddressBusinessCity 0xDD29 2292 #define PTP_OPC_PostalAddressBusinessRegion 0xDD2A 2293 #define PTP_OPC_PostalAddressBusinessPostalCode 0xDD2B 2294 #define PTP_OPC_PostalAddressBusinessCountry 0xDD2C 2295 #define PTP_OPC_PostalAddressOtherFull 0xDD2D 2296 #define PTP_OPC_PostalAddressOtherLine1 0xDD2E 2297 #define PTP_OPC_PostalAddressOtherLine2 0xDD2F 2298 #define PTP_OPC_PostalAddressOtherCity 0xDD30 2299 #define PTP_OPC_PostalAddressOtherRegion 0xDD31 2300 #define PTP_OPC_PostalAddressOtherPostalCode 0xDD32 2301 #define PTP_OPC_PostalAddressOtherCountry 0xDD33 2302 #define PTP_OPC_OrganizationName 0xDD34 2303 #define PTP_OPC_PhoneticOrganizationName 0xDD35 2304 #define PTP_OPC_Role 0xDD36 2305 #define PTP_OPC_Birthdate 0xDD37 2306 #define PTP_OPC_MessageTo 0xDD40 2307 #define PTP_OPC_MessageCC 0xDD41 2308 #define PTP_OPC_MessageBCC 0xDD42 2309 #define PTP_OPC_MessageRead 0xDD43 2310 #define PTP_OPC_MessageReceivedTime 0xDD44 2311 #define PTP_OPC_MessageSender 0xDD45 2312 #define PTP_OPC_ActivityBeginTime 0xDD50 2313 #define PTP_OPC_ActivityEndTime 0xDD51 2314 #define PTP_OPC_ActivityLocation 0xDD52 2315 #define PTP_OPC_ActivityRequiredAttendees 0xDD54 2316 #define PTP_OPC_ActivityOptionalAttendees 0xDD55 2317 #define PTP_OPC_ActivityResources 0xDD56 2318 #define PTP_OPC_ActivityAccepted 0xDD57 2319 #define PTP_OPC_Owner 0xDD5D 2320 #define PTP_OPC_Editor 0xDD5E 2321 #define PTP_OPC_Webmaster 0xDD5F 2322 #define PTP_OPC_URLSource 0xDD60 2323 #define PTP_OPC_URLDestination 0xDD61 2324 #define PTP_OPC_TimeBookmark 0xDD62 2325 #define PTP_OPC_ObjectBookmark 0xDD63 2326 #define PTP_OPC_ByteBookmark 0xDD64 2327 #define PTP_OPC_LastBuildDate 0xDD70 2328 #define PTP_OPC_TimetoLive 0xDD71 2329 #define PTP_OPC_MediaGUID 0xDD72 2330 #define PTP_OPC_TotalBitRate 0xDE91 2331 #define PTP_OPC_BitRateType 0xDE92 2332 #define PTP_OPC_SampleRate 0xDE93 2333 #define PTP_OPC_NumberOfChannels 0xDE94 2334 #define PTP_OPC_AudioBitDepth 0xDE95 2335 #define PTP_OPC_ScanDepth 0xDE97 2336 #define PTP_OPC_AudioWAVECodec 0xDE99 2337 #define PTP_OPC_AudioBitRate 0xDE9A 2338 #define PTP_OPC_VideoFourCCCodec 0xDE9B 2339 #define PTP_OPC_VideoBitRate 0xDE9C 2340 #define PTP_OPC_FramesPerThousandSeconds 0xDE9D 2341 #define PTP_OPC_KeyFrameDistance 0xDE9E 2342 #define PTP_OPC_BufferSize 0xDE9F 2343 #define PTP_OPC_EncodingQuality 0xDEA0 2344 #define PTP_OPC_EncodingProfile 0xDEA1 2345 #define PTP_OPC_BuyFlag 0xD901 2346 2347 /* WiFi Provisioning MTP Extension property codes */ 2348 #define PTP_OPC_WirelessConfigurationFile 0xB104 2349 2350 /* Device Property Form Flag */ 2351 2352 #define PTP_DPFF_None 0x00 2353 #define PTP_DPFF_Range 0x01 2354 #define PTP_DPFF_Enumeration 0x02 2355 2356 /* Object Property Codes used by MTP (first 3 are same as DPFF codes) */ 2357 #define PTP_OPFF_None 0x00 2358 #define PTP_OPFF_Range 0x01 2359 #define PTP_OPFF_Enumeration 0x02 2360 #define PTP_OPFF_DateTime 0x03 2361 #define PTP_OPFF_FixedLengthArray 0x04 2362 #define PTP_OPFF_RegularExpression 0x05 2363 #define PTP_OPFF_ByteArray 0x06 2364 #define PTP_OPFF_LongString 0xFF 2365 2366 /* Device Property GetSet type */ 2367 #define PTP_DPGS_Get 0x00 2368 #define PTP_DPGS_GetSet 0x01 2369 2370 /* Glue stuff starts here */ 2371 2372 typedef struct _PTPParams PTPParams; 2373 2374 2375 typedef uint16_t (* PTPDataGetFunc) (PTPParams* params, void*priv, 2376 unsigned long wantlen, 2377 unsigned char *data, unsigned long *gotlen); 2378 2379 typedef uint16_t (* PTPDataPutFunc) (PTPParams* params, void*priv, 2380 unsigned long sendlen, 2381 unsigned char *data); 2382 typedef struct _PTPDataHandler { 2383 PTPDataGetFunc getfunc; 2384 PTPDataPutFunc putfunc; 2385 void *priv; 2386 } PTPDataHandler; 2387 2388 /* 2389 * This functions take PTP oriented arguments and send them over an 2390 * appropriate data layer doing byteorder conversion accordingly. 2391 */ 2392 typedef uint16_t (* PTPIOSendReq) (PTPParams* params, PTPContainer* req, int dataphase); 2393 typedef uint16_t (* PTPIOSendData) (PTPParams* params, PTPContainer* ptp, 2394 uint64_t size, PTPDataHandler*getter); 2395 2396 typedef uint16_t (* PTPIOGetResp) (PTPParams* params, PTPContainer* resp); 2397 typedef uint16_t (* PTPIOGetData) (PTPParams* params, PTPContainer* ptp, 2398 PTPDataHandler *putter); 2399 typedef uint16_t (* PTPIOCancelReq) (PTPParams* params, uint32_t transaction_id); 2400 2401 /* debug functions */ 2402 typedef void (* PTPErrorFunc) (void *data, const char *format, va_list args) 2403 #if (__GNUC__ >= 3) 2404 __attribute__((__format__(printf,2,0))) 2405 #endif 2406 ; 2407 typedef void (* PTPDebugFunc) (void *data, const char *format, va_list args) 2408 #if (__GNUC__ >= 3) 2409 __attribute__((__format__(printf,2,0))) 2410 #endif 2411 ; 2412 2413 struct _PTPObject { 2414 uint32_t oid; 2415 unsigned int flags; 2416 #define PTPOBJECT_OBJECTINFO_LOADED (1<<0) 2417 #define PTPOBJECT_CANONFLAGS_LOADED (1<<1) 2418 #define PTPOBJECT_MTPPROPLIST_LOADED (1<<2) 2419 #define PTPOBJECT_DIRECTORY_LOADED (1<<3) 2420 #define PTPOBJECT_PARENTOBJECT_LOADED (1<<4) 2421 #define PTPOBJECT_STORAGEID_LOADED (1<<5) 2422 2423 PTPObjectInfo oi; 2424 uint32_t canon_flags; 2425 MTPProperties *mtpprops; 2426 unsigned int nrofmtpprops; 2427 }; 2428 typedef struct _PTPObject PTPObject; 2429 2430 /* The Device Property Cache */ 2431 struct _PTPDeviceProperty { 2432 time_t timestamp; 2433 PTPDevicePropDesc desc; 2434 PTPPropertyValue value; 2435 }; 2436 typedef struct _PTPDeviceProperty PTPDeviceProperty; 2437 2438 /* Transaction data phase description, internal flags to sendreq / transaction driver. */ 2439 #define PTP_DP_NODATA 0x0000 /* no data phase */ 2440 #define PTP_DP_SENDDATA 0x0001 /* sending data */ 2441 #define PTP_DP_GETDATA 0x0002 /* receiving data */ 2442 #define PTP_DP_DATA_MASK 0x00ff /* data phase mask */ 2443 2444 struct _PTPParams { 2445 /* device flags */ 2446 uint32_t device_flags; 2447 2448 /* data layer byteorder */ 2449 uint8_t byteorder; 2450 uint16_t maxpacketsize; 2451 2452 /* PTP IO: Custom IO functions */ 2453 PTPIOSendReq sendreq_func; 2454 PTPIOSendData senddata_func; 2455 PTPIOGetResp getresp_func; 2456 PTPIOGetData getdata_func; 2457 PTPIOGetResp event_check; 2458 PTPIOGetResp event_check_queue; 2459 PTPIOGetResp event_wait; 2460 PTPIOCancelReq cancelreq_func; 2461 2462 /* Custom error and debug function */ 2463 PTPErrorFunc error_func; 2464 PTPDebugFunc debug_func; 2465 2466 /* Data passed to above functions */ 2467 void *data; 2468 2469 /* ptp transaction ID */ 2470 uint32_t transaction_id; 2471 /* ptp session ID */ 2472 uint32_t session_id; 2473 2474 /* used for open capture */ 2475 uint32_t opencapture_transid; 2476 2477 /* PTP IO: if we have MTP style split header/data transfers */ 2478 int split_header_data; 2479 int ocs64; /* 64bit objectsize */ 2480 2481 /* PTP: internal structures used by ptp driver */ 2482 PTPObject *objects; 2483 unsigned int nrofobjects; 2484 2485 PTPDeviceInfo deviceinfo; 2486 2487 /* PTP: the current event queue */ 2488 PTPContainer *events; 2489 int nrofevents; 2490 2491 /* live view enabled */ 2492 int inliveview; 2493 2494 /* PTP: caching time for properties, default 2 */ 2495 int cachetime; 2496 2497 /* PTP: Storage Caching */ 2498 PTPStorageIDs storageids; 2499 int storagechanged; 2500 2501 /* PTP: Device Property Caching */ 2502 PTPDeviceProperty *deviceproperties; 2503 unsigned int nrofdeviceproperties; 2504 2505 /* PTP: Canon specific flags list */ 2506 PTPCanon_Property *canon_props; 2507 unsigned int nrofcanon_props; 2508 int canon_viewfinder_on; 2509 int canon_event_mode; 2510 2511 /* PTP: Canon EOS event queue */ 2512 PTPCanon_changes_entry *backlogentries; 2513 unsigned int nrofbacklogentries; 2514 int eos_captureenabled; 2515 int eos_camerastatus; 2516 2517 /* PTP: Nikon specifics */ 2518 int controlmode; 2519 int event90c7works; 2520 int deletesdramfails; 2521 2522 /* PTP: Wifi profiles */ 2523 uint8_t wifi_profiles_version; 2524 uint8_t wifi_profiles_number; 2525 PTPNIKONWifiProfile *wifi_profiles; 2526 2527 /* IO: PTP/IP related data */ 2528 int cmdfd, evtfd; 2529 uint8_t cameraguid[16]; 2530 uint32_t eventpipeid; 2531 char *cameraname; 2532 2533 /* Olympus UMS wrapping related data */ 2534 PTPDeviceInfo outer_deviceinfo; 2535 char *olympus_cmd; 2536 char *olympus_reply; 2537 struct _PTPParams *outer_params; 2538 2539 #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) 2540 /* PTP: iconv converters */ 2541 iconv_t cd_locale_to_ucs2; 2542 iconv_t cd_ucs2_to_locale; 2543 #endif 2544 2545 /* IO: Sometimes the response packet get send in the dataphase 2546 * too. This only happens for a Samsung player now. 2547 */ 2548 uint8_t *response_packet; 2549 uint16_t response_packet_size; 2550 }; 2551 2552 /* Asynchronous event callback */ 2553 typedef void (*PTPEventCbFn)(PTPParams *params, uint16_t code, PTPContainer *event, void *user_data); 2554 2555 /* last, but not least - ptp functions */ 2556 uint16_t ptp_usb_sendreq (PTPParams* params, PTPContainer* req, int dataphase); 2557 uint16_t ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, 2558 uint64_t size, PTPDataHandler *handler); 2559 uint16_t ptp_usb_getresp (PTPParams* params, PTPContainer* resp); 2560 uint16_t ptp_usb_getdata (PTPParams* params, PTPContainer* ptp, 2561 PTPDataHandler *handler); 2562 uint16_t ptp_usb_event_async (PTPParams *params, PTPEventCbFn cb, void *user_data); 2563 uint16_t ptp_usb_event_wait (PTPParams* params, PTPContainer* event); 2564 uint16_t ptp_usb_event_check (PTPParams* params, PTPContainer* event); 2565 uint16_t ptp_usb_event_check_queue (PTPParams* params, PTPContainer* event); 2566 2567 uint16_t ptp_usb_control_get_extended_event_data (PTPParams *params, char *buffer, int *size); 2568 uint16_t ptp_usb_control_device_reset_request (PTPParams *params); 2569 uint16_t ptp_usb_control_get_device_status (PTPParams *params, char *buffer, int *size); 2570 uint16_t ptp_usb_control_cancel_request (PTPParams *params, uint32_t transid); 2571 2572 2573 int ptp_ptpip_connect (PTPParams* params, const char *port); 2574 uint16_t ptp_ptpip_sendreq (PTPParams* params, PTPContainer* req, int dataphase); 2575 uint16_t ptp_ptpip_senddata (PTPParams* params, PTPContainer* ptp, 2576 uint64_t size, PTPDataHandler *handler); 2577 uint16_t ptp_ptpip_getresp (PTPParams* params, PTPContainer* resp); 2578 uint16_t ptp_ptpip_getdata (PTPParams* params, PTPContainer* ptp, 2579 PTPDataHandler *handler); 2580 uint16_t ptp_ptpip_event_wait (PTPParams* params, PTPContainer* event); 2581 uint16_t ptp_ptpip_event_check (PTPParams* params, PTPContainer* event); 2582 uint16_t ptp_ptpip_event_check_queue (PTPParams* params, PTPContainer* event); 2583 2584 uint16_t ptp_getdeviceinfo (PTPParams* params, PTPDeviceInfo* deviceinfo); 2585 2586 uint16_t ptp_generic_no_data (PTPParams* params, uint16_t opcode, unsigned int cnt, ...); 2587 2588 uint16_t ptp_opensession (PTPParams *params, uint32_t session); 2589 2590 uint16_t ptp_transaction_new (PTPParams* params, PTPContainer* ptp, 2591 uint16_t flags, uint64_t sendlen, 2592 PTPDataHandler *handler 2593 ); 2594 uint16_t ptp_transaction (PTPParams* params, PTPContainer* ptp, 2595 uint16_t flags, uint64_t sendlen, 2596 unsigned char **data, unsigned int *recvlen 2597 ); 2598 2599 /** 2600 * ptp_closesession: 2601 * params: PTPParams* 2602 * 2603 * Closes session. 2604 * 2605 * Return values: Some PTP_RC_* code. 2606 **/ 2607 #define ptp_closesession(params) ptp_generic_no_data(params,PTP_OC_CloseSession,0) 2608 2609 /** 2610 * ptp_powerdown: 2611 * params: PTPParams* 2612 * 2613 * Powers down device. 2614 * 2615 * Return values: Some PTP_RC_* code. 2616 **/ 2617 #define ptp_powerdown(params) ptp_generic_no_data(params,PTP_OC_PowerDown,0) 2618 /** 2619 * ptp_resetdevice: 2620 * params: PTPParams* 2621 * 2622 * Uses the built-in function to reset the device 2623 * 2624 * Return values: Some PTP_RC_* code. 2625 * 2626 */ 2627 #define ptp_resetdevice(params) ptp_generic_no_data(params,PTP_OC_ResetDevice,0) 2628 2629 uint16_t ptp_getstorageids (PTPParams* params, PTPStorageIDs* storageids); 2630 uint16_t ptp_getstorageinfo (PTPParams* params, uint32_t storageid, 2631 PTPStorageInfo* storageinfo); 2632 /** 2633 * ptp_formatstore: 2634 * params: PTPParams* 2635 * storageid - StorageID 2636 * 2637 * Formats the storage on the device. 2638 * 2639 * Return values: Some PTP_RC_* code. 2640 **/ 2641 #define ptp_formatstore(params,storageid) ptp_generic_no_data(params,PTP_OC_FormatStore,1,storageid) 2642 2643 uint16_t ptp_getobjecthandles (PTPParams* params, uint32_t storage, 2644 uint32_t objectformatcode, 2645 uint32_t associationOH, 2646 PTPObjectHandles* objecthandles); 2647 2648 2649 uint16_t ptp_getnumobjects (PTPParams* params, uint32_t storage, 2650 uint32_t objectformatcode, 2651 uint32_t associationOH, 2652 uint32_t* numobs); 2653 2654 uint16_t ptp_getobjectinfo (PTPParams *params, uint32_t handle, 2655 PTPObjectInfo* objectinfo); 2656 2657 uint16_t ptp_getobject (PTPParams *params, uint32_t handle, 2658 unsigned char** object); 2659 uint16_t ptp_getobject_with_size (PTPParams *params, uint32_t handle, 2660 unsigned char** object, unsigned int *size); 2661 uint16_t ptp_getobject_tofd (PTPParams* params, uint32_t handle, int fd); 2662 uint16_t ptp_getobject_to_handler (PTPParams* params, uint32_t handle, PTPDataHandler*); 2663 uint16_t ptp_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset, 2664 uint32_t maxbytes, unsigned char** object, 2665 uint32_t *len); 2666 uint16_t ptp_getpartialobject_to_handler (PTPParams* params, uint32_t handle, uint32_t offset, 2667 uint32_t maxbytes, PTPDataHandler *handler); 2668 2669 uint16_t ptp_getthumb (PTPParams *params, uint32_t handle, 2670 unsigned char** object, unsigned int *len); 2671 2672 uint16_t ptp_deleteobject (PTPParams* params, uint32_t handle, 2673 uint32_t ofc); 2674 2675 uint16_t ptp_sendobjectinfo (PTPParams* params, uint32_t* store, 2676 uint32_t* parenthandle, uint32_t* handle, 2677 PTPObjectInfo* objectinfo); 2678 /** 2679 * ptp_setobjectprotection: 2680 * params: PTPParams* 2681 * uint16_t newprot - object protection flag 2682 * 2683 * Set protection of object. 2684 * 2685 * Return values: Some PTP_RC_* code. 2686 * 2687 */ 2688 #define ptp_setobjectprotection(params,oid,newprot) ptp_generic_no_data(params,PTP_OC_SetObjectProtection,2,oid,newprot) 2689 uint16_t ptp_sendobject (PTPParams* params, unsigned char* object, 2690 uint64_t size); 2691 uint16_t ptp_sendobject_fromfd (PTPParams* params, int fd, uint64_t size); 2692 uint16_t ptp_sendobject_from_handler (PTPParams* params, PTPDataHandler*, uint64_t size); 2693 /** 2694 * ptp_initiatecapture: 2695 * params: PTPParams* 2696 * storageid - destination StorageID on Responder 2697 * ofc - object format code 2698 * 2699 * Causes device to initiate the capture of one or more new data objects 2700 * according to its current device properties, storing the data into store 2701 * indicated by storageid. If storageid is 0x00000000, the object(s) will 2702 * be stored in a store that is determined by the capturing device. 2703 * The capturing of new data objects is an asynchronous operation. 2704 * 2705 * Return values: Some PTP_RC_* code. 2706 **/ 2707 #define ptp_initiatecapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateCapture,2,storageid,ofc) 2708 2709 #define ptp_initiateopencapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateOpenCapture,2,storageid,ofc) 2710 #define ptp_terminateopencapture(params,transid) ptp_generic_no_data(params,PTP_OC_TerminateOpenCapture,1,transid) 2711 2712 uint16_t ptp_getdevicepropdesc (PTPParams* params, uint16_t propcode, 2713 PTPDevicePropDesc *devicepropertydesc); 2714 uint16_t ptp_generic_getdevicepropdesc (PTPParams *params, uint16_t propcode, 2715 PTPDevicePropDesc *dpd); 2716 uint16_t ptp_getdevicepropvalue (PTPParams* params, uint16_t propcode, 2717 PTPPropertyValue* value, uint16_t datatype); 2718 uint16_t ptp_setdevicepropvalue (PTPParams* params, uint16_t propcode, 2719 PTPPropertyValue* value, uint16_t datatype); 2720 uint16_t ptp_generic_setdevicepropvalue (PTPParams* params, uint16_t propcode, 2721 PTPPropertyValue* value, uint16_t datatype); 2722 uint16_t ptp_getfilesystemmanifest (PTPParams* params, uint32_t storage, 2723 uint32_t objectformatcode, uint32_t associationOH, 2724 unsigned char** data); 2725 2726 2727 2728 uint16_t ptp_check_event (PTPParams *params); 2729 uint16_t ptp_check_event_queue (PTPParams *params); 2730 uint16_t ptp_wait_event (PTPParams *params); 2731 uint16_t ptp_add_event (PTPParams *params, PTPContainer *evt); 2732 int ptp_get_one_event (PTPParams *params, PTPContainer *evt); 2733 uint16_t ptp_check_eos_events (PTPParams *params); 2734 int ptp_get_one_eos_event (PTPParams *params, PTPCanon_changes_entry *entry); 2735 2736 2737 /* Microsoft MTP extensions */ 2738 uint16_t ptp_mtp_getobjectpropdesc (PTPParams* params, uint16_t opc, uint16_t ofc, 2739 PTPObjectPropDesc *objectpropertydesc); 2740 uint16_t ptp_mtp_getobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc, 2741 PTPPropertyValue *value, uint16_t datatype); 2742 uint16_t ptp_mtp_setobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc, 2743 PTPPropertyValue *value, uint16_t datatype); 2744 uint16_t ptp_mtp_getobjectreferences (PTPParams* params, uint32_t handle, uint32_t** ohArray, uint32_t* arraylen); 2745 uint16_t ptp_mtp_setobjectreferences (PTPParams* params, uint32_t handle, uint32_t* ohArray, uint32_t arraylen); 2746 uint16_t ptp_mtp_getobjectproplist (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops); 2747 uint16_t ptp_mtp_getobjectproplist_single (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops); 2748 uint16_t ptp_mtp_sendobjectproplist (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, 2749 uint16_t objecttype, uint64_t objectsize, MTPProperties *props, int nrofprops); 2750 uint16_t ptp_mtp_setobjectproplist (PTPParams* params, MTPProperties *props, int nrofprops); 2751 2752 /* Microsoft MTPZ (Zune) extensions */ 2753 uint16_t ptp_mtpz_sendwmdrmpdapprequest (PTPParams*, unsigned char *, uint32_t); 2754 #define ptp_mtpz_resethandshake(params) ptp_generic_no_data(params, PTP_OC_MTP_WMDRMPD_EndTrustedAppSession, 0) 2755 uint16_t ptp_mtpz_getwmdrmpdappresponse (PTPParams*, unsigned char **, uint32_t*); 2756 #define ptp_mtpz_wmdrmpd_enabletrustedfilesoperations(params,hash1,hash2,hash3,hash4) \ 2757 ptp_generic_no_data(params, PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations, 4,\ 2758 hash1, hash2, hash3, hash4) 2759 2760 /* Eastman Kodak extensions */ 2761 uint16_t ptp_ek_9007 (PTPParams* params, unsigned char **serial, unsigned int *size); 2762 uint16_t ptp_ek_9009 (PTPParams* params, uint32_t*, uint32_t*); 2763 uint16_t ptp_ek_900c (PTPParams* params, unsigned char **serial, unsigned int *size); 2764 uint16_t ptp_ek_getserial (PTPParams* params, unsigned char **serial, unsigned int *size); 2765 uint16_t ptp_ek_setserial (PTPParams* params, unsigned char *serial, unsigned int size); 2766 uint16_t ptp_ek_settext (PTPParams* params, PTPEKTextParams *text); 2767 uint16_t ptp_ek_sendfileobjectinfo (PTPParams* params, uint32_t* store, 2768 uint32_t* parenthandle, uint32_t* handle, 2769 PTPObjectInfo* objectinfo); 2770 uint16_t ptp_ek_sendfileobject (PTPParams* params, unsigned char* object, 2771 uint32_t size); 2772 uint16_t ptp_ek_sendfileobject_from_handler (PTPParams* params, PTPDataHandler*, 2773 uint32_t size); 2774 2775 /* Canon PTP extensions */ 2776 #define ptp_canon_9012(params) ptp_generic_no_data(params,0x9012,0) 2777 uint16_t ptp_canon_gettreeinfo (PTPParams* params, uint32_t* out); 2778 uint16_t ptp_canon_gettreesize (PTPParams* params, PTPCanon_directtransfer_entry**, unsigned int*cnt); 2779 uint16_t ptp_canon_getpartialobjectinfo (PTPParams* params, uint32_t handle, 2780 uint32_t p2, uint32_t* size, uint32_t* rp2); 2781 2782 uint16_t ptp_canon_get_mac_address (PTPParams* params, unsigned char **mac); 2783 /** 2784 * ptp_canon_startshootingmode: 2785 * params: PTPParams* 2786 * 2787 * Starts shooting session. It emits a StorageInfoChanged 2788 * event via the interrupt pipe and pushes the StorageInfoChanged 2789 * and CANON_CameraModeChange events onto the event stack 2790 * (see operation PTP_OC_CANON_CheckEvent). 2791 * 2792 * Return values: Some PTP_RC_* code. 2793 * 2794 **/ 2795 #define ptp_canon_startshootingmode(params) ptp_generic_no_data(params,PTP_OC_CANON_InitiateReleaseControl,0) 2796 /** 2797 * ptp_canon_endshootingmode: 2798 * params: PTPParams* 2799 * 2800 * This operation is observed after pressing the Disconnect 2801 * button on the Remote Capture app. It emits a StorageInfoChanged 2802 * event via the interrupt pipe and pushes the StorageInfoChanged 2803 * and CANON_CameraModeChange events onto the event stack 2804 * (see operation PTP_OC_CANON_CheckEvent). 2805 * 2806 * Return values: Some PTP_RC_* code. 2807 * 2808 **/ 2809 #define ptp_canon_endshootingmode(params) ptp_generic_no_data(params,PTP_OC_CANON_TerminateReleaseControl,0) 2810 /** 2811 * ptp_canon_viewfinderon: 2812 * params: PTPParams* 2813 * 2814 * Prior to start reading viewfinder images, one must call this operation. 2815 * Supposedly, this operation affects the value of the CANON_ViewfinderMode 2816 * property. 2817 * 2818 * Return values: Some PTP_RC_* code. 2819 * 2820 **/ 2821 #define ptp_canon_viewfinderon(params) ptp_generic_no_data(params,PTP_OC_CANON_ViewfinderOn,0) 2822 /** 2823 * ptp_canon_viewfinderoff: 2824 * params: PTPParams* 2825 * 2826 * Before changing the shooting mode, or when one doesn't need to read 2827 * viewfinder images any more, one must call this operation. 2828 * Supposedly, this operation affects the value of the CANON_ViewfinderMode 2829 * property. 2830 * 2831 * Return values: Some PTP_RC_* code. 2832 * 2833 **/ 2834 #define ptp_canon_viewfinderoff(params) ptp_generic_no_data(params,PTP_OC_CANON_ViewfinderOff,0) 2835 /** 2836 * ptp_canon_reset_aeafawb: 2837 * params: PTPParams* 2838 * uint32_t flags - what shall be reset. 2839 * 1 - autoexposure 2840 * 2 - autofocus 2841 * 4 - autowhitebalance 2842 * 2843 * Called "Reset AeAfAwb" (auto exposure, focus, white balance) 2844 * 2845 * Return values: Some PTP_RC_* code. 2846 **/ 2847 #define PTP_CANON_RESET_AE 0x1 2848 #define PTP_CANON_RESET_AF 0x2 2849 #define PTP_CANON_RESET_AWB 0x4 2850 #define ptp_canon_reset_aeafawb(params,flags) ptp_generic_no_data(params,PTP_OC_CANON_DoAeAfAwb,1,flags) 2851 uint16_t ptp_canon_checkevent (PTPParams* params, 2852 PTPContainer* event, int* isevent); 2853 /** 2854 * ptp_canon_focuslock: 2855 * 2856 * This operation locks the focus. It is followed by the CANON_GetChanges(?) 2857 * operation in the log. 2858 * It affects the CANON_MacroMode property. 2859 * 2860 * params: PTPParams* 2861 * 2862 * Return values: Some PTP_RC_* code. 2863 * 2864 **/ 2865 #define ptp_canon_focuslock(params) ptp_generic_no_data(params,PTP_OC_CANON_FocusLock,0) 2866 /** 2867 * ptp_canon_focusunlock: 2868 * 2869 * This operation unlocks the focus. It is followed by the CANON_GetChanges(?) 2870 * operation in the log. 2871 * It sets the CANON_MacroMode property value to 1 (where it occurs in the log). 2872 * 2873 * params: PTPParams* 2874 * 2875 * Return values: Some PTP_RC_* code. 2876 * 2877 **/ 2878 #define ptp_canon_focusunlock(params) ptp_generic_no_data(params,PTP_OC_CANON_FocusUnlock,0) 2879 /** 2880 * ptp_canon_keepdeviceon: 2881 * 2882 * This operation sends a "ping" style message to the camera. 2883 * 2884 * params: PTPParams* 2885 * 2886 * Return values: Some PTP_RC_* code. 2887 * 2888 **/ 2889 #define ptp_canon_keepdeviceon(params) ptp_generic_no_data(params,PTP_OC_CANON_KeepDeviceOn,0) 2890 /** 2891 * ptp_canon_eos_keepdeviceon: 2892 * 2893 * This operation sends a "ping" style message to the camera. 2894 * 2895 * params: PTPParams* 2896 * 2897 * Return values: Some PTP_RC_* code. 2898 * 2899 **/ 2900 #define ptp_canon_eos_keepdeviceon(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_KeepDeviceOn,0) 2901 /** 2902 * ptp_canon_initiatecaptureinmemory: 2903 * 2904 * This operation starts the image capture according to the current camera 2905 * settings. When the capture has happened, the camera emits a CaptureComplete 2906 * event via the interrupt pipe and pushes the CANON_RequestObjectTransfer, 2907 * CANON_DeviceInfoChanged and CaptureComplete events onto the event stack 2908 * (see operation CANON_CheckEvent). From the CANON_RequestObjectTransfer 2909 * event's parameter one can learn the just captured image's ObjectHandle. 2910 * The image is stored in the camera's own RAM. 2911 * On the next capture the image will be overwritten! 2912 * 2913 * params: PTPParams* 2914 * 2915 * Return values: Some PTP_RC_* code. 2916 * 2917 **/ 2918 #define ptp_canon_initiatecaptureinmemory(params) ptp_generic_no_data(params,PTP_OC_CANON_InitiateCaptureInMemory,0) 2919 /** 2920 * ptp_canon_eos_requestdevicepropvalue: 2921 * 2922 * This operation sends a "ping" style message to the camera. 2923 * 2924 * params: PTPParams* 2925 * 2926 * Return values: Some PTP_RC_* code. 2927 * 2928 **/ 2929 #define CANON_EOS_OLC_BUTTON 0x0001 2930 #define CANON_EOS_OLC_SHUTTERSPEED 0x0002 2931 #define CANON_EOS_OLC_APERTURE 0x0004 2932 #define CANON_EOS_OLC_ISO 0x0008 2933 2934 #define ptp_canon_eos_setrequestolcinfogroup(params,igmask) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRequestOLCInfoGroup,1,igmask) 2935 #define ptp_canon_eos_requestdevicepropvalue(params,prop) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RequestDevicePropValue,1,prop) 2936 uint16_t ptp_canon_eos_capture (PTPParams* params, uint32_t *result); 2937 uint16_t ptp_canon_eos_getevent (PTPParams* params, PTPCanon_changes_entry **entries, int *nrofentries); 2938 uint16_t ptp_canon_getpartialobject (PTPParams* params, uint32_t handle, 2939 uint32_t offset, uint32_t size, 2940 uint32_t pos, unsigned char** block, 2941 uint32_t* readnum); 2942 uint16_t ptp_canon_getviewfinderimage (PTPParams* params, unsigned char** image, 2943 uint32_t* size); 2944 uint16_t ptp_canon_getchanges (PTPParams* params, uint16_t** props, 2945 uint32_t* propnum); 2946 uint16_t ptp_canon_getobjectinfo (PTPParams* params, uint32_t store, 2947 uint32_t p2, uint32_t parenthandle, 2948 uint32_t handle, 2949 PTPCANONFolderEntry** entries, 2950 uint32_t* entnum); 2951 uint16_t ptp_canon_eos_getdeviceinfo (PTPParams* params, PTPCanonEOSDeviceInfo*di); 2952 /** 2953 * ptp_canon_eos_setuilock: 2954 * 2955 * This command sets UI lock 2956 * 2957 * params: PTPParams* 2958 * 2959 * Return values: Some PTP_RC_* code. 2960 * 2961 **/ 2962 #define ptp_canon_eos_setuilock(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetUILock,0) 2963 /** 2964 * ptp_canon_eos_resetuilock: 2965 * 2966 * This command sets UI lock 2967 * 2968 * params: PTPParams* 2969 * 2970 * Return values: Some PTP_RC_* code. 2971 * 2972 **/ 2973 #define ptp_canon_eos_resetuilock(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_ResetUILock,0) 2974 /** 2975 * ptp_canon_eos_start_viewfinder: 2976 * 2977 * This command starts Viewfinder mode of newer Canon DSLRs. 2978 * 2979 * params: PTPParams* 2980 * 2981 * Return values: Some PTP_RC_* code. 2982 * 2983 **/ 2984 #define ptp_canon_eos_start_viewfinder(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_InitiateViewfinder,0) 2985 /** 2986 * ptp_canon_eos_end_viewfinder: 2987 * 2988 * This command ends Viewfinder mode of newer Canon DSLRs. 2989 * 2990 * params: PTPParams* 2991 * 2992 * Return values: Some PTP_RC_* code. 2993 * 2994 **/ 2995 #define ptp_canon_eos_end_viewfinder(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_TerminateViewfinder,0) 2996 uint16_t ptp_canon_eos_get_viewfinder_image (PTPParams* params, unsigned char **data, unsigned int *size); 2997 uint16_t ptp_canon_eos_get_viewfinder_image_handler (PTPParams* params, PTPDataHandler*); 2998 uint16_t ptp_canon_get_objecthandle_by_name (PTPParams* params, char* name, uint32_t* objectid); 2999 uint16_t ptp_canon_get_directory (PTPParams* params, PTPObjectHandles *handles, PTPObjectInfo **oinfos, uint32_t **flags); 3000 /** 3001 * ptp_canon_setobjectarchive: 3002 * 3003 * params: PTPParams* 3004 * uint32_t objectid 3005 * uint32_t flags 3006 * 3007 * Return values: Some PTP_RC_* code. 3008 * 3009 **/ 3010 #define ptp_canon_setobjectarchive(params,oid,flags) ptp_generic_no_data(params,PTP_OC_CANON_SetObjectArchive,2,oid,flags) 3011 #define ptp_canon_eos_setobjectattributes(params,oid,flags) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetObjectAttributes,2,oid,flags) 3012 uint16_t ptp_canon_get_customize_data (PTPParams* params, uint32_t themenr, 3013 unsigned char **data, unsigned int *size); 3014 uint16_t ptp_canon_getpairinginfo (PTPParams* params, uint32_t nr, unsigned char**, unsigned int*); 3015 3016 uint16_t ptp_canon_eos_getstorageids (PTPParams* params, PTPStorageIDs* storageids); 3017 uint16_t ptp_canon_eos_getstorageinfo (PTPParams* params, uint32_t p1, unsigned char**, unsigned int*); 3018 uint16_t ptp_canon_eos_getpartialobject (PTPParams* params, uint32_t oid, uint32_t off, uint32_t xsize, unsigned char**data); 3019 uint16_t ptp_canon_eos_getobjectinfoex (PTPParams* params, uint32_t storageid, uint32_t objectid, uint32_t unk, 3020 PTPCANONFolderEntry **entries, unsigned int *nrofentries); 3021 uint16_t ptp_canon_eos_setdevicepropvalueex (PTPParams* params, unsigned char* data, unsigned int size); 3022 #define ptp_canon_eos_setremotemode(params,p1) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRemoteMode,1,p1) 3023 #define ptp_canon_eos_seteventmode(params,p1) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetEventMode,1,p1) 3024 /** 3025 * ptp_canon_eos_transfercomplete: 3026 * 3027 * This ends a direct object transfer from an EOS camera. 3028 * 3029 * params: PTPParams* 3030 * oid Object ID 3031 * 3032 * Return values: Some PTP_RC_* code. 3033 * 3034 */ 3035 #define ptp_canon_eos_transfercomplete(params,oid) ptp_generic_no_data(params,PTP_OC_CANON_EOS_TransferComplete,1,oid) 3036 /* inHDD = %d, inLength =%d, inReset = %d */ 3037 #define ptp_canon_eos_pchddcapacity(params,p1,p2,p3) ptp_generic_no_data(params,PTP_OC_CANON_EOS_PCHDDCapacity,3,p1,p2,p3) 3038 uint16_t ptp_canon_eos_bulbstart (PTPParams* params); 3039 uint16_t ptp_canon_eos_bulbend (PTPParams* params); 3040 uint16_t ptp_canon_eos_getdevicepropdesc (PTPParams* params, uint16_t propcode, 3041 PTPDevicePropDesc *devicepropertydesc); 3042 uint16_t ptp_canon_eos_setdevicepropvalue (PTPParams* params, uint16_t propcode, 3043 PTPPropertyValue* value, uint16_t datatype); 3044 uint16_t ptp_nikon_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size); 3045 uint16_t ptp_nikon_curve_download (PTPParams* params, 3046 unsigned char **data, unsigned int *size); 3047 uint16_t ptp_nikon_getptpipinfo (PTPParams* params, unsigned char **data, unsigned int *size); 3048 uint16_t ptp_nikon_getwifiprofilelist (PTPParams* params); 3049 uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* profile); 3050 3051 uint16_t ptp_sony_sdioconnect (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3); 3052 uint16_t ptp_sony_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size); 3053 uint16_t ptp_sony_getdevicepropdesc (PTPParams* params, uint16_t propcode, 3054 PTPDevicePropDesc *devicepropertydesc); 3055 uint16_t ptp_sony_getalldevicepropdesc (PTPParams* params); 3056 uint16_t ptp_sony_setdevicecontrolvaluea (PTPParams* params, uint16_t propcode, 3057 PTPPropertyValue* value, uint16_t datatype); 3058 uint16_t ptp_sony_setdevicecontrolvalueb (PTPParams* params, uint16_t propcode, 3059 PTPPropertyValue* value, uint16_t datatype); 3060 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); 3061 uint16_t ptp_sony_9281 (PTPParams* params, uint32_t param1); 3062 /** 3063 * ptp_nikon_deletewifiprofile: 3064 * 3065 * This command deletes a wifi profile. 3066 * 3067 * params: PTPParams* 3068 * unsigned int profilenr - profile number 3069 * 3070 * Return values: Some PTP_RC_* code. 3071 * 3072 **/ 3073 #define ptp_nikon_deletewifiprofile(params,profilenr) ptp_generic_no_data(params,PTP_OC_NIKON_DeleteProfile,1,profilenr) 3074 /** 3075 * ptp_nikon_setcontrolmode: 3076 * 3077 * This command can switch the camera to full PC control mode. 3078 * 3079 * params: PTPParams* 3080 * uint32_t mode - mode 3081 * 3082 * Return values: Some PTP_RC_* code. 3083 * 3084 **/ 3085 #define ptp_nikon_setcontrolmode(params,mode) ptp_generic_no_data(params,PTP_OC_NIKON_SetControlMode,1,mode) 3086 /** 3087 * ptp_nikon_terminatecapture: 3088 * 3089 * This command appears to terminate a longer capture 3090 * 3091 * params: PTPParams* 3092 * uint32_t a 3093 * uint32_t b 3094 * 3095 * Return values: Some PTP_RC_* code. 3096 * 3097 **/ 3098 #define ptp_nikon_terminatecapture(params,p1,p2) ptp_generic_no_data(params,PTP_OC_NIKON_TerminateCapture,2,p1,p2) 3099 /** 3100 * ptp_nikon_afdrive: 3101 * 3102 * This command runs (drives) the lens autofocus. 3103 * 3104 * params: PTPParams* 3105 * 3106 * Return values: Some PTP_RC_* code. 3107 * 3108 **/ 3109 #define ptp_nikon_afdrive(params) ptp_generic_no_data(params,PTP_OC_NIKON_AfDrive,0) 3110 /** 3111 * ptp_nikon_changeafarea: 3112 * 3113 * This command starts movie capture (to card) 3114 * 3115 * params: PTPParams* 3116 * x: x coordinate 3117 * y: y coordinate 3118 * 3119 * Return values: Some PTP_RC_* code. 3120 * 3121 **/ 3122 #define ptp_nikon_changeafarea(params,x,y) ptp_generic_no_data(params,PTP_OC_NIKON_ChangeAfArea,2,x,y) 3123 /** 3124 * ptp_nikon_startmovie: 3125 * 3126 * This command starts movie capture (to card) 3127 * 3128 * params: PTPParams* 3129 * 3130 * Return values: Some PTP_RC_* code. 3131 * 3132 **/ 3133 #define ptp_nikon_startmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_StartMovieRecInCard,0) 3134 /** 3135 * ptp_nikon_stopmovie: 3136 * 3137 * This command stops movie capture (to card) 3138 * 3139 * params: PTPParams* 3140 * 3141 * Return values: Some PTP_RC_* code. 3142 * 3143 **/ 3144 #define ptp_nikon_stopmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndMovieRec,0) 3145 /** 3146 * ptp_canon_eos_afdrive: 3147 * 3148 * This command runs (drives) the lens autofocus. 3149 * 3150 * params: PTPParams* 3151 * 3152 * Return values: Some PTP_RC_* code. 3153 * 3154 **/ 3155 #define ptp_canon_eos_afdrive(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_DoAf,0) 3156 /** 3157 * ptp_canon_eos_afcancel: 3158 * 3159 * This command cancels the lens autofocus. 3160 * 3161 * params: PTPParams* 3162 * 3163 * Return values: Some PTP_RC_* code. 3164 * 3165 **/ 3166 #define ptp_canon_eos_afcancel(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_AfCancel,0) 3167 /** 3168 * ptp_canon_eos_zoom: 3169 * 3170 * This command runs (drives) the lens autofocus. 3171 * 3172 * params: PTPParams* 3173 * params: arg1 unknown 3174 * 3175 * Return values: Some PTP_RC_* code. 3176 * 3177 **/ 3178 #define ptp_canon_eos_zoom(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_Zoom,1,x) 3179 #define ptp_canon_eos_zoomposition(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_ZoomPosition,2,x,y) 3180 3181 #define ptp_canon_eos_remotereleaseon(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOn,2,x,y) 3182 #define ptp_canon_eos_remotereleaseoff(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOff,1,x) 3183 /** 3184 * ptp_nikon_mfdrive: 3185 * 3186 * This command runs (drives) the lens focus manually. 3187 * 3188 * params: PTPParams* 3189 * flag: 0x1 for (no limit - closest), 0x2 for (closest - no limit) 3190 * amount: amount of steps 3191 * 3192 * Return values: Some PTP_RC_* code. 3193 * 3194 **/ 3195 #define ptp_nikon_mfdrive(params,flag,amount) ptp_generic_no_data(params,PTP_OC_NIKON_MfDrive,2,flag,amount) 3196 3197 /** 3198 * ptp_canon_eos_drivelens: 3199 * 3200 * This command runs (drives) the lens focus manually. 3201 * 3202 * params: PTPParams* 3203 * amount: 0x1-0x3 for near range, 0x8001-0x8003 for far range. 3204 * 3205 * Return values: Some PTP_RC_* code. 3206 * 3207 **/ 3208 #define ptp_canon_eos_drivelens(params,amount) ptp_generic_no_data(params,PTP_OC_CANON_EOS_DriveLens,1,amount) 3209 /** 3210 * ptp_nikon_capture: 3211 * 3212 * This command captures a picture on the Nikon. 3213 * 3214 * params: PTPParams* 3215 * uint32_t x: unknown parameter. seen to be -1. 3216 * 3217 * Return values: Some PTP_RC_* code. 3218 * 3219 **/ 3220 #define ptp_nikon_capture(params,x) ptp_generic_no_data(params,PTP_OC_NIKON_Capture,1,x) 3221 3222 /** 3223 * ptp_nikon_capture2: 3224 * 3225 * This command captures a picture on the Nikon. 3226 * 3227 * params: PTPParams* 3228 * af: autofocus before capture (1 yes , 0 no) 3229 * target: sdram 1, card 0 3230 * 3231 * Return values: Some PTP_RC_* code. 3232 * 2 params: 3233 * 0xffffffff == No AF before, 0xfffffffe == AF before capture 3234 * sdram=1, card=0 3235 */ 3236 #define ptp_nikon_capture2(params,af,target) ptp_generic_no_data(params,PTP_OC_NIKON_InitiateCaptureRecInMedia,2,af?0xfffffffe:0xffffffff,target) 3237 /** 3238 * ptp_nikon_capture_sdram: 3239 * 3240 * This command captures a picture on the Nikon. 3241 * 3242 * params: PTPParams* 3243 * 3244 * Return values: Some PTP_RC_* code. 3245 * 3246 **/ 3247 #define ptp_nikon_capture_sdram(params) ptp_generic_no_data(params,PTP_OC_NIKON_AfCaptureSDRAM,0) 3248 /** 3249 * ptp_nikon_delete_sdram_image: 3250 * 3251 * This command deletes the current SDRAM image 3252 * 3253 * params: PTPParams* 3254 * uint32_t oid 3255 * 3256 * Return values: Some PTP_RC_* code. 3257 * 3258 **/ 3259 #define ptp_nikon_delete_sdram_image(params,oid) ptp_generic_no_data(params,PTP_OC_NIKON_DelImageSDRAM,1,oid) 3260 /** 3261 * ptp_nikon_start_liveview: 3262 * 3263 * This command starts LiveView mode of newer Nikons DSLRs. 3264 * 3265 * params: PTPParams* 3266 * 3267 * Return values: Some PTP_RC_* code. 3268 * 3269 **/ 3270 #define ptp_nikon_start_liveview(params) ptp_generic_no_data(params,PTP_OC_NIKON_StartLiveView,0) 3271 uint16_t ptp_nikon_get_liveview_image (PTPParams* params, unsigned char**,unsigned int*); 3272 uint16_t ptp_nikon_get_preview_image (PTPParams* params, unsigned char**, unsigned int*, uint32_t*); 3273 /** 3274 * ptp_nikon_end_liveview: 3275 * 3276 * This command ends LiveView mode of newer Nikons DSLRs. 3277 * 3278 * params: PTPParams* 3279 * 3280 * Return values: Some PTP_RC_* code. 3281 * 3282 **/ 3283 #define ptp_nikon_end_liveview(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndLiveView,0) 3284 uint16_t ptp_nikon_check_event (PTPParams* params, PTPContainer **evt, unsigned int *evtcnt); 3285 uint16_t ptp_nikon_getfileinfoinblock (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3, 3286 unsigned char **data, unsigned int *size); 3287 /** 3288 * ptp_nikon_device_ready: 3289 * 3290 * This command checks if the device is ready. Used after 3291 * a capture. 3292 * 3293 * params: PTPParams* 3294 * 3295 * Return values: Some PTP_RC_* code. 3296 * 3297 **/ 3298 #define ptp_nikon_device_ready(params) ptp_generic_no_data (params, PTP_OC_NIKON_DeviceReady, 0) 3299 uint16_t ptp_mtp_getobjectpropssupported (PTPParams* params, uint16_t ofc, uint32_t *propnum, uint16_t **props); 3300 3301 3302 /* Android MTP Extensions */ 3303 uint16_t ptp_android_getpartialobject64 (PTPParams* params, uint32_t handle, uint64_t offset, 3304 uint32_t maxbytes, unsigned char** object, 3305 uint32_t *len); 3306 #define ptp_android_begineditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_BeginEditObject, 1, handle) 3307 #define ptp_android_truncate(params,handle,offset) ptp_generic_no_data (params, PTP_OC_ANDROID_TruncateObject, 3, handle, (offset & 0xFFFFFFFF), (offset >> 32)) 3308 uint16_t ptp_android_sendpartialobject (PTPParams *params, uint32_t handle, 3309 uint64_t offset, unsigned char *object, uint32_t len); 3310 #define ptp_android_endeditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_EndEditObject, 1, handle) 3311 3312 uint16_t ptp_olympus_getdeviceinfo (PTPParams*, PTPDeviceInfo*); 3313 #define ptp_olympus_setcameracontrolmode(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_SetCameraControlMode, 1, p1) 3314 uint16_t ptp_olympus_opensession (PTPParams*, unsigned char**, unsigned int *); 3315 #define ptp_olympus_capture(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_Capture, 1, p1) 3316 uint16_t ptp_olympus_getcameraid (PTPParams*, unsigned char**, unsigned int *); 3317 3318 /* Non PTP protocol functions */ 3319 static inline int 3320 ptp_operation_issupported(PTPParams* params, uint16_t operation) 3321 { 3322 unsigned int i=0; 3323 3324 for (;i<params->deviceinfo.OperationsSupported_len;i++) { 3325 if (params->deviceinfo.OperationsSupported[i]==operation) 3326 return 1; 3327 } 3328 return 0; 3329 } 3330 3331 int ptp_event_issupported (PTPParams* params, uint16_t event); 3332 int ptp_property_issupported (PTPParams* params, uint16_t property); 3333 3334 void ptp_free_params (PTPParams *params); 3335 void ptp_free_objectpropdesc (PTPObjectPropDesc*); 3336 void ptp_free_devicepropdesc (PTPDevicePropDesc*); 3337 void ptp_free_devicepropvalue (uint16_t, PTPPropertyValue*); 3338 void ptp_free_objectinfo (PTPObjectInfo *oi); 3339 void ptp_free_object (PTPObject *oi); 3340 3341 const char *ptp_strerror (uint16_t ret, uint16_t vendor); 3342 void ptp_debug (PTPParams *params, const char *format, ...); 3343 void ptp_error (PTPParams *params, const char *format, ...); 3344 3345 3346 const char* ptp_get_property_description(PTPParams* params, uint16_t dpc); 3347 3348 const char* ptp_get_opcode_name(PTPParams* params, uint16_t opcode); 3349 3350 int 3351 ptp_render_property_value(PTPParams* params, uint16_t dpc, 3352 PTPDevicePropDesc *dpd, unsigned int length, char *out); 3353 int ptp_render_ofc(PTPParams* params, uint16_t ofc, int spaceleft, char *txt); 3354 int ptp_render_mtp_propname(uint16_t propid, int spaceleft, char *txt); 3355 MTPProperties *ptp_get_new_object_prop_entry(MTPProperties **props, int *nrofprops); 3356 void ptp_destroy_object_prop(MTPProperties *prop); 3357 void ptp_destroy_object_prop_list(MTPProperties *props, int nrofprops); 3358 MTPProperties *ptp_find_object_prop_in_cache(PTPParams *params, uint32_t const handle, uint32_t const attribute_id); 3359 uint16_t ptp_remove_object_from_cache(PTPParams *params, uint32_t handle); 3360 uint16_t ptp_add_object_to_cache(PTPParams *params, uint32_t handle); 3361 uint16_t ptp_object_want (PTPParams *, uint32_t handle, unsigned int want, PTPObject**retob); 3362 void ptp_objects_sort (PTPParams *); 3363 uint16_t ptp_object_find (PTPParams *params, uint32_t handle, PTPObject **retob); 3364 uint16_t ptp_object_find_or_insert (PTPParams *params, uint32_t handle, PTPObject **retob); 3365 /* ptpip.c */ 3366 void ptp_nikon_getptpipguid (unsigned char* guid); 3367 3368 /* CHDK specifics */ 3369 #define PTP_OC_CHDK 0x9999 3370 typedef struct tagptp_chdk_videosettings { 3371 long live_image_buffer_width; 3372 long live_image_width; 3373 long live_image_height; 3374 long bitmap_buffer_width; 3375 long bitmap_width; 3376 long bitmap_height; 3377 unsigned palette[16]; 3378 } ptp_chdk_videosettings; 3379 3380 /* Nafraf: Test this!!!*/ 3381 #define ptp_chdk_switch_mode(params,mode) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_SwitchMode,mode) 3382 3383 /* include CHDK ptp protocol definitions from a CHDK source tree */ 3384 #include "chdk_ptp.h" 3385 #if (PTP_CHDK_VERSION_MAJOR < 2 || (PTP_CHDK_VERSION_MAJOR == 2 && PTP_CHDK_VERSION_MINOR < 5)) 3386 #error your chdk headers are too old, unset CHDK_SRC_DIR in config.mk 3387 #endif 3388 #include "chdk_live_view.h" 3389 3390 /* the following happens to match what is used in CHDK, but is not part of the protocol */ 3391 typedef struct { 3392 unsigned size; 3393 unsigned script_id; /* id of script message is to/from */ 3394 unsigned type; 3395 unsigned subtype; 3396 char data[]; 3397 } ptp_chdk_script_msg; 3398 3399 /* 3400 chunk for remote capture 3401 */ 3402 typedef struct { 3403 uint32_t size; /* length of data */ 3404 int last; /* is it the last chunk? */ 3405 uint32_t offset; /* offset within file, or -1 */ 3406 unsigned char *data; /* data, must be free'd by caller when done */ 3407 } ptp_chdk_rc_chunk; 3408 3409 3410 uint16_t ptp_chdk_get_memory(PTPParams* params, int start, int num, unsigned char **); 3411 uint16_t ptp_chdk_set_memory_long(PTPParams* params, int addr, int val); 3412 int ptp_chdk_upload(PTPParams* params, char *local_fn, char *remote_fn); 3413 uint16_t ptp_chdk_download(PTPParams* params, char *remote_fn, PTPDataHandler *handler); 3414 3415 /* remote capture */ 3416 uint16_t ptp_chdk_rcisready(PTPParams* params, int *isready,int *imgnum); 3417 uint16_t ptp_chdk_rcgetchunk(PTPParams* params,int fmt, ptp_chdk_rc_chunk *chunk); 3418 3419 uint16_t ptp_chdk_exec_lua(PTPParams* params, char *script, int flags, int *script_id,int *status); 3420 uint16_t ptp_chdk_get_version(PTPParams* params, int *major, int *minor); 3421 uint16_t ptp_chdk_get_script_support(PTPParams* params, unsigned *status); 3422 uint16_t ptp_chdk_get_script_status(PTPParams* params, unsigned *status); 3423 uint16_t ptp_chdk_write_script_msg(PTPParams* params, char *data, unsigned size, int target_script_id, int *status); 3424 uint16_t ptp_chdk_read_script_msg(PTPParams* params, ptp_chdk_script_msg **msg); 3425 uint16_t ptp_chdk_get_live_data(PTPParams* params, unsigned flags, unsigned char **data, unsigned int *data_size); 3426 uint16_t ptp_chdk_call_function(PTPParams* params, int *args, int size, int *ret); 3427 3428 /*uint16_t ptp_chdk_get_script_output(PTPParams* params, char **output ); */ 3429 /*uint16_t ptp_chdk_get_video_settings(PTPParams* params, ptp_chdk_videosettings* vsettings);*/ 3430 3431 #ifdef __cplusplus 3432 } 3433 #endif /* __cplusplus */ 3434 3435 #endif /* __PTP_H__ */ 3436