3
3
* Copyright (C) 2001-2004 Mariusz Woloszyn <emsi@ipartners.pl>
4
* Copyright (C) 2003-2009 Marcus Meissner <marcus@jet.franken.de>
4
* Copyright (C) 2003-2012 Marcus Meissner <marcus@jet.franken.de>
5
5
* Copyright (C) 2006-2008 Linus Walleij <triad@df.lth.se>
6
6
* Copyright (C) 2007 Tero Saarni <tero.saarni@gmail.com>
7
7
* Copyright (C) 2009 Axel Waggershauser <awagger@web.de>
1831
ptp_canon_eos_getobjectinfoex (
1832
PTPParams* params, uint32_t storageid, uint32_t oid, uint32_t unk,
1833
PTPCANONFolderEntry **entries, unsigned int *nrofentries
1836
unsigned int i, size = 0;
1837
unsigned char *data, *xdata;
1842
ptp.Code = PTP_OC_CANON_EOS_GetObjectInfoEx;
1844
ptp.Param1 = storageid;
1847
ret = ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size);
1848
if (ret != PTP_RC_OK)
1851
*nrofentries = dtoh32a(data);
1852
*entries = malloc(*nrofentries * sizeof(PTPCANONFolderEntry));
1854
return PTP_RC_GeneralError;
1856
xdata = data+sizeof(uint32_t);
1857
for (i=0;i<*nrofentries;i++) {
1858
ptp_unpack_Canon_EOS_FE (params, &xdata[4], &((*entries)[i]));
1859
xdata += dtoh32a(xdata);
1833
1865
* ptp_canon_eos_getpartialobject:
2868
ptp_mtpz_sendwmdrmpdapprequest (PTPParams* params, unsigned char *appcertmsg, uint32_t size)
2873
ptp.Code=PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest;
2874
return ptp_transaction (params, &ptp, PTP_DP_SENDDATA, size, &appcertmsg, NULL);
2878
ptp_mtpz_getwmdrmpdappresponse (PTPParams* params, unsigned char **response, uint32_t *size)
2883
ptp.Code = PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse;
2886
return ptp_transaction (params, &ptp, PTP_DP_GETDATA, 0, response, size);
2835
2889
/****** CHDK interface ******/
5413
5467
for (i=0;i<ob->nrofmtpprops;i++,prop++) {
5414
5468
switch (prop->property) {
5415
5469
case PTP_OPC_StorageID:
5416
ob->oi.StorageID = prop->propval.u32;
5470
ob->oi.StorageID = prop->propval.u32;
5418
5472
case PTP_OPC_ObjectFormat:
5419
ob->oi.ObjectFormat = prop->propval.u16;
5473
ob->oi.ObjectFormat = prop->propval.u16;
5421
5475
case PTP_OPC_ProtectionStatus:
5422
ob->oi.ProtectionStatus = prop->propval.u16;
5476
ob->oi.ProtectionStatus = prop->propval.u16;
5424
5478
case PTP_OPC_ObjectSize:
5425
if (prop->datatype == PTP_DTC_UINT64) {
5426
if (prop->propval.u64 > 0xFFFFFFFFU)
5427
ob->oi.ObjectCompressedSize = 0xFFFFFFFFU;
5429
ob->oi.ObjectCompressedSize = (uint32_t)prop->propval.u64;
5430
} else if (prop->datatype == PTP_DTC_UINT32) {
5431
ob->oi.ObjectCompressedSize = prop->propval.u32;
5479
if (prop->datatype == PTP_DTC_UINT64) {
5480
if (prop->propval.u64 > 0xFFFFFFFFU)
5481
ob->oi.ObjectCompressedSize = 0xFFFFFFFFU;
5483
ob->oi.ObjectCompressedSize = (uint32_t)prop->propval.u64;
5484
} else if (prop->datatype == PTP_DTC_UINT32) {
5485
ob->oi.ObjectCompressedSize = prop->propval.u32;
5434
5488
case PTP_OPC_AssociationType:
5435
ob->oi.AssociationType = prop->propval.u16;
5489
ob->oi.AssociationType = prop->propval.u16;
5437
5491
case PTP_OPC_AssociationDesc:
5438
ob->oi.AssociationDesc = prop->propval.u32;
5492
ob->oi.AssociationDesc = prop->propval.u32;
5440
5494
case PTP_OPC_ObjectFileName:
5441
if (prop->propval.str) {
5442
free(ob->oi.Filename);
5443
ob->oi.Filename = strdup(prop->propval.str);
5495
if (prop->propval.str) {
5496
free(ob->oi.Filename);
5497
ob->oi.Filename = strdup(prop->propval.str);
5446
5500
case PTP_OPC_DateCreated:
5447
ob->oi.CaptureDate = ptp_unpack_PTPTIME(prop->propval.str);
5501
ob->oi.CaptureDate = ptp_unpack_PTPTIME(prop->propval.str);
5449
5503
case PTP_OPC_DateModified:
5450
ob->oi.ModificationDate = ptp_unpack_PTPTIME(prop->propval.str);
5504
ob->oi.ModificationDate = ptp_unpack_PTPTIME(prop->propval.str);
5452
5506
case PTP_OPC_Keywords:
5453
if (prop->propval.str) {
5454
free(ob->oi.Keywords);
5455
ob->oi.Keywords = strdup(prop->propval.str);
5507
if (prop->propval.str) {
5508
free(ob->oi.Keywords);
5509
ob->oi.Keywords = strdup(prop->propval.str);
5458
5512
case PTP_OPC_ParentObject:
5459
ob->oi.ParentObject = prop->propval.u32;
5513
ob->oi.ParentObject = prop->propval.u32;