From 98693f674125484de8873d969c209276a6dd604b Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 7 Dec 2010 10:58:56 -0800 Subject: MTP: Host support for GetObjectPropsSupported and GetObjectPropDesc Change-Id: I6fd23587597fc68227dfb61118b097eda3e3e1d5 Signed-off-by: Mike Lockwood --- media/mtp/MtpDevice.cpp | 35 +++++++++++++++++++++++++++++++++++ media/mtp/MtpDevice.h | 3 +++ 2 files changed, 38 insertions(+) (limited to 'media/mtp') diff --git a/media/mtp/MtpDevice.cpp b/media/mtp/MtpDevice.cpp index 416ebfe..a4d29a7 100644 --- a/media/mtp/MtpDevice.cpp +++ b/media/mtp/MtpDevice.cpp @@ -330,6 +330,23 @@ MtpObjectHandle MtpDevice::getStorageID(MtpObjectHandle handle) { return -1; } +MtpObjectPropertyList* MtpDevice::getObjectPropsSupported(MtpObjectFormat format) { + Mutex::Autolock autoLock(mMutex); + + mRequest.reset(); + mRequest.setParameter(1, format); + if (!sendRequest(MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED)) + return NULL; + if (!readData()) + return NULL; + MtpResponseCode ret = readResponse(); + if (ret == MTP_RESPONSE_OK) { + return mData.getAUInt16(); + } + return NULL; + +} + MtpProperty* MtpDevice::getDevicePropDesc(MtpDeviceProperty code) { Mutex::Autolock autoLock(mMutex); @@ -348,6 +365,24 @@ MtpProperty* MtpDevice::getDevicePropDesc(MtpDeviceProperty code) { return NULL; } +MtpProperty* MtpDevice::getObjectPropDesc(MtpObjectProperty code) { + Mutex::Autolock autoLock(mMutex); + + mRequest.reset(); + mRequest.setParameter(1, code); + if (!sendRequest(MTP_OPERATION_GET_OBJECT_PROP_DESC)) + return NULL; + if (!readData()) + return NULL; + MtpResponseCode ret = readResponse(); + if (ret == MTP_RESPONSE_OK) { + MtpProperty* property = new MtpProperty; + property->read(mData); + return property; + } + return NULL; +} + // reads the object's data and writes it to the specified file path bool MtpDevice::readObject(MtpObjectHandle handle, const char* destPath, int group, int perm) { LOGD("readObject: %s", destPath); diff --git a/media/mtp/MtpDevice.h b/media/mtp/MtpDevice.h index 21c85d5..6eba8c8 100644 --- a/media/mtp/MtpDevice.h +++ b/media/mtp/MtpDevice.h @@ -85,7 +85,10 @@ public: MtpObjectHandle getParent(MtpObjectHandle handle); MtpObjectHandle getStorageID(MtpObjectHandle handle); + MtpObjectPropertyList* getObjectPropsSupported(MtpObjectFormat format); + MtpProperty* getDevicePropDesc(MtpDeviceProperty code); + MtpProperty* getObjectPropDesc(MtpObjectProperty code); bool readObject(MtpObjectHandle handle, const char* destPath, int group, int perm); -- cgit v1.1