summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Meissner <marcus@jet.franken.de>2009-03-11 22:30:20 +0000
committerMarcus Meissner <marcus@jet.franken.de>2009-03-11 22:30:20 +0000
commit141b17c63de52d355dfa8100c59d0e9a558ed70d (patch)
treea79d8cb05a14c951b3e664c0d493a8e2719765bf
parent434c76fd5f1628095816b628abc887b85fd549aa (diff)
downloadlibgphoto2-141b17c63de52d355dfa8100c59d0e9a558ed70d.tar.gz
magic code to capture to SDRAM in "card" mode if no Card is inserted
git-svn-id: https://svn.code.sf.net/p/gphoto/code/branches/libgphoto2-2_4/libgphoto2@11854 67ed7778-7388-44ab-90cf-0a291f65f57c
-rw-r--r--camlibs/ptp2/library.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/camlibs/ptp2/library.c b/camlibs/ptp2/library.c
index bdace86bd..a43b83e12 100644
--- a/camlibs/ptp2/library.c
+++ b/camlibs/ptp2/library.c
@@ -1890,10 +1890,26 @@ camera_canon_capture (Camera *camera, CameraCaptureType type, CameraFilePath *pa
}
if (ptp_property_issupported(params, PTP_DPC_CANON_CaptureTransferMode)) {
+ PTPStorageIDs storageids;
if ((GP_OK == gp_setting_get("ptp2","capturetarget",buf)) && !strcmp(buf,"sdram"))
propval.u16 = xmode = CANON_TRANSFER_MEMORY;
else
propval.u16 = xmode = CANON_TRANSFER_CARD;
+
+ if (xmode == CANON_TRANSFER_CARD) {
+ ret = ptp_getstorageids(params, &storageids);
+ if (ret == PTP_RC_OK) {
+ if ( (storageids.n == 1) &&
+ ((storageids.Storage[0] == 0x80000001) ||
+ (storageids.Storage[0] == 0x00010000)
+ )
+ ) {
+ gp_log (GP_LOG_DEBUG, "ptp", "Assuming no CF card present - switching to MEMORY Transfer.\n");
+ propval.u16 = xmode = CANON_TRANSFER_MEMORY;
+ }
+ free (storageids.Storage);
+ }
+ }
ret = ptp_setdevicepropvalue(params, PTP_DPC_CANON_CaptureTransferMode, &propval, PTP_DTC_UINT16);
if (ret != PTP_RC_OK)
gp_log (GP_LOG_DEBUG, "ptp", "setdevicepropvalue CaptureTransferMode failed, %x\n", ret);