summaryrefslogtreecommitdiffstats
path: root/media/mtp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-06-11 16:34:52 -0400
committerMike Lockwood <lockwood@android.com>2010-06-11 17:47:35 -0400
commite0a89f611d952d477acaae0316f2ccba7237466b (patch)
tree129491ba88dea8d5b39fe70117d47b79711abfe0 /media/mtp
parentcf0a99910cf87b148fe3143686262a8371d2dbc1 (diff)
downloadframeworks_base-e0a89f611d952d477acaae0316f2ccba7237466b.zip
frameworks_base-e0a89f611d952d477acaae0316f2ccba7237466b.tar.gz
frameworks_base-e0a89f611d952d477acaae0316f2ccba7237466b.tar.bz2
MTP: Add host support for deleting objects.
For example, deleting pictures on a digital camera. Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/mtp')
-rw-r--r--media/mtp/MtpDevice.cpp28
-rw-r--r--media/mtp/MtpDevice.h3
2 files changed, 31 insertions, 0 deletions
diff --git a/media/mtp/MtpDevice.cpp b/media/mtp/MtpDevice.cpp
index ee35217..3aa8a35 100644
--- a/media/mtp/MtpDevice.cpp
+++ b/media/mtp/MtpDevice.cpp
@@ -179,6 +179,8 @@ MtpObjectHandleList* MtpDevice::getObjectHandles(MtpStorageID storageID,
}
MtpObjectInfo* MtpDevice::getObjectInfo(MtpObjectHandle handle) {
+ // FIXME - we might want to add some caching here
+
mRequest.reset();
mRequest.setParameter(1, handle);
if (!sendRequest(MTP_OPERATION_GET_OBJECT_INFO))
@@ -205,7 +207,33 @@ void* MtpDevice::getThumbnail(MtpObjectHandle handle, int& outLength) {
}
outLength = 0;
return NULL;
+}
+
+bool MtpDevice::deleteObject(MtpObjectHandle handle) {
+ mRequest.reset();
+ mRequest.setParameter(1, handle);
+ if (sendRequest(MTP_OPERATION_DELETE_OBJECT)) {
+ MtpResponseCode ret = readResponse();
+ if (ret == MTP_RESPONSE_OK)
+ return true;
+ }
+ return false;
+}
+MtpObjectHandle MtpDevice::getParent(MtpObjectHandle handle) {
+ MtpObjectInfo* info = getObjectInfo(handle);
+ if (info)
+ return info->mParent;
+ else
+ return -1;
+}
+
+MtpObjectHandle MtpDevice::getStorageID(MtpObjectHandle handle) {
+ MtpObjectInfo* info = getObjectInfo(handle);
+ if (info)
+ return info->mStorageID;
+ else
+ return -1;
}
MtpProperty* MtpDevice::getDevicePropDesc(MtpDeviceProperty code) {
diff --git a/media/mtp/MtpDevice.h b/media/mtp/MtpDevice.h
index 0ee930f..9b05197 100644
--- a/media/mtp/MtpDevice.h
+++ b/media/mtp/MtpDevice.h
@@ -71,6 +71,9 @@ public:
MtpObjectHandleList* getObjectHandles(MtpStorageID storageID, MtpObjectFormat format, MtpObjectHandle parent);
MtpObjectInfo* getObjectInfo(MtpObjectHandle handle);
void* getThumbnail(MtpObjectHandle handle, int& outLength);
+ bool deleteObject(MtpObjectHandle handle);
+ MtpObjectHandle getParent(MtpObjectHandle handle);
+ MtpObjectHandle getStorageID(MtpObjectHandle handle);
MtpProperty* getDevicePropDesc(MtpDeviceProperty code);