summaryrefslogtreecommitdiffstats
path: root/media/mtp/MtpClient.cpp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-05-19 15:12:14 -0400
committerMike Lockwood <lockwood@android.com>2010-05-19 15:16:38 -0400
commit3743365114cc31d29e54354518a631a01461513e (patch)
tree129a282c0707d931cff9d41c7a9485bae2bc1b68 /media/mtp/MtpClient.cpp
parenta2f2a34d51fe3bd9f5a00a61e5d8cf1224671f5b (diff)
downloadframeworks_base-3743365114cc31d29e54354518a631a01461513e.zip
frameworks_base-3743365114cc31d29e54354518a631a01461513e.tar.gz
frameworks_base-3743365114cc31d29e54354518a631a01461513e.tar.bz2
PTP host: Implement getObjectHandles and getObjectInfo commands
Change-Id: I3ff6e52237f400b4e50c534a1f964c80789bfe98 Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/mtp/MtpClient.cpp')
-rw-r--r--media/mtp/MtpClient.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/media/mtp/MtpClient.cpp b/media/mtp/MtpClient.cpp
index 73234b1..de3c199 100644
--- a/media/mtp/MtpClient.cpp
+++ b/media/mtp/MtpClient.cpp
@@ -27,6 +27,7 @@
#include "MtpClient.h"
#include "MtpDebug.h"
#include "MtpDeviceInfo.h"
+#include "MtpObjectInfo.h"
#include "MtpStorageInfo.h"
#include "MtpStringBuffer.h"
@@ -46,7 +47,6 @@ MtpClient::MtpClient(struct usb_endpoint *ep_in, struct usb_endpoint *ep_out,
MtpClient::~MtpClient() {
}
-
bool MtpClient::openSession() {
printf("openSession\n");
mSessionID = 0;
@@ -118,6 +118,41 @@ printf("getStorageInfo returned %04X\n", ret);
return NULL;
}
+MtpObjectHandleList* MtpClient::getObjectHandles(MtpStorageID storageID,
+ MtpObjectFormat format, MtpObjectHandle parent) {
+ mRequest.reset();
+ mRequest.setParameter(1, storageID);
+ mRequest.setParameter(2, format);
+ mRequest.setParameter(3, parent);
+ if (!sendRequest(MTP_OPERATION_GET_OBJECT_HANDLES))
+ return NULL;
+ if (!readData())
+ return NULL;
+ MtpResponseCode ret = readResponse();
+printf("getObjectHandles returned %04X\n", ret);
+ if (ret == MTP_RESPONSE_OK) {
+ return mData.getAUInt32();
+ }
+ return NULL;
+}
+
+MtpObjectInfo* MtpClient::getObjectInfo(MtpObjectHandle handle) {
+ mRequest.reset();
+ mRequest.setParameter(1, handle);
+ if (!sendRequest(MTP_OPERATION_GET_OBJECT_INFO))
+ return NULL;
+ if (!readData())
+ return NULL;
+ MtpResponseCode ret = readResponse();
+printf("getObjectInfo returned %04X\n", ret);
+ if (ret == MTP_RESPONSE_OK) {
+ MtpObjectInfo* info = new MtpObjectInfo(handle);
+ info->read(mData);
+ return info;
+ }
+ return NULL;
+}
+
bool MtpClient::sendRequest(MtpOperationCode operation) {
printf("sendRequest: %s\n", MtpDebug::getOperationCodeName(operation));
mRequest.setOperationCode(operation);