Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Unified Diff: src/ptp.h

Issue 2345493002: Uprev libmtp to 1.1.12 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libmtp@master
Patch Set: Re-upload cl Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/playlist-spl.c ('k') | src/ptp.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ptp.h
diff --git a/src/ptp.h b/src/ptp.h
index c1733dd7d35a92c1c8748abd8b731b50733789b2..6ba388497020401743806c67233d84c178b6d2c1 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-2012 Marcus Meissner <marcus@jet.franken.de>
+ * Copyright (C) 2003-2014 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
@@ -16,8 +16,8 @@
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
*/
#ifndef __PTP_H__
@@ -25,7 +25,7 @@
#include <stdarg.h>
#include <time.h>
-#ifdef HAVE_ICONV
+#if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H)
#include <iconv.h>
#endif
#include "gphoto2-endian.h"
@@ -74,12 +74,16 @@ typedef struct _PTPContainer PTPContainer;
*
* Previously we had this as 4096 for MTP devices. We have found
* and fixed the bugs that made this necessary and it can be 512 again.
+ *
+ * USB 3.0 has now 1024 byte EPs.
*/
#define PTP_USB_BULK_HS_MAX_PACKET_LEN_WRITE 512
#define PTP_USB_BULK_HS_MAX_PACKET_LEN_READ 512
+#define PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE 1024
+#define PTP_USB_BULK_SS_MAX_PACKET_LEN_READ 1024
#define PTP_USB_BULK_HDR_LEN (2*sizeof(uint32_t)+2*sizeof(uint16_t))
-#define PTP_USB_BULK_PAYLOAD_LEN_WRITE (PTP_USB_BULK_HS_MAX_PACKET_LEN_WRITE-PTP_USB_BULK_HDR_LEN)
-#define PTP_USB_BULK_PAYLOAD_LEN_READ (PTP_USB_BULK_HS_MAX_PACKET_LEN_READ-PTP_USB_BULK_HDR_LEN)
+#define PTP_USB_BULK_PAYLOAD_LEN_WRITE (PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE-PTP_USB_BULK_HDR_LEN)
+#define PTP_USB_BULK_PAYLOAD_LEN_READ (PTP_USB_BULK_SS_MAX_PACKET_LEN_READ-PTP_USB_BULK_HDR_LEN)
#define PTP_USB_BULK_REQ_LEN (PTP_USB_BULK_HDR_LEN+5*sizeof(uint32_t))
struct _PTPUSBBulkContainer {
@@ -165,9 +169,15 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_VENDOR_FOTONATION 0x0000000C
#define PTP_VENDOR_PENTAX 0x0000000D
#define PTP_VENDOR_FUJI 0x0000000E
+/* 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 */
/* Vendor extension ID used for MTP (occasionaly, usualy 6 is used) */
#define PTP_VENDOR_MTP 0xffffffff
+/* gphoto overrides */
+#define PTP_VENDOR_GP_OLYMPUS 0xfffffffe
+
/* Operation Codes */
/* PTP v1.0 operation codes */
@@ -268,6 +278,7 @@ typedef struct _PTPIPHeader PTPIPHeader;
/* 902c: no parms, read 3 uint32 in data, no response parms */
#define PTP_OC_CANON_902C 0x902C
#define PTP_OC_CANON_GetDirectory 0x902D
+#define PTP_OC_CANON_902E 0x902E
#define PTP_OC_CANON_SetPairingInfo 0x9030
#define PTP_OC_CANON_GetPairingInfo 0x9031
@@ -278,6 +289,13 @@ typedef struct _PTPIPHeader PTPIPHeader;
#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_SetWebServiceData 0x906B
+#define PTP_OC_CANON_GetRootCertificateSpec 0x906C
+#define PTP_OC_CANON_GetRootCertificateData 0x906D
+#define PTP_OC_CANON_SetRootCertificateData 0x906F
+
/* 9101: no args, 8 byte data (01 00 00 00 00 00 00 00), no resp data. */
#define PTP_OC_CANON_EOS_GetStorageIDs 0x9101
/* 9102: 1 arg (0)
@@ -359,7 +377,7 @@ typedef struct _PTPIPHeader PTPIPHeader;
#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 0x9122
+#define PTP_OC_CANON_EOS_GetWftProfile 0x9123
#define PTP_OC_CANON_EOS_SetProfileToWft 0x9124
#define PTP_OC_CANON_EOS_BulbStart 0x9125
#define PTP_OC_CANON_EOS_BulbEnd 0x9126
@@ -370,17 +388,54 @@ typedef struct _PTPIPHeader PTPIPHeader;
/* 0x9129 args (0x1/0x2), no data, no resp args */
#define PTP_OC_CANON_EOS_RemoteReleaseOff 0x9129
+#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_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_GetCTGInfo 0x9135
+#define PTP_OC_CANON_EOS_GetLensAdjust 0x9136
+#define PTP_OC_CANON_EOS_SetLensAdjust 0x9137
+#define PTP_OC_CANON_EOS_GetMusicInfo 0x9138
+/* 3 paramaeters, no data, OFC, size, unknown */
+#define PTP_OC_CANON_EOS_CreateHandle 0x9139
+#define PTP_OC_CANON_EOS_SendPartialObjectEx 0x913A
+#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_GetCameraSupport 0x913F
+#define PTP_OC_CANON_EOS_SetRating 0x9140 /* 2 args */
+#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_TerminateViewfinder 0x9152
+/* EOS M2 wlan: 2 params, 0x00200000 0x01000000 */
#define PTP_OC_CANON_EOS_GetViewFinderData 0x9153
#define PTP_OC_CANON_EOS_DoAf 0x9154
#define PTP_OC_CANON_EOS_DriveLens 0x9155
-#define PTP_OC_CANON_EOS_DepthOfFieldPreview 0x9156
-#define PTP_OC_CANON_EOS_ClickWB 0x9157
-#define PTP_OC_CANON_EOS_Zoom 0x9158
-#define PTP_OC_CANON_EOS_ZoomPosition 0x9159
-#define PTP_OC_CANON_EOS_SetLiveAfFrame 0x915a
+#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_ZoomPosition 0x9159 /* 2 args: x,y */
+#define PTP_OC_CANON_EOS_SetLiveAfFrame 0x915A
+#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_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_TransferComplete2 0x91F0
+#define PTP_OC_CANON_EOS_CancelTransfer2 0x91F1
#define PTP_OC_CANON_EOS_FAPIMessageTX 0x91FE
#define PTP_OC_CANON_EOS_FAPIMessageRX 0x91FF
@@ -393,8 +448,8 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_NIKON_GetFileInfoInBlock 0x9011
#define PTP_OC_NIKON_Capture 0x90C0 /* 1 param, no data */
#define PTP_OC_NIKON_AfDrive 0x90C1 /* no params, no data */
-#define PTP_OC_NIKON_SetControlMode 0x90C2 /* 1 param, no data */
-#define PTP_OC_NIKON_DelImageSDRAM 0x90C3 /* no params, no data */
+#define PTP_OC_NIKON_SetControlMode 0x90C2 /* 1 param, no data */
+#define PTP_OC_NIKON_DelImageSDRAM 0x90C3 /* 1 param, no data */
#define PTP_OC_NIKON_GetLargeThumb 0x90C4
#define PTP_OC_NIKON_CurveDownload 0x90C5 /* 1 param, data in */
#define PTP_OC_NIKON_CurveUpload 0x90C6 /* 1 param, data out */
@@ -403,22 +458,39 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_NIKON_SetPreWBData 0x90C9 /* 3 params, data out */
#define PTP_OC_NIKON_GetVendorPropCodes 0x90CA /* 0 params, data in */
#define PTP_OC_NIKON_AfCaptureSDRAM 0x90CB /* no params, no data */
-#define PTP_OC_NIKON_GetPictCtrlData 0x90CC
-#define PTP_OC_NIKON_SetPictCtrlData 0x90CD
-#define PTP_OC_NIKON_DelCstPicCtrl 0x90CE
-#define PTP_OC_NIKON_GetPicCtrlCapability 0x90CF
+#define PTP_OC_NIKON_GetPictCtrlData 0x90CC /* 2 params, data in */
+#define PTP_OC_NIKON_SetPictCtrlData 0x90CD /* 2 params, data out */
+#define PTP_OC_NIKON_DelCstPicCtrl 0x90CE /* 1 param, no data */
+#define PTP_OC_NIKON_GetPicCtrlCapability 0x90CF /* 1 param, data in */
/* Nikon Liveview stuff */
#define PTP_OC_NIKON_GetPreviewImg 0x9200
-#define PTP_OC_NIKON_StartLiveView 0x9201
-#define PTP_OC_NIKON_EndLiveView 0x9202
-#define PTP_OC_NIKON_GetLiveViewImg 0x9203
-#define PTP_OC_NIKON_MfDrive 0x9204
-#define PTP_OC_NIKON_ChangeAfArea 0x9205
-#define PTP_OC_NIKON_AfDriveCancel 0x9206
+#define PTP_OC_NIKON_StartLiveView 0x9201 /* no params */
+#define PTP_OC_NIKON_EndLiveView 0x9202 /* no params */
+#define PTP_OC_NIKON_GetLiveViewImg 0x9203 /* no params, data in */
+#define PTP_OC_NIKON_MfDrive 0x9204 /* 2 params */
+#define PTP_OC_NIKON_ChangeAfArea 0x9205 /* 2 params */
+#define PTP_OC_NIKON_AfDriveCancel 0x9206 /* no params */
+/* 2 params:
+ * 0xffffffff == No AF before, 0xfffffffe == AF before capture
+ * sdram=1, card=0
+ */
+#define PTP_OC_NIKON_InitiateCaptureRecInMedia 0x9207 /* 1 params */
+
+#define PTP_OC_NIKON_GetVendorStorageIDs 0x9209 /* no params, data in */
+
+#define PTP_OC_NIKON_StartMovieRecInCard 0x920a /* no params, no data */
+#define PTP_OC_NIKON_EndMovieRec 0x920b /* no params, no data */
+
+#define PTP_OC_NIKON_TerminateCapture 0x920c /* 2 params */
#define PTP_OC_NIKON_GetDevicePTPIPInfo 0x90E0
+#define PTP_OC_NIKON_GetPartialObjectHiSpeed 0x9400 /* 3 params, data in */
+
+/* From Nikon V1 Trace */
+#define PTP_OC_NIKON_GetDevicePropEx 0x9504 /* gets device prop dataa */
+
/* Casio EX-F1 (from http://code.google.com/p/exf1ctrl/ ) */
#define PTP_OC_CASIO_STILL_START 0x9001
#define PTP_OC_CASIO_STILL_STOP 0x9002
@@ -450,6 +522,30 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_CASIO_GET_OBJECT 0x9025
#define PTP_OC_CASIO_GET_THUMBNAIL 0x9026
+/* Sony stuff */
+/* 9201:
+ * 3 params: 1,0,0 ; IN: data 8 bytes all 0
+ * or:
+ * 3 params: 2,0,0 ; IN: data 8 bytes all 0
+ * or
+ * 3 params: 3,0,0,: IN: data 8 butes all 0
+ */
+#define PTP_OC_SONY_SDIOConnect 0x9201
+/* 9202: 1 param, 0xc8; IN data:
+ * 16 bit: 0xc8
+ * ptp array 32 bit: index, 16 bit values of propcodes */
+#define PTP_OC_SONY_GetSDIOGetExtDeviceInfo 0x9202
+
+#define PTP_OC_SONY_GetDevicePropdesc 0x9203
+#define PTP_OC_SONY_GetDevicePropertyValue 0x9204
+/* 1 param, 16bit propcode, SEND DATA: propvalue */
+#define PTP_OC_SONY_SetControlDeviceA 0x9205
+#define PTP_OC_SONY_GetControlDeviceDesc 0x9206
+/* 1 param, 16bit propcode, SEND DATA: propvalue */
+#define PTP_OC_SONY_SetControlDeviceB 0x9207
+/* get all device property data at once */
+#define PTP_OC_SONY_GetAllDevicePropData 0x9209 /* gets a 4126 byte blob of device props ?*/
+
/* Microsoft / MTP extension codes */
#define PTP_OC_MTP_GetObjectPropsSupported 0x9801
@@ -542,12 +638,37 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_OC_OLYMPUS_SetCameraControlMode 0x910b
#define PTP_OC_OLYMPUS_SetWBRGBGain 0x910c
#define PTP_OC_OLYMPUS_GetDeviceInfo 0x9301
-#define PTP_OC_OLYMPUS_Init1 0x9302
+#define PTP_OC_OLYMPUS_OpenSession 0x9302
#define PTP_OC_OLYMPUS_SetDateTime 0x9402
#define PTP_OC_OLYMPUS_GetDateTime 0x9482
#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
+#define PTP_OC_ANDROID_TruncateObject 0x95C3
+#define PTP_OC_ANDROID_BeginEditObject 0x95C4
+#define PTP_OC_ANDROID_EndEditObject 0x95C5
+
+/* Leica opcodes, from Lightroom tether plugin */
+#define PTP_OC_LEICA_SetCameraSettings 0x9001
+#define PTP_OC_LEICA_GetCameraSettings 0x9002
+#define PTP_OC_LEICA_GetLensParameter 0x9003
+/* probably 2 arguments.
+ * generic: releaseStage, stepSize
+ * Release(releasestage) = (releasestage,0)
+ * Release() = (0,0)
+ * AEStart() = (1,0)
+ * Autofocusrelease() = (2,0)
+ * AutofocusPush() = (1,0) ... same as AEStart?
+ * KeepCameraActive() = (0xe,0)
+ */
+#define PTP_OC_LEICA_Release 0x9004
+#define PTP_OC_LEICA_OpenLESession 0x9005
+#define PTP_OC_LEICA_CloseLESession 0x9006
+#define PTP_OC_LEICA_RequestObjectTransferReady 0x9007
+
/* Proprietary vendor extension operations mask */
#define PTP_OC_EXTENSION_MASK 0xF000
#define PTP_OC_EXTENSION 0x9000
@@ -559,7 +680,7 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_RC_OK 0x2001
#define PTP_RC_GeneralError 0x2002
#define PTP_RC_SessionNotOpen 0x2003
-#define PTP_RC_InvalidTransactionID 0x2004
+#define PTP_RC_InvalidTransactionID 0x2004
#define PTP_RC_OperationNotSupported 0x2005
#define PTP_RC_ParameterNotSupported 0x2006
#define PTP_RC_IncompleteTransfer 0x2007
@@ -646,12 +767,12 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_RC_MTP_WFC_Version_Not_Supported 0xA122
/* libptp2 extended ERROR codes */
-#define PTP_ERROR_IO 0x02FF
-#define PTP_ERROR_DATA_EXPECTED 0x02FE
-#define PTP_ERROR_RESP_EXPECTED 0x02FD
-#define PTP_ERROR_BADPARAM 0x02FC
-#define PTP_ERROR_CANCEL 0x02FB
#define PTP_ERROR_TIMEOUT 0x02FA
+#define PTP_ERROR_CANCEL 0x02FB
+#define PTP_ERROR_BADPARAM 0x02FC
+#define PTP_ERROR_RESP_EXPECTED 0x02FD
+#define PTP_ERROR_DATA_EXPECTED 0x02FE
+#define PTP_ERROR_IO 0x02FF
/* PTP Event Codes */
@@ -675,36 +796,40 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_EC_CANON_ExtendedErrorcode 0xC005 /* ? */
#define PTP_EC_CANON_ObjectInfoChanged 0xC008
#define PTP_EC_CANON_RequestObjectTransfer 0xC009
+#define PTP_EC_CANON_ShutterButtonPressed0 0xC00B
#define PTP_EC_CANON_CameraModeChanged 0xC00C
-#define PTP_EC_CANON_ShutterButtonPressed 0xC00E
+#define PTP_EC_CANON_ShutterButtonPressed1 0xC00E
#define PTP_EC_CANON_StartDirectTransfer 0xC011
#define PTP_EC_CANON_StopDirectTransfer 0xC013
/* Canon EOS events */
-#define PTP_EC_CANON_EOS_RequestGetEvent 0xc101
-#define PTP_EC_CANON_EOS_ObjectAddedEx 0xc181
-#define PTP_EC_CANON_EOS_ObjectRemoved 0xc182
-#define PTP_EC_CANON_EOS_RequestGetObjectInfoEx 0xc183
-#define PTP_EC_CANON_EOS_StorageStatusChanged 0xc184
-#define PTP_EC_CANON_EOS_StorageInfoChanged 0xc185
-#define PTP_EC_CANON_EOS_RequestObjectTransfer 0xc186
-#define PTP_EC_CANON_EOS_ObjectInfoChangedEx 0xc187
-#define PTP_EC_CANON_EOS_ObjectContentChanged 0xc188
-#define PTP_EC_CANON_EOS_PropValueChanged 0xc189
-#define PTP_EC_CANON_EOS_AvailListChanged 0xc18a
-#define PTP_EC_CANON_EOS_CameraStatusChanged 0xc18b
-#define PTP_EC_CANON_EOS_WillSoonShutdown 0xc18d
-#define PTP_EC_CANON_EOS_ShutdownTimerUpdated 0xc18e
-#define PTP_EC_CANON_EOS_RequestCancelTransfer 0xc18f
+#define PTP_EC_CANON_EOS_RequestGetEvent 0xc101
+#define PTP_EC_CANON_EOS_ObjectAddedEx 0xc181
+#define PTP_EC_CANON_EOS_ObjectRemoved 0xc182
+#define PTP_EC_CANON_EOS_RequestGetObjectInfoEx 0xc183
+#define PTP_EC_CANON_EOS_StorageStatusChanged 0xc184
+#define PTP_EC_CANON_EOS_StorageInfoChanged 0xc185
+#define PTP_EC_CANON_EOS_RequestObjectTransfer 0xc186
+#define PTP_EC_CANON_EOS_ObjectInfoChangedEx 0xc187
+#define PTP_EC_CANON_EOS_ObjectContentChanged 0xc188
+#define PTP_EC_CANON_EOS_PropValueChanged 0xc189
+#define PTP_EC_CANON_EOS_AvailListChanged 0xc18a
+#define PTP_EC_CANON_EOS_CameraStatusChanged 0xc18b
+#define PTP_EC_CANON_EOS_WillSoonShutdown 0xc18d
+#define PTP_EC_CANON_EOS_ShutdownTimerUpdated 0xc18e
+#define PTP_EC_CANON_EOS_RequestCancelTransfer 0xc18f
#define PTP_EC_CANON_EOS_RequestObjectTransferDT 0xc190
#define PTP_EC_CANON_EOS_RequestCancelTransferDT 0xc191
-#define PTP_EC_CANON_EOS_StoreAdded 0xc192
-#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_RequestObjectTransferTS 0xC1a2
-#define PTP_EC_CANON_EOS_AfResult 0xc1a3
+#define PTP_EC_CANON_EOS_StoreAdded 0xc192
+#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_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_RequestObjectTransferFTP 0xc1f1
/* Nikon extension Event Codes */
@@ -715,6 +840,15 @@ typedef struct _PTPIPHeader PTPIPHeader;
#define PTP_EC_Nikon_AdvancedTransfer 0xC103
#define PTP_EC_Nikon_PreviewImageAdded 0xC104
+/* Olympus E series */
+#define PTP_EC_Olympus_PropertyChanged 0xC102
+#define PTP_EC_Olympus_CaptureComplete 0xC103
+
+/* Sony */
+#define PTP_EC_Sony_ObjectAdded 0xC201
+#define PTP_EC_Sony_ObjectRemoved 0xC202
+#define PTP_EC_Sony_PropertyChanged 0xC203
+
/* MTP Event codes */
#define PTP_EC_MTP_ObjectPropChanged 0xC801
#define PTP_EC_MTP_ObjectPropDescChanged 0xC802
@@ -860,8 +994,11 @@ typedef struct _PTPObjectInfo PTPObjectInfo;
#define PTP_OFC_CANON_CRW 0xb101
#define PTP_OFC_CANON_CRW3 0xb103
#define PTP_OFC_CANON_MOV 0xb104
+#define PTP_OFC_CANON_MOV2 0xb105
/* CHDK specific raw mode */
#define PTP_OFC_CANON_CHDK_CRW 0xb1ff
+/* Sony */
+#define PTP_OFC_SONY_RAW 0xb101
/* MTP extensions */
#define PTP_OFC_MTP_MediaCard 0xb211
#define PTP_OFC_MTP_MediaCardGroup 0xb212
@@ -1124,11 +1261,16 @@ struct _PTPNIKONWifiProfile {
typedef struct _PTPNIKONWifiProfile PTPNIKONWifiProfile;
-#define PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN 0
-#define PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO 1
-#define PTP_CANON_EOS_CHANGES_TYPE_OBJECTTRANSFER 2
-#define PTP_CANON_EOS_CHANGES_TYPE_PROPERTY 3
-#define PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS 4
+enum _PTPCanon_changes_types {
+ PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN,
+ PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO,
+ PTP_CANON_EOS_CHANGES_TYPE_OBJECTTRANSFER,
+ PTP_CANON_EOS_CHANGES_TYPE_PROPERTY,
+ PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS,
+ PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO,
+ PTP_CANON_EOS_CHANGES_TYPE_FOCUSMASK,
+ PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED
+};
struct _PTPCanon_New_Object {
uint32_t oid;
@@ -1136,7 +1278,7 @@ struct _PTPCanon_New_Object {
};
struct _PTPCanon_changes_entry {
- int type;
+ enum _PTPCanon_changes_types type;
union {
struct _PTPCanon_New_Object object; /* TYPE_OBJECTINFO */
char *info;
@@ -1148,7 +1290,6 @@ typedef struct _PTPCanon_changes_entry PTPCanon_changes_entry;
typedef struct _PTPCanon_Property {
uint32_t size;
- uint32_t type;
uint32_t proptype;
unsigned char *data;
@@ -1353,7 +1494,7 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_ExpCompensation 0xD104
#define PTP_DPC_CANON_EOS_AutoExposureMode 0xD105
#define PTP_DPC_CANON_EOS_DriveMode 0xD106
-#define PTP_DPC_CANON_EOS_MeteringMode 0xD107
+#define PTP_DPC_CANON_EOS_MeteringMode 0xD107
#define PTP_DPC_CANON_EOS_FocusMode 0xD108
#define PTP_DPC_CANON_EOS_WhiteBalance 0xD109
#define PTP_DPC_CANON_EOS_ColorTemperature 0xD10A
@@ -1366,6 +1507,7 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_BatteryPower 0xD111
#define PTP_DPC_CANON_EOS_BatterySelect 0xD112
#define PTP_DPC_CANON_EOS_CameraTime 0xD113
+#define PTP_DPC_CANON_EOS_AutoPowerOff 0xD114
#define PTP_DPC_CANON_EOS_Owner 0xD115
#define PTP_DPC_CANON_EOS_ModelID 0xD116
#define PTP_DPC_CANON_EOS_PTPExtensionVersion 0xD119
@@ -1384,25 +1526,41 @@ typedef struct _PTPCanonEOSDeviceInfo {
#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_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_PCWhiteBalance1 0xD140
#define PTP_DPC_CANON_EOS_PCWhiteBalance2 0xD141
#define PTP_DPC_CANON_EOS_PCWhiteBalance3 0xD142
#define PTP_DPC_CANON_EOS_PCWhiteBalance4 0xD143
#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_UnknownPropD14D 0xD14D /*found in Canon EOS 5D M3*/
#define PTP_DPC_CANON_EOS_PictureStyleStandard 0xD150
#define PTP_DPC_CANON_EOS_PictureStylePortrait 0xD151
#define PTP_DPC_CANON_EOS_PictureStyleLandscape 0xD152
#define PTP_DPC_CANON_EOS_PictureStyleNeutral 0xD153
#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_PictureStyleUserSet1 0xD160
#define PTP_DPC_CANON_EOS_PictureStyleUserSet2 0xD161
#define PTP_DPC_CANON_EOS_PictureStyleUserSet3 0xD162
#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_FlavorLUTParams 0xD17f
+#define PTP_DPC_CANON_EOS_HighISOSettingNoiseReduction 0xD178
+#define PTP_DPC_CANON_EOS_MovieServoAF 0xD179
+#define PTP_DPC_CANON_EOS_ContinuousAFValid 0xD17A
+#define PTP_DPC_CANON_EOS_Attenuator 0xD17B
+#define PTP_DPC_CANON_EOS_UTCTime 0xD17C
+#define PTP_DPC_CANON_EOS_Timezone 0xD17D
+#define PTP_DPC_CANON_EOS_Summertime 0xD17E
+#define PTP_DPC_CANON_EOS_FlavorLUTParams 0xD17F
#define PTP_DPC_CANON_EOS_CustomFunc1 0xD180
#define PTP_DPC_CANON_EOS_CustomFunc2 0xD181
#define PTP_DPC_CANON_EOS_CustomFunc3 0xD182
@@ -1423,6 +1581,16 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_CustomFunc18 0xD191
#define PTP_DPC_CANON_EOS_CustomFunc19 0xD192
#define PTP_DPC_CANON_EOS_CustomFunc19 0xD192
+#define PTP_DPC_CANON_EOS_InnerDevelop 0xD193
+#define PTP_DPC_CANON_EOS_MultiAspect 0xD194
+#define PTP_DPC_CANON_EOS_MovieSoundRecord 0xD195
+#define PTP_DPC_CANON_EOS_MovieRecordVolume 0xD196
+#define PTP_DPC_CANON_EOS_WindCut 0xD197
+#define PTP_DPC_CANON_EOS_ExtenderType 0xD198
+#define PTP_DPC_CANON_EOS_OLCInfoVersion 0xD199
+#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_CustomFuncEx 0xD1a0
#define PTP_DPC_CANON_EOS_MyMenu 0xD1a1
#define PTP_DPC_CANON_EOS_MyMenuList 0xD1a2
@@ -1451,6 +1619,23 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_LvAfSystem 0xD1ba
#define PTP_DPC_CANON_EOS_MovSize 0xD1bb
#define PTP_DPC_CANON_EOS_LvViewTypeSelect 0xD1bc
+#define PTP_DPC_CANON_EOS_MirrorDownStatus 0xD1bd
+#define PTP_DPC_CANON_EOS_MovieParam 0xD1be
+#define PTP_DPC_CANON_EOS_MirrorLockupState 0xD1bf
+#define PTP_DPC_CANON_EOS_FlashChargingState 0xD1C0
+#define PTP_DPC_CANON_EOS_AloMode 0xD1C1
+#define PTP_DPC_CANON_EOS_FixedMovie 0xD1C2
+#define PTP_DPC_CANON_EOS_OneShotRawOn 0xD1C3
+#define PTP_DPC_CANON_EOS_ErrorForDisplay 0xD1C4
+#define PTP_DPC_CANON_EOS_AEModeMovie 0xD1C5
+#define PTP_DPC_CANON_EOS_BuiltinStroboMode 0xD1C6
+#define PTP_DPC_CANON_EOS_StroboDispState 0xD1C7
+#define PTP_DPC_CANON_EOS_StroboETTL2Metering 0xD1C8
+#define PTP_DPC_CANON_EOS_ContinousAFMode 0xD1C9
+#define PTP_DPC_CANON_EOS_MovieParam2 0xD1CA
+#define PTP_DPC_CANON_EOS_StroboSettingExpComposition 0xD1CB
+#define PTP_DPC_CANON_EOS_MovieParam3 0xD1CC
+#define PTP_DPC_CANON_EOS_LVMedicalRotate 0xD1CF
#define PTP_DPC_CANON_EOS_Artist 0xD1d0
#define PTP_DPC_CANON_EOS_Copyright 0xD1d1
#define PTP_DPC_CANON_EOS_BracketValue 0xD1d2
@@ -1465,6 +1650,8 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CANON_EOS_StroboWirelessSetting 0xD1db
#define PTP_DPC_CANON_EOS_StroboFiring 0xD1dc
#define PTP_DPC_CANON_EOS_LensID 0xD1dd
+#define PTP_DPC_CANON_EOS_LCDBrightness 0xD1de
+#define PTP_DPC_CANON_EOS_CADarkBright 0xD1df
/* Nikon extension device property codes */
#define PTP_DPC_NIKON_ShootingBank 0xD010
@@ -1503,8 +1690,11 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_JPEG_Compression_Policy 0xD031
#define PTP_DPC_NIKON_ColorSpace 0xD032
#define PTP_DPC_NIKON_AutoDXCrop 0xD033
+#define PTP_DPC_NIKON_FlickerReduction 0xD034
+#define PTP_DPC_NIKON_RemoteMode 0xD035
#define PTP_DPC_NIKON_VideoMode 0xD036
#define PTP_DPC_NIKON_EffectMode 0xD037
+#define PTP_DPC_NIKON_1_Mode 0xD038
#define PTP_DPC_NIKON_CSMMenuBankSelect 0xD040
#define PTP_DPC_NIKON_MenuBankNameA 0xD041
#define PTP_DPC_NIKON_MenuBankNameB 0xD042
@@ -1532,7 +1722,7 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_ExposureBaseMatrix 0xD05A
#define PTP_DPC_NIKON_ExposureBaseCenter 0xD05B
#define PTP_DPC_NIKON_ExposureBaseSpot 0xD05C
-#define PTP_DPC_NIKON_LiveViewAFArea 0xD05D
+#define PTP_DPC_NIKON_LiveViewAFArea 0xD05D /* FIXME: AfAtLiveview? */
#define PTP_DPC_NIKON_AELockMode 0xD05E
#define PTP_DPC_NIKON_AELAFLMode 0xD05F
#define PTP_DPC_NIKON_LiveViewAFFocus 0xD061
@@ -1586,6 +1776,12 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_MovScreenSize 0xD0A0
#define PTP_DPC_NIKON_MovVoice 0xD0A1
#define PTP_DPC_NIKON_MovMicrophone 0xD0A2
+#define PTP_DPC_NIKON_MovFileSlot 0xD0A3
+#define PTP_DPC_NIKON_MovRecProhibitCondition 0xD0A4
+#define PTP_DPC_NIKON_ManualMovieSetting 0xD0A6
+#define PTP_DPC_NIKON_MovQuality 0xD0A7
+#define PTP_DPC_NIKON_LiveViewScreenDisplaySetting 0xD0B2
+#define PTP_DPC_NIKON_MonitorOffDelay 0xD0B3
#define PTP_DPC_NIKON_Bracketing 0xD0C0
#define PTP_DPC_NIKON_AutoExposureBracketStep 0xD0C1
#define PTP_DPC_NIKON_AutoExposureBracketProgram 0xD0C2
@@ -1607,6 +1803,8 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_VignetteCtrl 0xD0F7
#define PTP_DPC_NIKON_AutoDistortionControl 0xD0F8
#define PTP_DPC_NIKON_SceneMode 0xD0F9
+#define PTP_DPC_NIKON_SceneMode2 0xD0FD
+#define PTP_DPC_NIKON_SelfTimerInterval 0xD0FE
#define PTP_DPC_NIKON_ExposureTime 0xD100 /* Shutter Speed */
#define PTP_DPC_NIKON_ACPower 0xD101
#define PTP_DPC_NIKON_WarningStatus 0xD102
@@ -1647,7 +1845,7 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_BW_Setting_Type 0xD146
#define PTP_DPC_NIKON_Slot2SaveMode 0xD148
#define PTP_DPC_NIKON_RawBitMode 0xD149
-#define PTP_DPC_NIKON_ISOAutoTime 0xD14E
+#define PTP_DPC_NIKON_ActiveDLighting 0xD14E /* was PTP_DPC_NIKON_ISOAutoTime */
#define PTP_DPC_NIKON_FlourescentType 0xD14F
#define PTP_DPC_NIKON_TuneColourTemperature 0xD150
#define PTP_DPC_NIKON_TunePreset0 0xD151
@@ -1670,6 +1868,11 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_FlashModeManualPower 0xD16D
#define PTP_DPC_NIKON_FlashModeCommanderPower 0xD16E
#define PTP_DPC_NIKON_AutoFP 0xD16F
+#define PTP_DPC_NIKON_DateImprintSetting 0xD170
+#define PTP_DPC_NIKON_DateCounterSelect 0xD171
+#define PTP_DPC_NIKON_DateCountData 0xD172
+#define PTP_DPC_NIKON_DateCountDisplaySetting 0xD173
+#define PTP_DPC_NIKON_RangeFinderSetting 0xD174
#define PTP_DPC_NIKON_CSMMenu 0xD180
#define PTP_DPC_NIKON_WarningDisplay 0xD181
#define PTP_DPC_NIKON_BatteryCellKind 0xD182
@@ -1688,6 +1891,10 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_LiveViewStatus 0xD1A2
#define PTP_DPC_NIKON_LiveViewImageZoomRatio 0xD1A3
#define PTP_DPC_NIKON_LiveViewProhibitCondition 0xD1A4
+#define PTP_DPC_NIKON_MovieShutterSpeed 0xD1A8
+#define PTP_DPC_NIKON_MovieFNumber 0xD1A9
+#define PTP_DPC_NIKON_MovieISO 0xD1AA
+#define PTP_DPC_NIKON_LiveViewMovieMode 0xD1AC /* ? */
#define PTP_DPC_NIKON_ExposureDisplayStatus 0xD1B0
#define PTP_DPC_NIKON_ExposureIndicateStatus 0xD1B1
#define PTP_DPC_NIKON_InfoDispErrStatus 0xD1B2
@@ -1707,8 +1914,36 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_NIKON_FlashCommandBMode 0xD1DA
#define PTP_DPC_NIKON_FlashCommandBCompensation 0xD1DB
#define PTP_DPC_NIKON_FlashCommandBValue 0xD1DC
+#define PTP_DPC_NIKON_ApplicationMode 0xD1F0
+#define PTP_DPC_NIKON_ActiveSlot 0xD1F2
#define PTP_DPC_NIKON_ActivePicCtrlItem 0xD200
#define PTP_DPC_NIKON_ChangePicCtrlItem 0xD201
+#define PTP_DPC_NIKON_MovieNrHighISO 0xD236
+
+
+/* Nikon V1 (or WU adapter?) Trace */
+/* d241 - gets string "Nikon_WU2_0090B5123C61" */
+#define PTP_DPC_NIKON_D241 0xD241
+/* d244 - gets a single byte 0x00 */
+#define PTP_DPC_NIKON_D244 0xD244
+/* d247 - gets 3 bytes 0x01 0x00 0x00 */
+#define PTP_DPC_NIKON_D247 0xD247
+/* S9700 */
+#define PTP_DPC_NIKON_GUID 0xD24F
+/* d250 - gets a string "0000123C61" */
+#define PTP_DPC_NIKON_D250 0xD250
+/* d251 - gets a 0x0100000d */
+#define PTP_DPC_NIKON_D251 0xD251
+
+/* this is irregular, as it should be -0x5000 or 0xD000 based */
+#define PTP_DPC_NIKON_1_ISO 0xF002
+#define PTP_DPC_NIKON_1_ImageCompression 0xF009
+#define PTP_DPC_NIKON_1_ImageSize 0xF00A
+#define PTP_DPC_NIKON_1_WhiteBalance 0xF00C
+#define PTP_DPC_NIKON_1_LongExposureNoiseReduction 0xF00D
+#define PTP_DPC_NIKON_1_HiISONoiseReduction 0xF00E
+#define PTP_DPC_NIKON_1_ActiveDLighting 0xF00F
+#define PTP_DPC_NIKON_1_MovQuality 0xF01C
/* Fuji specific */
#define PTP_DPC_FUJI_ColorTemperature 0xD017
@@ -1823,6 +2058,25 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_OLYMPUS_ISOBracket 0xD15D
#define PTP_DPC_OLYMPUS_MyModeStatus 0xD15E
+/* Sony A900 */
+#define PTP_DPC_SONY_DPCCompensation 0xD200
+#define PTP_DPC_SONY_DRangeOptimize 0xD201
+#define PTP_DPC_SONY_ImageSize 0xD203
+#define PTP_DPC_SONY_ShutterSpeed 0xD20D
+#define PTP_DPC_SONY_ColorTemp 0xD20F
+#define PTP_DPC_SONY_CCFilter 0xD210
+#define PTP_DPC_SONY_AspectRatio 0xD211
+#define PTP_DPC_SONY_ExposeIndex 0xD216
+#define PTP_DPC_SONY_PictureEffect 0xD21B
+#define PTP_DPC_SONY_ABFilter 0xD21C
+#define PTP_DPC_SONY_ISO 0xD21E /* ? */
+/* also seen: D2C3 D2C4 */
+/* semi control opcodes */
+#define PTP_DPC_SONY_Movie 0xD2C8 /* ? */
+#define PTP_DPC_SONY_StillImage 0xD2C7 /* ? */
+
+
+
/* Casio EX-F1 */
#define PTP_DPC_CASIO_MONITOR 0xD001
#define PTP_DPC_CASIO_STORAGE 0xD002 //Not reported by DeviceInfo?
@@ -1852,6 +2106,8 @@ typedef struct _PTPCanonEOSDeviceInfo {
#define PTP_DPC_CASIO_UNKNOWN_17 0xD030
#define PTP_DPC_CASIO_UNKNOWN_18 0xD080
+#define PTP_DPC_RICOH_ShutterSpeed 0xD00F
+
/* MTP specific Object Properties */
#define PTP_OPC_StorageID 0xDC01
#define PTP_OPC_ObjectFormat 0xDC02
@@ -2055,7 +2311,7 @@ typedef uint16_t (* PTPDataGetFunc) (PTPParams* params, void*priv,
typedef uint16_t (* PTPDataPutFunc) (PTPParams* params, void*priv,
unsigned long sendlen,
- unsigned char *data, unsigned long *putlen);
+ unsigned char *data);
typedef struct _PTPDataHandler {
PTPDataGetFunc getfunc;
PTPDataPutFunc putfunc;
@@ -2066,9 +2322,9 @@ typedef struct _PTPDataHandler {
* This functions take PTP oriented arguments and send them over an
* appropriate data layer doing byteorder conversion accordingly.
*/
-typedef uint16_t (* PTPIOSendReq) (PTPParams* params, PTPContainer* req);
+typedef uint16_t (* PTPIOSendReq) (PTPParams* params, PTPContainer* req, int dataphase);
typedef uint16_t (* PTPIOSendData) (PTPParams* params, PTPContainer* ptp,
- unsigned long size, PTPDataHandler*getter);
+ uint64_t size, PTPDataHandler*getter);
typedef uint16_t (* PTPIOGetResp) (PTPParams* params, PTPContainer* resp);
typedef uint16_t (* PTPIOGetData) (PTPParams* params, PTPContainer* ptp,
@@ -2100,10 +2356,24 @@ struct _PTPObject {
PTPObjectInfo oi;
uint32_t canon_flags;
MTPProperties *mtpprops;
- int nrofmtpprops;
+ unsigned int nrofmtpprops;
};
typedef struct _PTPObject PTPObject;
+/* The Device Property Cache */
+struct _PTPDeviceProperty {
+ time_t timestamp;
+ PTPDevicePropDesc desc;
+ PTPPropertyValue value;
+};
+typedef struct _PTPDeviceProperty PTPDeviceProperty;
+
+/* Transaction data phase description, internal flags to sendreq / transaction driver. */
+#define PTP_DP_NODATA 0x0000 /* no data phase */
+#define PTP_DP_SENDDATA 0x0001 /* sending data */
+#define PTP_DP_GETDATA 0x0002 /* receiving data */
+#define PTP_DP_DATA_MASK 0x00ff /* data phase mask */
+
struct _PTPParams {
/* device flags */
uint32_t device_flags;
@@ -2133,13 +2403,16 @@ struct _PTPParams {
/* ptp session ID */
uint32_t session_id;
+ /* used for open capture */
+ uint32_t opencapture_transid;
+
/* PTP IO: if we have MTP style split header/data transfers */
int split_header_data;
int ocs64; /* 64bit objectsize */
/* PTP: internal structures used by ptp driver */
PTPObject *objects;
- int nrofobjects;
+ unsigned int nrofobjects;
PTPDeviceInfo deviceinfo;
@@ -2147,19 +2420,30 @@ struct _PTPParams {
PTPContainer *events;
int nrofevents;
+ /* live view enabled */
+ int inliveview;
+
+ /* PTP: Device Property Caching */
+ PTPDeviceProperty *deviceproperties;
+ unsigned int nrofdeviceproperties;
+
/* PTP: Canon specific flags list */
PTPCanon_Property *canon_props;
- int nrofcanon_props;
+ unsigned int nrofcanon_props;
int canon_viewfinder_on;
int canon_event_mode;
/* PTP: Canon EOS event queue */
PTPCanon_changes_entry *backlogentries;
- int nrofbacklogentries;
+ unsigned int nrofbacklogentries;
int eos_captureenabled;
- int eos_viewfinderenabled;
int eos_camerastatus;
+ /* PTP: Nikon specifics */
+ int controlmode;
+ int event90c7works;
+ int deletesdramfails;
+
/* PTP: Wifi profiles */
uint8_t wifi_profiles_version;
uint8_t wifi_profiles_number;
@@ -2175,8 +2459,9 @@ struct _PTPParams {
PTPDeviceInfo outer_deviceinfo;
char *olympus_cmd;
char *olympus_reply;
+ struct _PTPParams *outer_params;
-#ifdef HAVE_ICONV
+#if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H)
/* PTP: iconv converters */
iconv_t cd_locale_to_ucs2;
iconv_t cd_ucs2_to_locale;
@@ -2189,15 +2474,19 @@ struct _PTPParams {
uint16_t response_packet_size;
};
+/* Asynchronous event callback */
+typedef void(* PTPEventCbFn) (PTPParams *params, uint16_t code, PTPContainer *event, void *user_data);
+
/* last, but not least - ptp functions */
-uint16_t ptp_usb_sendreq (PTPParams* params, PTPContainer* req);
+uint16_t ptp_usb_sendreq (PTPParams* params, PTPContainer* req, int dataphase);
uint16_t ptp_usb_senddata (PTPParams* params, PTPContainer* ptp,
- unsigned long size, PTPDataHandler *handler);
+ uint64_t size, PTPDataHandler *handler);
uint16_t ptp_usb_getresp (PTPParams* params, PTPContainer* resp);
uint16_t ptp_usb_getdata (PTPParams* params, PTPContainer* ptp,
PTPDataHandler *handler);
uint16_t ptp_usb_event_check (PTPParams* params, PTPContainer* event);
uint16_t ptp_usb_event_wait (PTPParams* params, PTPContainer* event);
+uint16_t ptp_usb_event_async (PTPParams *params, PTPEventCbFn cb, void *user_data);
uint16_t ptp_usb_control_get_extended_event_data (PTPParams *params, char *buffer, int *size);
uint16_t ptp_usb_control_device_reset_request (PTPParams *params);
@@ -2206,9 +2495,9 @@ uint16_t ptp_usb_control_cancel_request (PTPParams *params, uint32_t transid);
int ptp_ptpip_connect (PTPParams* params, const char *port);
-uint16_t ptp_ptpip_sendreq (PTPParams* params, PTPContainer* req);
+uint16_t ptp_ptpip_sendreq (PTPParams* params, PTPContainer* req, int dataphase);
uint16_t ptp_ptpip_senddata (PTPParams* params, PTPContainer* ptp,
- unsigned long size, PTPDataHandler *handler);
+ uint64_t size, PTPDataHandler *handler);
uint16_t ptp_ptpip_getresp (PTPParams* params, PTPContainer* resp);
uint16_t ptp_ptpip_getdata (PTPParams* params, PTPContainer* ptp,
PTPDataHandler *handler);
@@ -2221,6 +2510,15 @@ uint16_t ptp_generic_no_data (PTPParams* params, uint16_t opcode, unsigned int c
uint16_t ptp_opensession (PTPParams *params, uint32_t session);
+uint16_t ptp_transaction_new (PTPParams* params, PTPContainer* ptp,
+ uint16_t flags, uint64_t sendlen,
+ PTPDataHandler *handler
+);
+uint16_t ptp_transaction (PTPParams* params, PTPContainer* ptp,
+ uint16_t flags, uint64_t sendlen,
+ unsigned char **data, unsigned int *recvlen
+);
+
/**
* ptp_closesession:
* params: PTPParams*
@@ -2230,6 +2528,16 @@ uint16_t ptp_opensession (PTPParams *params, uint32_t session);
* Return values: Some PTP_RC_* code.
**/
#define ptp_closesession(params) ptp_generic_no_data(params,PTP_OC_CloseSession,0)
+
+/**
+ * ptp_powerdown:
+ * params: PTPParams*
+ *
+ * Powers down device.
+ *
+ * Return values: Some PTP_RC_* code.
+ **/
+#define ptp_powerdown(params) ptp_generic_no_data(params,PTP_OC_PowerDown,0)
/**
* ptp_resetdevice:
* params: PTPParams*
@@ -2276,6 +2584,9 @@ uint16_t ptp_getobject_to_handler (PTPParams* params, uint32_t handle, PTPDataHa
uint16_t ptp_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset,
uint32_t maxbytes, unsigned char** object,
uint32_t *len);
+uint16_t ptp_getpartialobject_to_handler (PTPParams* params, uint32_t handle, uint32_t offset,
+ uint32_t maxbytes, PTPDataHandler *handler);
+
uint16_t ptp_getthumb (PTPParams *params, uint32_t handle,
unsigned char** object, unsigned int *len);
@@ -2297,9 +2608,9 @@ uint16_t ptp_sendobjectinfo (PTPParams* params, uint32_t* store,
*/
#define ptp_setobjectprotection(params,oid,newprot) ptp_generic_no_data(params,PTP_OC_SetObjectProtection,2,oid,newprot)
uint16_t ptp_sendobject (PTPParams* params, unsigned char* object,
- uint32_t size);
-uint16_t ptp_sendobject_fromfd (PTPParams* params, int fd, uint32_t size);
-uint16_t ptp_sendobject_from_handler (PTPParams* params, PTPDataHandler*, uint32_t size);
+ uint64_t size);
+uint16_t ptp_sendobject_fromfd (PTPParams* params, int fd, uint64_t size);
+uint16_t ptp_sendobject_from_handler (PTPParams* params, PTPDataHandler*, uint64_t size);
/**
* ptp_initiatecapture:
* params: PTPParams*
@@ -2316,12 +2627,19 @@ uint16_t ptp_sendobject_from_handler (PTPParams* params, PTPDataHandler*, uint3
**/
#define ptp_initiatecapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateCapture,2,storageid,ofc)
+#define ptp_initiateopencapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateOpenCapture,2,storageid,ofc)
+#define ptp_terminateopencapture(params,transid) ptp_generic_no_data(params,PTP_OC_TerminateOpenCapture,1,transid)
+
uint16_t ptp_getdevicepropdesc (PTPParams* params, uint16_t propcode,
PTPDevicePropDesc *devicepropertydesc);
+uint16_t ptp_generic_getdevicepropdesc (PTPParams *params, uint16_t propcode,
+ PTPDevicePropDesc *dpd);
uint16_t ptp_getdevicepropvalue (PTPParams* params, uint16_t propcode,
PTPPropertyValue* value, uint16_t datatype);
uint16_t ptp_setdevicepropvalue (PTPParams* params, uint16_t propcode,
PTPPropertyValue* value, uint16_t datatype);
+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);
@@ -2329,6 +2647,8 @@ uint16_t ptp_getfilesystemmanifest (PTPParams* params, uint32_t storage,
uint16_t ptp_check_event (PTPParams *params);
+uint16_t ptp_wait_event (PTPParams *params);
+uint16_t ptp_add_event (PTPParams *params, PTPContainer *evt);
int ptp_get_one_event (PTPParams *params, PTPContainer *evt);
uint16_t ptp_check_eos_events (PTPParams *params);
int ptp_get_one_eos_event (PTPParams *params, PTPCanon_changes_entry *entry);
@@ -2526,6 +2846,12 @@ uint16_t ptp_canon_checkevent (PTPParams* params,
* Return values: Some PTP_RC_* code.
*
**/
+#define CANON_EOS_OLC_BUTTON 0x0001
+#define CANON_EOS_OLC_SHUTTERSPEED 0x0002
+#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)
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);
@@ -2642,6 +2968,18 @@ uint16_t ptp_nikon_curve_download (PTPParams* params,
uint16_t ptp_nikon_getptpipinfo (PTPParams* params, unsigned char **data, unsigned int *size);
uint16_t ptp_nikon_getwifiprofilelist (PTPParams* params);
uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* profile);
+
+uint16_t ptp_sony_sdioconnect (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3);
+uint16_t ptp_sony_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size);
+uint16_t ptp_sony_getdevicepropdesc (PTPParams* params, uint16_t propcode,
+ PTPDevicePropDesc *devicepropertydesc);
+uint16_t ptp_sony_getalldevicepropdesc (PTPParams* params);
+uint16_t ptp_sony_setdevicecontrolvaluea (PTPParams* params, uint16_t propcode,
+ PTPPropertyValue* value, uint16_t datatype);
+uint16_t ptp_sony_setdevicecontrolvalueb (PTPParams* params, uint16_t propcode,
+ PTPPropertyValue* value, uint16_t datatype);
+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);
+uint16_t ptp_sony_9281 (PTPParams* params, uint32_t param1);
/**
* ptp_nikon_deletewifiprofile:
*
@@ -2667,6 +3005,19 @@ uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* pro
**/
#define ptp_nikon_setcontrolmode(params,mode) ptp_generic_no_data(params,PTP_OC_NIKON_SetControlMode,1,mode)
/**
+ * ptp_nikon_terminatecapture:
+ *
+ * This command appears to terminate a longer capture
+ *
+ * params: PTPParams*
+ * uint32_t a
+ * uint32_t b
+ *
+ * Return values: Some PTP_RC_* code.
+ *
+ **/
+#define ptp_nikon_terminatecapture(params,p1,p2) ptp_generic_no_data(params,PTP_OC_NIKON_TerminateCapture,2,p1,p2)
+/**
* ptp_nikon_afdrive:
*
* This command runs (drives) the lens autofocus.
@@ -2678,6 +3029,41 @@ uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* pro
**/
#define ptp_nikon_afdrive(params) ptp_generic_no_data(params,PTP_OC_NIKON_AfDrive,0)
/**
+ * ptp_nikon_changeafarea:
+ *
+ * This command starts movie capture (to card)
+ *
+ * params: PTPParams*
+ * x: x coordinate
+ * y: y coordinate
+ *
+ * Return values: Some PTP_RC_* code.
+ *
+ **/
+#define ptp_nikon_changeafarea(params,x,y) ptp_generic_no_data(params,PTP_OC_NIKON_ChangeAfArea,2,x,y)
+/**
+ * ptp_nikon_startmovie:
+ *
+ * This command starts movie capture (to card)
+ *
+ * params: PTPParams*
+ *
+ * Return values: Some PTP_RC_* code.
+ *
+ **/
+#define ptp_nikon_startmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_StartMovieRecInCard,0)
+/**
+ * ptp_nikon_stopmovie:
+ *
+ * This command stops movie capture (to card)
+ *
+ * params: PTPParams*
+ *
+ * Return values: Some PTP_RC_* code.
+ *
+ **/
+#define ptp_nikon_stopmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndMovieRec,0)
+/**
* ptp_canon_eos_afdrive:
*
* This command runs (drives) the lens autofocus.
@@ -2689,6 +3075,17 @@ uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* pro
**/
#define ptp_canon_eos_afdrive(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_DoAf,0)
/**
+ * ptp_canon_eos_afcancel:
+ *
+ * This command cancels the lens autofocus.
+ *
+ * params: PTPParams*
+ *
+ * Return values: Some PTP_RC_* code.
+ *
+ **/
+#define ptp_canon_eos_afcancel(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_AfCancel,0)
+/**
* ptp_canon_eos_zoom:
*
* This command runs (drives) the lens autofocus.
@@ -2702,7 +3099,7 @@ uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* pro
#define ptp_canon_eos_zoom(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_Zoom,1,x)
#define ptp_canon_eos_zoomposition(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_ZoomPosition,2,x,y)
-#define ptp_canon_eos_remotereleaseon(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOn,1,x)
+#define ptp_canon_eos_remotereleaseon(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOn,2,x,y)
#define ptp_canon_eos_remotereleaseoff(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOff,1,x)
/**
* ptp_nikon_mfdrive:
@@ -2736,12 +3133,28 @@ uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* pro
* This command captures a picture on the Nikon.
*
* params: PTPParams*
- * uint32_t x - unknown parameter. seen to be -1.
+ * uint32_t x: unknown parameter. seen to be -1.
*
* Return values: Some PTP_RC_* code.
*
**/
#define ptp_nikon_capture(params,x) ptp_generic_no_data(params,PTP_OC_NIKON_Capture,1,x)
+
+/**
+ * ptp_nikon_capture2:
+ *
+ * This command captures a picture on the Nikon.
+ *
+ * params: PTPParams*
+ * af: autofocus before capture (1 yes , 0 no)
+ * target: sdram 1, card 0
+ *
+ * Return values: Some PTP_RC_* code.
+ * 2 params:
+ * 0xffffffff == No AF before, 0xfffffffe == AF before capture
+ * sdram=1, card=0
+ */
+#define ptp_nikon_capture2(params,af,target) ptp_generic_no_data(params,PTP_OC_NIKON_InitiateCaptureRecInMedia,2,af?0xfffffffe:0xffffffff,target)
/**
* ptp_nikon_capture_sdram:
*
@@ -2789,7 +3202,7 @@ uint16_t ptp_nikon_get_preview_image (PTPParams* params, unsigned char**, unsign
*
**/
#define ptp_nikon_end_liveview(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndLiveView,0)
-uint16_t ptp_nikon_check_event (PTPParams* params, PTPContainer **evt, int *evtcnt);
+uint16_t ptp_nikon_check_event (PTPParams* params, PTPContainer **evt, unsigned int *evtcnt);
uint16_t ptp_nikon_getfileinfoinblock (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3,
unsigned char **data, unsigned int *size);
/**
@@ -2806,6 +3219,23 @@ uint16_t ptp_nikon_getfileinfoinblock (PTPParams* params, uint32_t p1, uint32_t
#define ptp_nikon_device_ready(params) ptp_generic_no_data (params, PTP_OC_NIKON_DeviceReady, 0)
uint16_t ptp_mtp_getobjectpropssupported (PTPParams* params, uint16_t ofc, uint32_t *propnum, uint16_t **props);
+
+/* Android MTP Extensions */
+uint16_t ptp_android_getpartialobject64 (PTPParams* params, uint32_t handle, uint64_t offset,
+ uint32_t maxbytes, unsigned char** object,
+ uint32_t *len);
+#define ptp_android_begineditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_BeginEditObject, 1, handle)
+#define ptp_android_truncate(params,handle,offset) ptp_generic_no_data (params, PTP_OC_ANDROID_TruncateObject, 3, handle, (offset & 0xFFFFFFFF), (offset >> 32))
+uint16_t ptp_android_sendpartialobject (PTPParams *params, uint32_t handle,
+ uint64_t offset, unsigned char *object, uint32_t len);
+#define ptp_android_endeditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_EndEditObject, 1, handle)
+
+uint16_t ptp_olympus_getdeviceinfo (PTPParams*, PTPDeviceInfo*);
+#define ptp_olympus_setcameracontrolmode(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_SetCameraControlMode, 1, p1)
+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 *);
+
/* Non PTP protocol functions */
static inline int
ptp_operation_issupported(PTPParams* params, uint16_t operation)
@@ -2822,74 +3252,41 @@ ptp_operation_issupported(PTPParams* params, uint16_t operation)
int ptp_event_issupported (PTPParams* params, uint16_t event);
int ptp_property_issupported (PTPParams* params, uint16_t property);
-void ptp_free_devicepropdesc (PTPDevicePropDesc* dpd);
-void ptp_free_devicepropvalue (uint16_t dt, PTPPropertyValue* dpd);
-void ptp_free_objectpropdesc (PTPObjectPropDesc* dpd);
void ptp_free_params (PTPParams *params);
+void ptp_free_objectpropdesc (PTPObjectPropDesc*);
+void ptp_free_devicepropdesc (PTPDevicePropDesc*);
+void ptp_free_devicepropvalue (uint16_t, PTPPropertyValue*);
void ptp_free_objectinfo (PTPObjectInfo *oi);
void ptp_free_object (PTPObject *oi);
-const char *ptp_strerror(uint16_t error);
-void ptp_perror (PTPParams* params, uint16_t error);
+const char *ptp_strerror (uint16_t ret, uint16_t vendor);
void ptp_debug (PTPParams *params, const char *format, ...);
void ptp_error (PTPParams *params, const char *format, ...);
-const char*
-ptp_get_property_description(PTPParams* params, uint16_t dpc);
+const char* ptp_get_property_description(PTPParams* params, uint16_t dpc);
+
+const char* ptp_get_opcode_name(PTPParams* params, uint16_t opcode);
int
ptp_render_property_value(PTPParams* params, uint16_t dpc,
- PTPDevicePropDesc *dpd, int length, char *out);
+ PTPDevicePropDesc *dpd, unsigned int length, char *out);
int ptp_render_ofc(PTPParams* params, uint16_t ofc, int spaceleft, char *txt);
-int ptp_render_opcode(PTPParams* params, uint16_t opcode, int spaceleft, char *txt);
int ptp_render_mtp_propname(uint16_t propid, int spaceleft, char *txt);
MTPProperties *ptp_get_new_object_prop_entry(MTPProperties **props, int *nrofprops);
void ptp_destroy_object_prop(MTPProperties *prop);
void ptp_destroy_object_prop_list(MTPProperties *props, int nrofprops);
MTPProperties *ptp_find_object_prop_in_cache(PTPParams *params, uint32_t const handle, uint32_t const attribute_id);
-void ptp_remove_object_from_cache(PTPParams *params, uint32_t handle);
+uint16_t ptp_remove_object_from_cache(PTPParams *params, uint32_t handle);
uint16_t ptp_add_object_to_cache(PTPParams *params, uint32_t handle);
-uint16_t ptp_object_want (PTPParams *, uint32_t handle, int want, PTPObject**retob);
+uint16_t ptp_object_want (PTPParams *, uint32_t handle, unsigned int want, PTPObject**retob);
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);
/* ptpip.c */
void ptp_nikon_getptpipguid (unsigned char* guid);
-enum PTP_CHDK_Command {
- PTP_CHDK_Shutdown = 0, /* param2 is 0 (hard), 1 (soft), 2 (reboot) or 3 (reboot fw update)
- if param2 == 3, then filename of fw update is send as data (empty for default) */
- PTP_CHDK_GetMemory, /* param2 is base address (or 0 for live image buffer, 1 for bitmap buffer)
- param3 is size (in bytes)
- return data is memory block */
- PTP_CHDK_SetMemoryLong, /* param2 is address
- param3 is value */
- PTP_CHDK_CallFunction, /* data is array of function pointer and (long) arguments (max: 10 args)
- return param1 is return value */
- PTP_CHDK_GetPropCase, /* param2 is base id
- param3 is number of properties
- return data is array of longs */
- PTP_CHDK_GetParamData, /* param2 is base id
- param3 is number of parameters
- return data is sequence of strings prefixed by their length (as long) */
- PTP_CHDK_TempData, /* data is data to be stored for later */
- PTP_CHDK_UploadFile, /* data is 4-byte length of filename, followed by filename and contents */
- PTP_CHDK_DownloadFile, /* preceded by PTP_CHDK_TempData with filename
- return data are file contents */
- PTP_CHDK_SwitchMode, /* param2 is 0 (playback) or 1 (record) */
- PTP_CHDK_ExecuteLUA, /* data is script to be executed */
- PTP_CHDK_GetVideoSettings,
- PTP_CHDK_GetScriptOutput, /* return script output in ASCIIZ */
- PTP_CHDK_OpenDir, /* open directory listing, data is directory name */
- PTP_CHDK_ReadDir, /* return data is next file info */
- PTP_CHDK_CloseDir, /* close directory listing */
- PTP_CHDK_GetShootingModesList, /* not used */
- PTP_CHDK_StartDownloadFile,
- PTP_CHDK_ResumeDownloadFile,
- PTP_CHDK_EndDownloadFile,
-};
-
+/* CHDK specifics */
#define PTP_OC_CHDK 0x9999
typedef struct tagptp_chdk_videosettings {
long live_image_buffer_width;
@@ -2901,19 +3298,56 @@ typedef struct tagptp_chdk_videosettings {
unsigned palette[16];
} ptp_chdk_videosettings;
-#define ptp_chdk_shutdown_hard(params) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_Shutdown,0)
-#define ptp_chdk_shutdown_soft(params) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_Shutdown,1)
-#define ptp_chdk_reboot(params) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_Shutdown,2)
-#define ptp_chdk_reboot_fw_update(params) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_Shutdown,3)
-uint16_t ptp_chdk_get_memory(PTPParams* params, int start, int num, unsigned char**);
-#define ptp_chdk_set_memory_long(params,addr,val) ptp_generic_no_data(params,PTP_OC_CHDK,3,PTP_CHDK_SetMemoryLong,addr,val)
-uint16_t ptp_chdk_call(PTPParams* params, int *args, int size, int *ret);
-uint16_t ptp_chdk_get_propcase(PTPParams* params, int start, int num, int* ints);
-uint16_t ptp_chdk_get_paramdata(PTPParams* params, int start, int num, unsigned char** x);
+/* Nafraf: Test this!!!*/
#define ptp_chdk_switch_mode(params,mode) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_SwitchMode,mode)
-uint16_t ptp_chdk_exec_lua(PTPParams *params, char *script, uint32_t* 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);
+
+/* include CHDK ptp protocol definitions from a CHDK source tree */
+#include "chdk_ptp.h"
+#if (PTP_CHDK_VERSION_MAJOR < 2 || (PTP_CHDK_VERSION_MAJOR == 2 && PTP_CHDK_VERSION_MINOR < 5))
+#error your chdk headers are too old, unset CHDK_SRC_DIR in config.mk
+#endif
+#include "chdk_live_view.h"
+
+/* the following happens to match what is used in CHDK, but is not part of the protocol */
+typedef struct {
+ unsigned size;
+ unsigned script_id; /* id of script message is to/from */
+ unsigned type;
+ unsigned subtype;
+ char data[];
+} ptp_chdk_script_msg;
+
+/*
+chunk for remote capture
+*/
+typedef struct {
+ uint32_t size; /* length of data */
+ int last; /* is it the last chunk? */
+ uint32_t offset; /* offset within file, or -1 */
+ unsigned char *data; /* data, must be free'd by caller when done */
+} ptp_chdk_rc_chunk;
+
+
+uint16_t ptp_chdk_get_memory(PTPParams* params, int start, int num, unsigned char **);
+uint16_t ptp_chdk_set_memory_long(PTPParams* params, int addr, int val);
+int ptp_chdk_upload(PTPParams* params, char *local_fn, char *remote_fn);
+uint16_t ptp_chdk_download(PTPParams* params, char *remote_fn, PTPDataHandler *handler);
+
+/* remote capture */
+uint16_t ptp_chdk_rcisready(PTPParams* params, int *isready,int *imgnum);
+uint16_t ptp_chdk_rcgetchunk(PTPParams* params,int fmt, ptp_chdk_rc_chunk *chunk);
+
+uint16_t ptp_chdk_exec_lua(PTPParams* params, char *script, int flags, int *script_id,int *status);
+uint16_t ptp_chdk_get_version(PTPParams* params, int *major, int *minor);
+uint16_t ptp_chdk_get_script_support(PTPParams* params, unsigned *status);
+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_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);*/
#ifdef __cplusplus
}
« no previous file with comments | « src/playlist-spl.c ('k') | src/ptp.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698