diff options
| author | Mike Lockwood <lockwood@android.com> | 2010-05-19 15:12:14 -0400 |
|---|---|---|
| committer | Mike Lockwood <lockwood@android.com> | 2010-05-19 15:16:38 -0400 |
| commit | 3743365114cc31d29e54354518a631a01461513e (patch) | |
| tree | 129a282c0707d931cff9d41c7a9485bae2bc1b68 /media/mtp/MtpClient.cpp | |
| parent | a2f2a34d51fe3bd9f5a00a61e5d8cf1224671f5b (diff) | |
| download | frameworks_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.cpp | 37 |
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); |
