diff options
author | Marcus Meissner <marcus@jet.franken.de> | 2009-03-11 22:30:20 +0000 |
---|---|---|
committer | Marcus Meissner <marcus@jet.franken.de> | 2009-03-11 22:30:20 +0000 |
commit | 141b17c63de52d355dfa8100c59d0e9a558ed70d (patch) | |
tree | a79d8cb05a14c951b3e664c0d493a8e2719765bf | |
parent | 434c76fd5f1628095816b628abc887b85fd549aa (diff) | |
download | libgphoto2-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.c | 16 |
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); |