diff options
author | Mike Lockwood <lockwood@android.com> | 2010-12-07 17:11:07 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-12-07 17:11:07 -0800 |
commit | 79d8c23752e3004b62e513b2057a389346cdc335 (patch) | |
tree | 01a7b79ee08b509391541e516e96f4d2e4da51a4 /media | |
parent | 043b601774c0f302b73ed713772cd1bd62f43fe4 (diff) | |
parent | 98693f674125484de8873d969c209276a6dd604b (diff) | |
download | frameworks_av-79d8c23752e3004b62e513b2057a389346cdc335.zip frameworks_av-79d8c23752e3004b62e513b2057a389346cdc335.tar.gz frameworks_av-79d8c23752e3004b62e513b2057a389346cdc335.tar.bz2 |
Merge "MTP: Host support for GetObjectPropsSupported and GetObjectPropDesc"
Diffstat (limited to 'media')
-rw-r--r-- | media/mtp/MtpDevice.cpp | 35 | ||||
-rw-r--r-- | media/mtp/MtpDevice.h | 3 |
2 files changed, 38 insertions, 0 deletions
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); |