aboutsummaryrefslogtreecommitdiff
path: root/src/ptp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ptp.h')
-rw-r--r--src/ptp.h400
1 files changed, 355 insertions, 45 deletions
diff --git a/src/ptp.h b/src/ptp.h
index eda3e1b..7c06b64 100644
--- a/src/ptp.h
+++ b/src/ptp.h
@@ -1,7 +1,7 @@
/* ptp.h
*
* Copyright (C) 2001 Mariusz Woloszyn <emsi@ipartners.pl>
- * Copyright (C) 2003-2014 Marcus Meissner <marcus@jet.franken.de>
+ * Copyright (C) 2003-2017 Marcus Meissner <marcus@jet.franken.de>
* Copyright (C) 2006-2008 Linus Walleij <triad@df.lth.se>
*
* This library is free software; you can redistribute it and/or
@@ -155,29 +155,35 @@ struct _PTPIPHeader {
typedef struct _PTPIPHeader PTPIPHeader;
/* Vendor IDs */
-#define PTP_VENDOR_EASTMAN_KODAK 0x00000001
-#define PTP_VENDOR_SEIKO_EPSON 0x00000002
-#define PTP_VENDOR_AGILENT 0x00000003
-#define PTP_VENDOR_POLAROID 0x00000004
-#define PTP_VENDOR_AGFA_GEVAERT 0x00000005
-#define PTP_VENDOR_MICROSOFT 0x00000006
-#define PTP_VENDOR_EQUINOX 0x00000007
-#define PTP_VENDOR_VIEWQUEST 0x00000008
-#define PTP_VENDOR_STMICROELECTRONICS 0x00000009
-#define PTP_VENDOR_NIKON 0x0000000A
-#define PTP_VENDOR_CANON 0x0000000B
-#define PTP_VENDOR_FOTONATION 0x0000000C
-#define PTP_VENDOR_PENTAX 0x0000000D
-#define PTP_VENDOR_FUJI 0x0000000E
+/* List is linked from here: http://www.imaging.org/site/IST/Standards/PTP_Standards.aspx */
+#define PTP_VENDOR_EASTMAN_KODAK 0x00000001
+#define PTP_VENDOR_SEIKO_EPSON 0x00000002
+#define PTP_VENDOR_AGILENT 0x00000003
+#define PTP_VENDOR_POLAROID 0x00000004
+#define PTP_VENDOR_AGFA_GEVAERT 0x00000005
+#define PTP_VENDOR_MICROSOFT 0x00000006
+#define PTP_VENDOR_EQUINOX 0x00000007
+#define PTP_VENDOR_VIEWQUEST 0x00000008
+#define PTP_VENDOR_STMICROELECTRONICS 0x00000009
+#define PTP_VENDOR_NIKON 0x0000000A
+#define PTP_VENDOR_CANON 0x0000000B
+#define PTP_VENDOR_FOTONATION 0x0000000C
+#define PTP_VENDOR_PENTAX 0x0000000D
+#define PTP_VENDOR_FUJI 0x0000000E
+#define PTP_VENDOR_NDD_MEDICAL_TECHNOLOGIES 0x00000012
+#define PTP_VENDOR_SAMSUNG 0x0000001a
+#define PTP_VENDOR_PARROT 0x0000001b
+#define PTP_VENDOR_PANASONIC 0x0000001c
/* not from standards papers, but from traces: */
-#define PTP_VENDOR_SONY 0x00000011 /* observed in the A900 */
-#define PTP_VENDOR_SAMSUNG 0x0000001a /* observed in the Samsung NX1000 */
-#define PTP_VENDOR_PARROT 0x0000001b /* observed in the Parrot Sequoia */
+#define PTP_VENDOR_SONY 0x00000011 /* observed in the A900 */
+
/* Vendor extension ID used for MTP (occasionaly, usualy 6 is used) */
#define PTP_VENDOR_MTP 0xffffffff
/* gphoto overrides */
-#define PTP_VENDOR_GP_OLYMPUS 0xfffffffe
+#define PTP_VENDOR_GP_OLYMPUS 0x0000fffe
+#define PTP_VENDOR_GP_OLYMPUS_OMD 0x0000fffd
+
/* Operation Codes */
@@ -285,18 +291,38 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_CANON_SetPairingInfo 0x9030
#define PTP_OC_CANON_GetPairingInfo 0x9031
#define PTP_OC_CANON_DeletePairingInfo 0x9032
-#define PTP_OC_CANON_GetMACAddress 0x9033
+#define PTP_OC_CANON_GetMACAddress 0x9033 /* no args */
+/*
+0000 12 00 00 00 02 00 33 90-1a 00 00 00 2c 9e fc c8 ......3.....,...
+0010 33 e3 - 3.
+ */
+
/* 9034: 1 param, no parms returned */
#define PTP_OC_CANON_SetDisplayMonitor 0x9034
#define PTP_OC_CANON_PairingComplete 0x9035
#define PTP_OC_CANON_GetWirelessMAXChannel 0x9036
-#define PTP_OC_CANON_GetWebServiceSpec 0x9068
-#define PTP_OC_CANON_GetWebServiceData 0x9069
+#define PTP_OC_CANON_GetWebServiceSpec 0x9068 /* no args */
+/* data returned:
+0000 1e 00 00 00 02 00 68 90-1a 00 00 00 00 01 08 00 ......h.........
+0010 14 00 bc ce 00 00 78 00-78 00 00 14 00 00 ......x.x.....
+*/
+
+#define PTP_OC_CANON_GetWebServiceData 0x9069 /* no args */
#define PTP_OC_CANON_SetWebServiceData 0x906B
-#define PTP_OC_CANON_GetRootCertificateSpec 0x906C
-#define PTP_OC_CANON_GetRootCertificateData 0x906D
+#define PTP_OC_CANON_GetRootCertificateSpec 0x906C /* no args */
+/*
+0000 12 00 00 00 02 00 6c 90-1a 00 00 00 00 01 6c 30 ......l.......l0
+0010 00 00 - ..
+*/
+#define PTP_OC_CANON_GetRootCertificateData 0x906D /* no args */
+/* empty data on test */
#define PTP_OC_CANON_SetRootCertificateData 0x906F
+#define PTP_OC_CANON_GetGpsMobilelinkObjectInfo 0x9075 /* 2 args: utcstart, utcend */
+#define PTP_OC_CANON_SendGpsTagInfo 0x9076 /* 1 arg: oid */
+#define PTP_OC_CANON_GetTrancecodeApproxSize 0x9077 /* 1 arg: oid? */
+#define PTP_OC_CANON_RequestTrancecodeStart 0x9078 /* 1 arg: oid? */
+#define PTP_OC_CANON_RequestTrancecodeCancel 0x9079 /* 1 arg: oid? */
/* 9101: no args, 8 byte data (01 00 00 00 00 00 00 00), no resp data. */
#define PTP_OC_CANON_EOS_GetStorageIDs 0x9101
@@ -373,13 +399,13 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_CANON_EOS_SetUILock 0x911B
/* 911c: no cmd args, no data, no resp args */
#define PTP_OC_CANON_EOS_ResetUILock 0x911C
-#define PTP_OC_CANON_EOS_KeepDeviceOn 0x911D
-#define PTP_OC_CANON_EOS_SetNullPacketMode 0x911E
+#define PTP_OC_CANON_EOS_KeepDeviceOn 0x911D /* no arg */
+#define PTP_OC_CANON_EOS_SetNullPacketMode 0x911E /* 1 param */
#define PTP_OC_CANON_EOS_UpdateFirmware 0x911F
#define PTP_OC_CANON_EOS_TransferCompleteDT 0x9120
#define PTP_OC_CANON_EOS_CancelTransferDT 0x9121
#define PTP_OC_CANON_EOS_SetWftProfile 0x9122
-#define PTP_OC_CANON_EOS_GetWftProfile 0x9123
+#define PTP_OC_CANON_EOS_GetWftProfile 0x9123 /* 2 args: setnum, configid */
#define PTP_OC_CANON_EOS_SetProfileToWft 0x9124
#define PTP_OC_CANON_EOS_BulbStart 0x9125
#define PTP_OC_CANON_EOS_BulbEnd 0x9126
@@ -393,11 +419,11 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_CANON_EOS_RegistBackgroundImage 0x912A
#define PTP_OC_CANON_EOS_ChangePhotoStudioMode 0x912B
#define PTP_OC_CANON_EOS_GetPartialObjectEx 0x912C
-#define PTP_OC_CANON_EOS_ResetMirrorLockupState 0x9130
+#define PTP_OC_CANON_EOS_ResetMirrorLockupState 0x9130 /* no args */
#define PTP_OC_CANON_EOS_PopupBuiltinFlash 0x9131
#define PTP_OC_CANON_EOS_EndGetPartialObjectEx 0x9132
-#define PTP_OC_CANON_EOS_MovieSelectSWOn 0x9133
-#define PTP_OC_CANON_EOS_MovieSelectSWOff 0x9134
+#define PTP_OC_CANON_EOS_MovieSelectSWOn 0x9133 /* no args */
+#define PTP_OC_CANON_EOS_MovieSelectSWOff 0x9134 /* no args */
#define PTP_OC_CANON_EOS_GetCTGInfo 0x9135
#define PTP_OC_CANON_EOS_GetLensAdjust 0x9136
#define PTP_OC_CANON_EOS_SetLensAdjust 0x9137
@@ -408,17 +434,27 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_CANON_EOS_EndSendPartialObjectEx 0x913B
#define PTP_OC_CANON_EOS_SetCTGInfo 0x913C
#define PTP_OC_CANON_EOS_SetRequestOLCInfoGroup 0x913D
-#define PTP_OC_CANON_EOS_SetRequestRollingPitchingLevel 0x913E
+#define PTP_OC_CANON_EOS_SetRequestRollingPitchingLevel 0x913E /* 1 arg: onoff? */
/* 3 args, 0x21201020, 0x110, 0x1000000 (potentially reverse order) */
#define PTP_OC_CANON_EOS_GetCameraSupport 0x913F
-#define PTP_OC_CANON_EOS_SetRating 0x9140 /* 2 args */
+#define PTP_OC_CANON_EOS_SetRating 0x9140 /* 2 args, objectid, rating? */
#define PTP_OC_CANON_EOS_RequestInnerDevelopStart 0x9141 /* 2 args: 1 type, 1 object? */
#define PTP_OC_CANON_EOS_RequestInnerDevelopParamChange 0x9142
#define PTP_OC_CANON_EOS_RequestInnerDevelopEnd 0x9143
#define PTP_OC_CANON_EOS_GpsLoggingDataMode 0x9144 /* 1 arg */
#define PTP_OC_CANON_EOS_GetGpsLogCurrentHandle 0x9145
-
-#define PTP_OC_CANON_EOS_InitiateViewfinder 0x9151
+#define PTP_OC_CANON_EOS_SetImageRecoveryData 0x9146 /* sends data? */
+#define PTP_OC_CANON_EOS_GetImageRecoveryList 0x9147
+#define PTP_OC_CANON_EOS_FormatImageRecoveryData 0x9148
+#define PTP_OC_CANON_EOS_GetPresetLensAdjustParam 0x9149 /* no arg */
+#define PTP_OC_CANON_EOS_GetRawDispImage 0x914A /* ? 2 args ? */
+#define PTP_OC_CANON_EOS_SaveImageRecoveryData 0x914B
+#define PTP_OC_CANON_EOS_RequestBLE 0x914C /* 2? args? */
+#define PTP_OC_CANON_EOS_DrivePowerZoom 0x914D /* 1 arg */
+
+#define PTP_OC_CANON_EOS_GetIptcData 0x914F
+#define PTP_OC_CANON_EOS_SetIptcData 0x9150 /* sends data? */
+#define PTP_OC_CANON_EOS_InitiateViewfinder 0x9151 /* no arg */
#define PTP_OC_CANON_EOS_TerminateViewfinder 0x9152
/* EOS M2 wlan: 2 params, 0x00200000 0x01000000 */
#define PTP_OC_CANON_EOS_GetViewFinderData 0x9153
@@ -426,17 +462,27 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_CANON_EOS_DriveLens 0x9155
#define PTP_OC_CANON_EOS_DepthOfFieldPreview 0x9156 /* 1 arg */
#define PTP_OC_CANON_EOS_ClickWB 0x9157 /* 2 args: x,y */
-#define PTP_OC_CANON_EOS_Zoom 0x9158 /* 1 arg */
+#define PTP_OC_CANON_EOS_Zoom 0x9158 /* 1 arg: zoom */
#define PTP_OC_CANON_EOS_ZoomPosition 0x9159 /* 2 args: x,y */
-#define PTP_OC_CANON_EOS_SetLiveAfFrame 0x915A
+#define PTP_OC_CANON_EOS_SetLiveAfFrame 0x915A /* sends data? */
#define PTP_OC_CANON_EOS_TouchAfPosition 0x915B /* 3 args: type,x,y */
#define PTP_OC_CANON_EOS_SetLvPcFlavoreditMode 0x915C /* 1 arg */
#define PTP_OC_CANON_EOS_SetLvPcFlavoreditParam 0x915D /* 1 arg */
#define PTP_OC_CANON_EOS_AfCancel 0x9160
+#define PTP_OC_CANON_EOS_GetObjectInfo64 0x9170 /* 1 arg: oid */
+#define PTP_OC_CANON_EOS_GetObject64 0x9171 /* 1 arg: oid */
+#define PTP_OC_CANON_EOS_GetPartialObject64 0x9172 /* args: oid, offset, maxbyte */
+#define PTP_OC_CANON_EOS_GetObjectInfoEx64 0x9173 /* 2 args: storageid, oid ? */
+#define PTP_OC_CANON_EOS_GetPartialObjectEX64 0x9174 /* args: oid, offset 64bit, maxbyte */
+#define PTP_OC_CANON_EOS_CreateHandle64 0x9175
+#define PTP_OC_CANON_EOS_NotifyEstimateNumberofImport 0x9182 /* 1 arg: importnumber */
+#define PTP_OC_CANON_EOS_NotifyNumberofImported 0x9183 /* 1 arg: importnumber */
+#define PTP_OC_CANON_EOS_NotifySizeOfPartialDataTransfer 0x9184 /* 4 args: filesizelow, filesizehigh, downloadsizelow, downloadsizehigh */
+#define PTP_OC_CANON_EOS_NotifyFinish 0x9185 /* 1 arg: reason */
#define PTP_OC_CANON_EOS_SetDefaultCameraSetting 0x91BE
#define PTP_OC_CANON_EOS_GetAEData 0x91BF
-#define PTP_OC_CANON_EOS_NotifyNetworkError 0x91E8
-#define PTP_OC_CANON_EOS_AdapterTransferProgress 0x91E9
+#define PTP_OC_CANON_EOS_NotifyNetworkError 0x91E8 /* 1 arg: errorcode */
+#define PTP_OC_CANON_EOS_AdapterTransferProgress 0x91E9
#define PTP_OC_CANON_EOS_TransferComplete2 0x91F0
#define PTP_OC_CANON_EOS_CancelTransfer2 0x91F1
#define PTP_OC_CANON_EOS_FAPIMessageTX 0x91FE
@@ -494,7 +540,7 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_NIKON_GetPartialObjectHiSpeed 0x9400 /* 3 params, data in */
/* From Nikon V1 Trace */
-#define PTP_OC_NIKON_GetDevicePropEx 0x9504 /* gets device prop dataa */
+#define PTP_OC_NIKON_GetDevicePropEx 0x9504 /* gets device prop data */
/* Casio EX-F1 (from http://code.google.com/p/exf1ctrl/ ) */
#define PTP_OC_CASIO_STILL_START 0x9001
@@ -632,8 +678,16 @@ typedef struct _PTPIPHeader PTPIPHeader;
/* WiFi Provisioning MTP Extension Codes (microsoft.com/WPDWCN: 1.0) */
#define PTP_OC_MTP_WPDWCN_ProcessWFCObject 0x9122
+/* Olympus OMD series commands */
+#define PTP_OC_OLYMPUS_OMD_Capture 0x9481
+#define PTP_OC_OLYMPUS_GetLiveViewImage 0x9484 /* liveview */
+#define PTP_OC_OLYMPUS_OMD_GetImage 0x9485 /* gets an JPEG image (from the capture? SDRAM style?) */
+#define PTP_OC_OLYMPUS_OMD_ChangedProperties 0x9486
+#define PTP_OC_OLYMPUS_OMD_MFDrive 0x9487
+#define PTP_OC_OLYMPUS_OMD_SetProperties 0x9489 /* Sends to the device a PTP list of all 16 bit device properties , count 32bit, then 16bit vals */
/* Olympus E series commands */
+
#define PTP_OC_OLYMPUS_Capture 0x9101
#define PTP_OC_OLYMPUS_SelfCleaning 0x9103
#define PTP_OC_OLYMPUS_SetRGBGain 0x9106
@@ -649,6 +703,7 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_OLYMPUS_SetCameraID 0x9501
#define PTP_OC_OLYMPUS_GetCameraID 0x9581
+
/* Android Random I/O Extensions Codes */
#define PTP_OC_ANDROID_GetPartialObject64 0x95C1
#define PTP_OC_ANDROID_SendPartialObject 0x95C2
@@ -689,6 +744,54 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_PARROT_MagnetoCalibStatus 0x9212
#define PTP_OC_PARROT_SendFirmwareUpdate 0x9213
+#define PTP_OC_PANASONIC_9101 0x9101
+#define PTP_OC_PANASONIC_OpenSession 0x9102 /* opensession (1 arg, seems to be storage id 0x00010001)*/
+#define PTP_OC_PANASONIC_CloseSession 0x9103 /* closesession (no arg) */
+#define PTP_OC_PANASONIC_9104 0x9104 /* get ext device id (1 arg?) */
+/* 9104 gets this data:
+0000 24 00 00 00 02 00 04 91-04 00 00 00 01 00 01 00 $...............
+0010 01 00 e1 07 10 00 00 00-00 00 00 00 00 00 00 00 ................
+0020 00 00 00 00 - ....
+*/
+
+#define PTP_OC_PANASONIC_9107 0x9107 /* getsize? */
+#define PTP_OC_PANASONIC_ListProperty 0x9108
+#define PTP_OC_PANASONIC_9110 0x9110 /* Get_Object infos */
+#define PTP_OC_PANASONIC_9112 0x9112 /* Get Partial Object , 4 args */
+#define PTP_OC_PANASONIC_9113 0x9113 /* Skip Objects Transfer , 1 arg */
+
+#define PTP_OC_PANASONIC_9401 0x9401
+#define PTP_OC_PANASONIC_GetProperty 0x9402
+#define PTP_OC_PANASONIC_SetProperty 0x9403
+#define PTP_OC_PANASONIC_InitiateCapture 0x9404 /* Rec Ctrl Release */
+#define PTP_OC_PANASONIC_9405 0x9405 /* Rec Ctrl AF AE */
+#define PTP_OC_PANASONIC_9406 0x9406 /* Setup Ctrl various functions: Format, Sensor Cleaning, Menu Save, firmware update? */
+#define PTP_OC_PANASONIC_9408 0x9408
+#define PTP_OC_PANASONIC_9409 0x9409 /* 1 arg */
+#define PTP_OC_PANASONIC_940A 0x940A /* 1 arg, e.g. 0x08000010 */
+#define PTP_OC_PANASONIC_940B 0x940B /* 1 arg, e.g. 0x08000010 */
+#define PTP_OC_PANASONIC_MoveRecControl 0x940C /* 07000011 start, 07000012 stop, 0700013 still capture */
+#define PTP_OC_PANASONIC_PowerControl 0x940D /* 1 arg: 0x0A000011 power off, 0x0a00012 device reset, 0x0a00013 device restart */
+#define PTP_OC_PANASONIC_PlayControl 0x940E /* 2 arg? 0x05000011 current=0, next=1, prev=0xffffffff */
+#define PTP_OC_PANASONIC_PlayControlPlay 0x940F /* 0x05000020 */
+#define PTP_OC_PANASONIC_9410 0x9410 /* Rec Ctrl Other */
+#define PTP_OC_PANASONIC_SetGPSDataInfo 0x9411
+#define PTP_OC_PANASONIC_Liveview 0x9412 /* 0d000010 start, 0d000011 stop */
+#define PTP_OC_PANASONIC_9414 0x9414 /* 1 arg e.g 12000020 */
+#define PTP_OC_PANASONIC_9416 0x9416 /* Rec Ctrl Mf Assist, Rec Ctrl Backup Req ... 1 arg */
+
+#define PTP_OC_PANASONIC_ChangeEvent 0x9603 /* 2 args ... e.g. 0x4002, new (change object added event) */
+#define PTP_OC_PANASONIC_GetFromEventInfo 0x9605 /* 1 arg, e.g. 0x41000013 , 15c00021: setup exec menu save comp, 15c00022: setup exec pixel refresh comp */
+#define PTP_OC_PANASONIC_SendDataInfo 0x9606 /* no args? used during firmware update */
+#define PTP_OC_PANASONIC_StartSendData 0x9607 /* no args? used during firmware update */
+
+#define PTP_OC_PANASONIC_9703 0x9703 /* Mnt_GetInfo_GetVersion ... 1 arg? */
+#define PTP_OC_PANASONIC_9704 0x9704 /* Set USB Mode ... 80040001 */
+#define PTP_OC_PANASONIC_9705 0x9705 /* Ctrl Liveview */
+#define PTP_OC_PANASONIC_LiveviewImage 0x9706 /* Get Liveview Data */
+#define PTP_OC_PANASONIC_9707 0x9707 /* 4k6k cutting get stream */
+
+
/* Proprietary vendor extension operations mask */
#define PTP_OC_EXTENSION_MASK 0xF000
@@ -797,6 +900,7 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_RC_MTP_WFC_Version_Not_Supported 0xA122
/* libptp2 extended ERROR codes */
+#define PTP_ERROR_NODEVICE 0x02F9
#define PTP_ERROR_TIMEOUT 0x02FA
#define PTP_ERROR_CANCEL 0x02FB
#define PTP_ERROR_BADPARAM 0x02FC
@@ -833,6 +937,8 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_EC_CANON_StartDirectTransfer 0xC011
#define PTP_EC_CANON_StopDirectTransfer 0xC013
+#define PTP_EC_CANON_TranscodeProgress 0xC01B /* EOS ? */
+
/* Canon EOS events */
#define PTP_EC_CANON_EOS_RequestGetEvent 0xc101
#define PTP_EC_CANON_EOS_ObjectAddedEx 0xc181
@@ -855,12 +961,24 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_EC_CANON_EOS_StoreRemoved 0xc193
#define PTP_EC_CANON_EOS_BulbExposureTime 0xc194
#define PTP_EC_CANON_EOS_RecordingTime 0xc195
+#define PTP_EC_CANON_EOS_InnerDevelopParam 0xc196
+#define PTP_EC_CANON_EOS_RequestObjectTransferDevelop 0xc197
+#define PTP_EC_CANON_EOS_GPSLogOutputProgress 0xc198
+#define PTP_EC_CANON_EOS_GPSLogOutputComplete 0xc199
+#define PTP_EC_CANON_EOS_TouchTrans 0xc19a
+#define PTP_EC_CANON_EOS_RequestObjectTransferExInfo 0xc19b
+#define PTP_EC_CANON_EOS_PowerZoomInfoChanged 0xc19d
+#define PTP_EC_CANON_EOS_RequestPushMode 0xc19f
#define PTP_EC_CANON_EOS_RequestObjectTransferTS 0xc1a2
#define PTP_EC_CANON_EOS_AfResult 0xc1a3
#define PTP_EC_CANON_EOS_CTGInfoCheckComplete 0xc1a4
#define PTP_EC_CANON_EOS_OLCInfoChanged 0xc1a5
-#define PTP_EC_CANON_EOS_ObjectAddedUnknown 0xc1a7
-#define PTP_EC_CANON_EOS_RequestObjectTransferNew 0xc1a9
+#define PTP_EC_CANON_EOS_ObjectAddedEx64 0xc1a7
+#define PTP_EC_CANON_EOS_ObjectInfoChangedEx64 0xc1a8
+#define PTP_EC_CANON_EOS_RequestObjectTransfer64 0xc1a9
+#define PTP_EC_CANON_EOS_RequestObjectTransferFTP64 0xc1ab
+#define PTP_EC_CANON_EOS_ImportError 0xc1af
+#define PTP_EC_CANON_EOS_BlePairing 0xc1b0
#define PTP_EC_CANON_EOS_RequestObjectTransferFTP 0xc1f1
/* Nikon extension Event Codes */
@@ -889,6 +1007,8 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_EC_PARROT_Status 0xC201
#define PTP_EC_PARROT_MagnetoCalibrationStatus 0xC202
+#define PTP_EC_PANASONIC_ObjectAdded 0xC108
+
/* constants for GetObjectHandles */
#define PTP_GOH_ALL_STORAGE 0xffffffff
@@ -983,6 +1103,21 @@ struct _PTPObjectInfo {
};
typedef struct _PTPObjectInfo PTPObjectInfo;
+struct _PTPObjectFilesystemInfo {
+ uint32_t ObjectHandle;
+ uint32_t StorageID;
+ uint16_t ObjectFormat;
+ uint16_t ProtectionStatus;
+ uint64_t ObjectCompressedSize64;
+ uint32_t ParentObject;
+ uint16_t AssociationType;
+ uint32_t AssociationDesc;
+ uint32_t SequenceNumber;
+ char *Filename;
+ time_t ModificationDate;
+};
+typedef struct _PTPObjectFilesystemInfo PTPObjectFilesystemInfo;
+
/* max ptp string length INCLUDING terminating null character */
#define PTP_MAXSTRLEN 255
@@ -1305,7 +1440,9 @@ enum _PTPCanon_changes_types {
PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS,
PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO,
PTP_CANON_EOS_CHANGES_TYPE_FOCUSMASK,
- PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED
+ PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED,
+ PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO_CHANGE,
+ PTP_CANON_EOS_CHANGES_TYPE_OBJECTCONTENT_CHANGE
};
struct _PTPCanon_New_Object {
@@ -1523,6 +1660,11 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_AverageFilesizes 0xD048
#define PTP_DPC_CANON_ModelID 0xD049
+#define PTP_DPC_CANON_EOS_PowerZoomPosition 0xD055
+#define PTP_DPC_CANON_EOS_StrobeSettingSimple 0xD056
+#define PTP_DPC_CANON_EOS_ConnectTrigger 0xD058
+#define PTP_DPC_CANON_EOS_ChangeCameraMode 0xD059
+
/* From EOS 400D trace. */
#define PTP_DPC_CANON_EOS_Aperture 0xD101
#define PTP_DPC_CANON_EOS_ShutterSpeed 0xD102
@@ -1558,16 +1700,25 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_ImageFormatCF 0xD121 /* file setting CF */
#define PTP_DPC_CANON_EOS_ImageFormatSD 0xD122 /* file setting SD */
#define PTP_DPC_CANON_EOS_ImageFormatExtHD 0xD123 /* file setting exthd */
+#define PTP_DPC_CANON_EOS_RefocusState 0xD124
+#define PTP_DPC_CANON_EOS_CameraNickname 0xD125
+#define PTP_DPC_CANON_EOS_SpecialAcc 0xD12F
#define PTP_DPC_CANON_EOS_CompressionS 0xD130
#define PTP_DPC_CANON_EOS_CompressionM1 0xD131
#define PTP_DPC_CANON_EOS_CompressionM2 0xD132
#define PTP_DPC_CANON_EOS_CompressionL 0xD133
+#define PTP_DPC_CANON_EOS_IntervalShootSetting 0xD134
+#define PTP_DPC_CANON_EOS_IntervalShootState 0xD135
+#define PTP_DPC_CANON_EOS_PushMode 0xD136
+#define PTP_DPC_CANON_EOS_LvCFilterKind 0xD137
#define PTP_DPC_CANON_EOS_AEModeDial 0xD138
#define PTP_DPC_CANON_EOS_AEModeCustom 0xD139
#define PTP_DPC_CANON_EOS_MirrorUpSetting 0xD13A
#define PTP_DPC_CANON_EOS_HighlightTonePriority 0xD13B
#define PTP_DPC_CANON_EOS_AFSelectFocusArea 0xD13C
#define PTP_DPC_CANON_EOS_HDRSetting 0xD13D
+#define PTP_DPC_CANON_EOS_TimeShootSetting 0xD13E
+#define PTP_DPC_CANON_EOS_NFCApplicationInfo 0xD13F
#define PTP_DPC_CANON_EOS_PCWhiteBalance1 0xD140
#define PTP_DPC_CANON_EOS_PCWhiteBalance2 0xD141
#define PTP_DPC_CANON_EOS_PCWhiteBalance3 0xD142
@@ -1575,6 +1726,10 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_PCWhiteBalance5 0xD144
#define PTP_DPC_CANON_EOS_MWhiteBalance 0xD145
#define PTP_DPC_CANON_EOS_MWhiteBalanceEx 0xD146
+#define PTP_DPC_CANON_EOS_PowerZoomSpeed 0xD149
+#define PTP_DPC_CANON_EOS_NetworkServerRegion 0xD14A
+#define PTP_DPC_CANON_EOS_GPSLogCtrl 0xD14B
+#define PTP_DPC_CANON_EOS_GPSLogListNum 0xD14C
#define PTP_DPC_CANON_EOS_UnknownPropD14D 0xD14D /*found in Canon EOS 5D M3*/
#define PTP_DPC_CANON_EOS_PictureStyleStandard 0xD150
#define PTP_DPC_CANON_EOS_PictureStylePortrait 0xD151
@@ -1583,12 +1738,31 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_PictureStyleFaithful 0xD154
#define PTP_DPC_CANON_EOS_PictureStyleBlackWhite 0xD155
#define PTP_DPC_CANON_EOS_PictureStyleAuto 0xD156
+#define PTP_DPC_CANON_EOS_PictureStyleExStandard 0xD157
+#define PTP_DPC_CANON_EOS_PictureStyleExPortrait 0xD158
+#define PTP_DPC_CANON_EOS_PictureStyleExLandscape 0xD159
+#define PTP_DPC_CANON_EOS_PictureStyleExNeutral 0xD15A
+#define PTP_DPC_CANON_EOS_PictureStyleExFaithful 0xD15B
+#define PTP_DPC_CANON_EOS_PictureStyleExBlackWhite 0xD15C
+#define PTP_DPC_CANON_EOS_PictureStyleExAuto 0xD15D
+#define PTP_DPC_CANON_EOS_PictureStyleExFineDetail 0xD15E
#define PTP_DPC_CANON_EOS_PictureStyleUserSet1 0xD160
#define PTP_DPC_CANON_EOS_PictureStyleUserSet2 0xD161
#define PTP_DPC_CANON_EOS_PictureStyleUserSet3 0xD162
+#define PTP_DPC_CANON_EOS_PictureStyleExUserSet1 0xD163
+#define PTP_DPC_CANON_EOS_PictureStyleExUserSet2 0xD164
+#define PTP_DPC_CANON_EOS_PictureStyleExUserSet3 0xD165
+#define PTP_DPC_CANON_EOS_AvailableImageSize 0xD168
+#define PTP_DPC_CANON_EOS_ErrorHistory 0xD169
+#define PTP_DPC_CANON_EOS_LensExchangeHistory 0xD16A
+#define PTP_DPC_CANON_EOS_StroboExchangeHistory 0xD16B
#define PTP_DPC_CANON_EOS_PictureStyleParam1 0xD170
#define PTP_DPC_CANON_EOS_PictureStyleParam2 0xD171
#define PTP_DPC_CANON_EOS_PictureStyleParam3 0xD172
+#define PTP_DPC_CANON_EOS_MovieRecordVolumeLine 0xD174
+#define PTP_DPC_CANON_EOS_NetworkCommunicationMode 0xD175
+#define PTP_DPC_CANON_EOS_CanonLogGamma 0xD176
+#define PTP_DPC_CANON_EOS_SmartphoneShowImageConfig 0xD177
#define PTP_DPC_CANON_EOS_HighISOSettingNoiseReduction 0xD178
#define PTP_DPC_CANON_EOS_MovieServoAF 0xD179
#define PTP_DPC_CANON_EOS_ContinuousAFValid 0xD17A
@@ -1627,6 +1801,7 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_UnknownPropD19A 0xD19A /*found in Canon EOS 5D M3*/
#define PTP_DPC_CANON_EOS_UnknownPropD19C 0xD19C /*found in Canon EOS 5D M3*/
#define PTP_DPC_CANON_EOS_UnknownPropD19D 0xD19D /*found in Canon EOS 5D M3*/
+#define PTP_DPC_CANON_EOS_GPSDeviceActive 0xD19F
#define PTP_DPC_CANON_EOS_CustomFuncEx 0xD1a0
#define PTP_DPC_CANON_EOS_MyMenu 0xD1a1
#define PTP_DPC_CANON_EOS_MyMenuList 0xD1a2
@@ -1987,6 +2162,7 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_FUJI_ReleaseMode 0xD201
#define PTP_DPC_FUJI_FocusAreas 0xD206
#define PTP_DPC_FUJI_AELock 0xD213
+#define PTP_DPC_FUJI_Copyright 0xD215
#define PTP_DPC_FUJI_Aperture 0xD218
#define PTP_DPC_FUJI_ShutterSpeed 0xD219
@@ -2010,6 +2186,22 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_MTP_Zune_UnknownVersion 0xD181
/* Olympus */
+/* these are from OMD E-M1 Mark 2 */
+#define PTP_DPC_OLYMPUS_Aperture 0xD002
+#define PTP_DPC_OLYMPUS_FocusMode 0xD003
+#define PTP_DPC_OLYMPUS_ExposureMeteringMode 0xD004
+#define PTP_DPC_OLYMPUS_ISO 0xD007
+#define PTP_DPC_OLYMPUS_ExposureCompensation 0xD008
+#define PTP_DPC_OLYMPUS_OMD_DriveMode 0xD009
+#define PTP_DPC_OLYMPUS_ImageFormat 0xD00D
+#define PTP_DPC_OLYMPUS_FaceDetection 0xD01A
+#define PTP_DPC_OLYMPUS_AspectRatio 0xD01B
+#define PTP_DPC_OLYMPUS_Shutterspeed 0xD01C
+#define PTP_DPC_OLYMPUS_WhiteBalance 0xD01E
+#define PTP_DPC_OLYMPUS_LiveViewModeOM 0xD06D
+#define PTP_DPC_OLYMPUS_CaptureTarget 0xD0DC
+
+/* unsure where these were from */
#define PTP_DPC_OLYMPUS_ResolutionMode 0xD102
#define PTP_DPC_OLYMPUS_FocusPriority 0xD103
#define PTP_DPC_OLYMPUS_DriveMode 0xD104
@@ -2174,6 +2366,83 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_PARROT_MultisensorsIrradianceIntegrationTime 0xD218
#define PTP_DPC_PARROT_OverlapRate 0xD219
+/* Panasonic does not have regular device properties, they use some 32bit values */
+#define PTP_DPC_PANASONIC_PhotoStyle 0x02000010
+#define PTP_DPC_PANASONIC_ISO 0x02000020
+#define PTP_DPC_PANASONIC_ShutterSpeed 0x02000030
+#define PTP_DPC_PANASONIC_Aperture 0x02000040
+#define PTP_DPC_PANASONIC_WhiteBalance 0x02000050
+#define PTP_DPC_PANASONIC_Exposure 0x02000060
+#define PTP_DPC_PANASONIC_AFArea 0x02000070
+#define PTP_DPC_PANASONIC_CameraMode 0x02000080
+#define PTP_DPC_PANASONIC_ImageFormat 0x020000A2
+#define PTP_DPC_PANASONIC_MeteringInfo 0x020000B0
+#define PTP_DPC_PANASONIC_IntervalInfo 0x020000C0
+#define PTP_DPC_PANASONIC_RecDispConfig 0x020000E0
+#define PTP_DPC_PANASONIC_RecInfoFlash 0x02000110
+#define PTP_DPC_PANASONIC_BurstBracket 0x02000140
+#define PTP_DPC_PANASONIC_RecPreviewConfig 0x02000170
+#define PTP_DPC_PANASONIC_RecInfoSelfTimer 0x020001A0
+#define PTP_DPC_PANASONIC_RecInfoFlash2 0x020001B0
+#define PTP_DPC_PANASONIC_MovConfig 0x06000010
+#define PTP_DPC_PANASONIC_08000010 0x08000010
+/* various modes of the camera, HDMI, GetDateTimeWorldTime Mode/Area, SetupCfgInfo, SetupConfig_DateTime, GetSystemFreq Mode, GetSetupConfig Info */
+/*
+0000 54 00 00 00 02 00 0a 94-04 00 00 00 11 00 00 08 T...............
+0010 0a 00 00 00 e2 07 07 00-10 00 11 00 09 00 12 00 ................
+0020 00 08 02 00 00 00 00 00-13 00 00 08 02 00 00 00 ................
+0030 00 00 14 00 00 08 04 00-00 00 00 00 00 00 15 00 ................
+0040 00 08 04 00 00 00 00 00-00 00 16 00 00 08 02 00 ................
+0050 00 00 01 00 - ....
+
+0000 d0 00 00 00 02 00 07 91-04 00 00 00 10 00 00 08 ................
+0010 14 00 00 00 14 00 00 00-01 00 01 00 00 00 00 00 ................
+0020 06 00 00 00 38 03 00 00-11 00 00 08 14 00 00 00 ....8...........
+0030 14 00 00 00 01 00 01 00-00 00 00 00 05 00 00 00 ................
+0040 c8 00 00 00 12 00 00 08-14 00 00 00 14 00 00 00 ................
+0050 01 00 01 00 00 00 00 00-01 00 00 00 36 00 00 00 ............6...
+0060 13 00 00 08 14 00 00 00-14 00 00 00 01 00 01 00 ................
+0070 00 00 00 00 01 00 00 00-2a 00 00 00 14 00 00 08 ........*.......
+0080 14 00 00 00 14 00 00 00-01 00 01 00 00 00 00 00 ................
+0090 02 00 00 00 9e 00 00 00-15 00 00 08 14 00 00 00 ................
+00a0 14 00 00 00 01 00 01 00-00 00 00 00 02 00 00 00 ................
+00b0 9e 00 00 00 16 00 00 08-14 00 00 00 14 00 00 00 ................
+00c0 01 00 01 00 00 00 00 00-01 00 00 00 2c 00 00 00 ............,...
+ */
+#define PTP_DPC_PANASONIC_08000091 0x08000091 /* SetupFilesConfig_Set_Target */
+/*
+0000 16 00 00 00 02 00 0a 94-04 00 00 00 91 00 00 08 ................
+0010 02 00 00 00 00 00 - ......
+
+0000 44 00 00 00 02 00 07 91-04 00 00 00 90 00 00 08 D...............
+0010 14 00 00 00 14 00 00 00-01 00 01 00 00 00 00 00 ................
+0020 01 00 00 00 48 00 00 00-91 00 00 08 14 00 00 00 ....H...........
+0030 14 00 00 00 01 00 01 00-00 00 00 00 01 00 00 00 ................
+0040 2c 00 00 00 - ,...
+ */
+
+#define PTP_DPC_PANASONIC_GetFreeSpaceInImages 0x12000010
+/*
+0000 98 00 00 00 02 00 14 94-04 00 00 00 11 00 00 12 ................
+0010 04 00 00 00 4e 00 00 00-12 00 00 12 04 00 00 00 ....N...........
+0020 00 00 00 00 13 00 00 12-02 00 00 00 00 00 14 00 ................
+0030 00 12 04 00 00 00 00 00-00 00 15 00 00 12 06 00 ................
+0040 00 00 02 00 01 00 00 00-16 00 00 12 3a 00 00 00 ............:...
+0050 02 00 4e 00 00 00 00 00-00 00 4e 00 00 00 ff ff ..N.......N.....
+0060 ff ff 00 00 00 00 ff ff-ff ff 00 00 00 00 00 00 ................
+0070 00 00 00 00 00 00 ff ff-ff ff 00 00 00 00 ff ff ................
+0080 ff ff 00 00 00 00 00 00-00 00 17 00 00 12 06 00 ................
+0090 00 00 00 00 00 00 00 00- ........
+ */
+#define PTP_DPC_PANASONIC_GetBatteryInfo 0x16000010
+/*
+0000 1c 00 00 00 02 00 14 94-04 00 00 00 11 00 00 16 ................
+0010 08 00 00 00 4b 00 00 00-4b 00 ff ff ....K...K...
+ */
+#define PTP_DPC_PANASONIC_LensGetMFBar 0x12010040
+/* 15c00010 GetSetupInfo Error */
+/* 18000010 GetUSBSpeed */
+
/* MTP specific Object Properties */
#define PTP_OPC_StorageID 0xDC01
@@ -2397,6 +2666,7 @@ typedef uint16_t (* PTPIOGetResp) (PTPParams* params, PTPContainer* resp);
typedef uint16_t (* PTPIOGetData) (PTPParams* params, PTPContainer* ptp,
PTPDataHandler *putter);
typedef uint16_t (* PTPIOCancelReq) (PTPParams* params, uint32_t transaction_id);
+typedef uint16_t (* PTPIODevStatReq) (PTPParams* params);
/* debug functions */
typedef void (* PTPErrorFunc) (void *data, const char *format, va_list args)
@@ -2458,6 +2728,7 @@ struct _PTPParams {
PTPIOGetResp event_check_queue;
PTPIOGetResp event_wait;
PTPIOCancelReq cancelreq_func;
+ PTPIODevStatReq devstatreq_func;
/* Custom error and debug function */
PTPErrorFunc error_func;
@@ -2568,6 +2839,8 @@ uint16_t ptp_usb_control_get_extended_event_data (PTPParams *params, char *buffe
uint16_t ptp_usb_control_device_reset_request (PTPParams *params);
uint16_t ptp_usb_control_get_device_status (PTPParams *params, char *buffer, int *size);
uint16_t ptp_usb_control_cancel_request (PTPParams *params, uint32_t transid);
+uint16_t ptp_usb_control_cancel_request (PTPParams *params, uint32_t transid);
+uint16_t ptp_usb_control_device_status_request (PTPParams *params);
int ptp_ptpip_connect (PTPParams* params, const char *port);
@@ -2672,6 +2945,12 @@ uint16_t ptp_getthumb (PTPParams *params, uint32_t handle,
uint16_t ptp_deleteobject (PTPParams* params, uint32_t handle,
uint32_t ofc);
+uint16_t ptp_moveobject (PTPParams* params, uint32_t handle,
+ uint32_t storage, uint32_t parent);
+
+uint16_t ptp_copyobject (PTPParams* params, uint32_t handle,
+ uint32_t storage, uint32_t parent);
+
uint16_t ptp_sendobjectinfo (PTPParams* params, uint32_t* store,
uint32_t* parenthandle, uint32_t* handle,
PTPObjectInfo* objectinfo);
@@ -2721,7 +3000,7 @@ uint16_t ptp_generic_setdevicepropvalue (PTPParams* params, uint16_t propcode,
PTPPropertyValue* value, uint16_t datatype);
uint16_t ptp_getfilesystemmanifest (PTPParams* params, uint32_t storage,
uint32_t objectformatcode, uint32_t associationOH,
- unsigned char** data);
+ uint64_t *numoifs, PTPObjectFilesystemInfo **oifs);
@@ -2931,8 +3210,9 @@ uint16_t ptp_canon_checkevent (PTPParams* params,
#define CANON_EOS_OLC_APERTURE 0x0004
#define CANON_EOS_OLC_ISO 0x0008
-#define ptp_canon_eos_setrequestolcinfogroup(params,igmask) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRequestOLCInfoGroup,1,igmask)
-#define ptp_canon_eos_requestdevicepropvalue(params,prop) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RequestDevicePropValue,1,prop)
+#define ptp_canon_eos_setrequestolcinfogroup(params,igmask) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRequestOLCInfoGroup,1,igmask)
+#define ptp_canon_eos_requestdevicepropvalue(params,prop) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RequestDevicePropValue,1,prop)
+#define ptp_canon_eos_setrequestrollingpitchinglevel(params,onoff) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRequestRollingPitchingLevel,1,onoff)
uint16_t ptp_canon_eos_capture (PTPParams* params, uint32_t *result);
uint16_t ptp_canon_eos_getevent (PTPParams* params, PTPCanon_changes_entry **entries, int *nrofentries);
uint16_t ptp_canon_getpartialobject (PTPParams* params, uint32_t handle,
@@ -3016,6 +3296,7 @@ uint16_t ptp_canon_getpairinginfo (PTPParams* params, uint32_t nr, unsigned char
uint16_t ptp_canon_eos_getstorageids (PTPParams* params, PTPStorageIDs* storageids);
uint16_t ptp_canon_eos_getstorageinfo (PTPParams* params, uint32_t p1, unsigned char**, unsigned int*);
uint16_t ptp_canon_eos_getpartialobject (PTPParams* params, uint32_t oid, uint32_t off, uint32_t xsize, unsigned char**data);
+uint16_t ptp_canon_eos_getpartialobjectex (PTPParams* params, uint32_t oid, uint32_t off, uint32_t xsize, unsigned char**data);
uint16_t ptp_canon_eos_getobjectinfoex (PTPParams* params, uint32_t storageid, uint32_t objectid, uint32_t unk,
PTPCANONFolderEntry **entries, unsigned int *nrofentries);
uint16_t ptp_canon_eos_setdevicepropvalueex (PTPParams* params, unsigned char* data, unsigned int size);
@@ -3315,6 +3596,9 @@ uint16_t ptp_olympus_opensession (PTPParams*, unsigned char**, unsigned int *);
#define ptp_olympus_capture(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_Capture, 1, p1)
uint16_t ptp_olympus_getcameraid (PTPParams*, unsigned char**, unsigned int *);
+uint16_t ptp_olympus_omd_capture (PTPParams* params);
+uint16_t ptp_olympus_omd_move_focus (PTPParams* params, uint32_t direction, uint32_t step_size);
+
/* Non PTP protocol functions */
static inline int
ptp_operation_issupported(PTPParams* params, uint16_t operation)
@@ -3346,6 +3630,7 @@ void ptp_error (PTPParams *params, const char *format, ...);
const char* ptp_get_property_description(PTPParams* params, uint16_t dpc);
const char* ptp_get_opcode_name(PTPParams* params, uint16_t opcode);
+const char* ptp_get_event_code_name(PTPParams* params, uint16_t event_code);
int
ptp_render_property_value(PTPParams* params, uint16_t dpc,
@@ -3362,6 +3647,7 @@ uint16_t ptp_object_want (PTPParams *, uint32_t handle, unsigned int want, PTPOb
void ptp_objects_sort (PTPParams *);
uint16_t ptp_object_find (PTPParams *params, uint32_t handle, PTPObject **retob);
uint16_t ptp_object_find_or_insert (PTPParams *params, uint32_t handle, PTPObject **retob);
+uint16_t ptp_list_folder (PTPParams *params, uint32_t storage, uint32_t handle);
/* ptpip.c */
void ptp_nikon_getptpipguid (unsigned char* guid);
@@ -3423,11 +3709,35 @@ uint16_t ptp_chdk_get_script_status(PTPParams* params, unsigned *status);
uint16_t ptp_chdk_write_script_msg(PTPParams* params, char *data, unsigned size, int target_script_id, int *status);
uint16_t ptp_chdk_read_script_msg(PTPParams* params, ptp_chdk_script_msg **msg);
uint16_t ptp_chdk_get_live_data(PTPParams* params, unsigned flags, unsigned char **data, unsigned int *data_size);
+uint16_t ptp_chdk_parse_live_data (PTPParams* params, unsigned char *data, unsigned int data_size,
+ lv_data_header *header, lv_framebuffer_desc *vpd, lv_framebuffer_desc *bmd);
uint16_t ptp_chdk_call_function(PTPParams* params, int *args, int size, int *ret);
/*uint16_t ptp_chdk_get_script_output(PTPParams* params, char **output ); */
/*uint16_t ptp_chdk_get_video_settings(PTPParams* params, ptp_chdk_videosettings* vsettings);*/
+uint16_t ptp_fuji_getevents (PTPParams* params, uint16_t** events, uint16_t* count);
+
+#define ptp_panasonic_liveview(params,enable) ptp_generic_no_data(params,PTP_OC_PANASONIC_Liveview,1,enable?0xD000010:0xD000011)
+uint16_t ptp_panasonic_liveview_image (PTPParams* params, unsigned char **data, unsigned int *size);
+
+uint16_t ptp_panasonic_setdeviceproperty (PTPParams* params, uint32_t propcode, unsigned char *value, uint16_t valuesize);
+uint16_t ptp_panasonic_getdeviceproperty (PTPParams *params, uint32_t propcode, uint16_t *valuesize, uint32_t *currentValue);
+uint16_t ptp_panasonic_getdevicepropertydesc (PTPParams *params, uint32_t propcode, uint16_t valuesize, uint32_t *currentValue, uint32_t **propertyValueList, uint32_t *propertyValueListLength);
+uint16_t ptp_panasonic_getdevicepropertysize (PTPParams *params, uint32_t propcode);
+
+
+
+uint16_t ptp_olympus_liveview_image (PTPParams* params, unsigned char **data, unsigned int *size);
+#define ptp_olympus_omd_move_focus(params,direction,step_size) ptp_generic_no_data(params,PTP_OC_OLYMPUS_OMD_MFDrive,2,direction,step_size)
+uint16_t ptp_olympus_omd_capture (PTPParams* params);
+uint16_t ptp_olympus_init_pc_mode (PTPParams* params);
+uint16_t ptp_olympus_sdram_image (PTPParams* params, unsigned char **data, unsigned int *size);
+
+
+
+#define ptp_panasonic_capture(params) ptp_generic_no_data(params,PTP_OC_PANASONIC_InitiateCapture,1,0x3000011)
+
#ifdef __cplusplus
}
#endif /* __cplusplus */