From d927a1d99630c05ff773f0e9e8791ca9a965e020 Mon Sep 17 00:00:00 2001
From: James Dong <jdong@google.com>
Date: Wed, 28 Mar 2012 10:42:44 -0700
Subject: Deleted the media, camera, drm related files since they are relocated

Change-Id: I9bc5573ee07e30b305b5b879023aa9ec69e10b91
---
 media/mtp/Android.mk            |   75 ---
 media/mtp/MtpDataPacket.cpp     |  490 ----------------
 media/mtp/MtpDataPacket.h       |  124 ----
 media/mtp/MtpDatabase.h         |  113 ----
 media/mtp/MtpDebug.cpp          |  402 -------------
 media/mtp/MtpDebug.h            |   37 --
 media/mtp/MtpDevice.cpp         |  835 ---------------------------
 media/mtp/MtpDevice.h           |  116 ----
 media/mtp/MtpDeviceInfo.cpp     |   97 ----
 media/mtp/MtpDeviceInfo.h       |   54 --
 media/mtp/MtpEventPacket.cpp    |   70 ---
 media/mtp/MtpEventPacket.h      |   48 --
 media/mtp/MtpObjectInfo.cpp     |  108 ----
 media/mtp/MtpObjectInfo.h       |   60 --
 media/mtp/MtpPacket.cpp         |  166 ------
 media/mtp/MtpPacket.h           |   72 ---
 media/mtp/MtpProperty.cpp       |  534 -----------------
 media/mtp/MtpProperty.h         |  114 ----
 media/mtp/MtpRequestPacket.cpp  |   60 --
 media/mtp/MtpRequestPacket.h    |   50 --
 media/mtp/MtpResponsePacket.cpp |   60 --
 media/mtp/MtpResponsePacket.h   |   48 --
 media/mtp/MtpServer.cpp         | 1210 ---------------------------------------
 media/mtp/MtpServer.h           |  154 -----
 media/mtp/MtpStorage.cpp        |   86 ---
 media/mtp/MtpStorage.h          |   59 --
 media/mtp/MtpStorageInfo.cpp    |   72 ---
 media/mtp/MtpStorageInfo.h      |   49 --
 media/mtp/MtpStringBuffer.cpp   |  171 ------
 media/mtp/MtpStringBuffer.h     |   57 --
 media/mtp/MtpTypes.h            |   78 ---
 media/mtp/MtpUtils.cpp          |   80 ---
 media/mtp/MtpUtils.h            |   29 -
 media/mtp/mtp.h                 |  492 ----------------
 34 files changed, 6270 deletions(-)
 delete mode 100644 media/mtp/Android.mk
 delete mode 100644 media/mtp/MtpDataPacket.cpp
 delete mode 100644 media/mtp/MtpDataPacket.h
 delete mode 100644 media/mtp/MtpDatabase.h
 delete mode 100644 media/mtp/MtpDebug.cpp
 delete mode 100644 media/mtp/MtpDebug.h
 delete mode 100644 media/mtp/MtpDevice.cpp
 delete mode 100644 media/mtp/MtpDevice.h
 delete mode 100644 media/mtp/MtpDeviceInfo.cpp
 delete mode 100644 media/mtp/MtpDeviceInfo.h
 delete mode 100644 media/mtp/MtpEventPacket.cpp
 delete mode 100644 media/mtp/MtpEventPacket.h
 delete mode 100644 media/mtp/MtpObjectInfo.cpp
 delete mode 100644 media/mtp/MtpObjectInfo.h
 delete mode 100644 media/mtp/MtpPacket.cpp
 delete mode 100644 media/mtp/MtpPacket.h
 delete mode 100644 media/mtp/MtpProperty.cpp
 delete mode 100644 media/mtp/MtpProperty.h
 delete mode 100644 media/mtp/MtpRequestPacket.cpp
 delete mode 100644 media/mtp/MtpRequestPacket.h
 delete mode 100644 media/mtp/MtpResponsePacket.cpp
 delete mode 100644 media/mtp/MtpResponsePacket.h
 delete mode 100644 media/mtp/MtpServer.cpp
 delete mode 100644 media/mtp/MtpServer.h
 delete mode 100644 media/mtp/MtpStorage.cpp
 delete mode 100644 media/mtp/MtpStorage.h
 delete mode 100644 media/mtp/MtpStorageInfo.cpp
 delete mode 100644 media/mtp/MtpStorageInfo.h
 delete mode 100644 media/mtp/MtpStringBuffer.cpp
 delete mode 100644 media/mtp/MtpStringBuffer.h
 delete mode 100644 media/mtp/MtpTypes.h
 delete mode 100644 media/mtp/MtpUtils.cpp
 delete mode 100644 media/mtp/MtpUtils.h
 delete mode 100644 media/mtp/mtp.h

(limited to 'media/mtp')

diff --git a/media/mtp/Android.mk b/media/mtp/Android.mk
deleted file mode 100644
index fc7fc4f..0000000
--- a/media/mtp/Android.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:=                                       \
-                  MtpDataPacket.cpp                     \
-                  MtpDebug.cpp                          \
-                  MtpDevice.cpp                         \
-                  MtpEventPacket.cpp                    \
-                  MtpDeviceInfo.cpp                     \
-                  MtpObjectInfo.cpp                     \
-                  MtpPacket.cpp                         \
-                  MtpProperty.cpp                       \
-                  MtpRequestPacket.cpp                  \
-                  MtpResponsePacket.cpp                 \
-                  MtpServer.cpp                         \
-                  MtpStorageInfo.cpp                    \
-                  MtpStringBuffer.cpp                   \
-                  MtpStorage.cpp                        \
-                  MtpUtils.cpp                          \
-
-LOCAL_MODULE:= libmtp
-
-LOCAL_CFLAGS := -DMTP_DEVICE -DMTP_HOST
-
-# Needed for <bionic_time.h>
-LOCAL_C_INCLUDES := bionic/libc/private
-
-LOCAL_SHARED_LIBRARIES := libutils libcutils libusbhost libbinder
-
-include $(BUILD_SHARED_LIBRARY)
-
-ifeq ($(HOST_OS),linux)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:=                                       \
-                  MtpDataPacket.cpp                     \
-                  MtpDebug.cpp                          \
-                  MtpDevice.cpp                         \
-                  MtpEventPacket.cpp                    \
-                  MtpDeviceInfo.cpp                     \
-                  MtpObjectInfo.cpp                     \
-                  MtpPacket.cpp                         \
-                  MtpProperty.cpp                       \
-                  MtpRequestPacket.cpp                  \
-                  MtpResponsePacket.cpp                 \
-                  MtpStorageInfo.cpp                    \
-                  MtpStringBuffer.cpp                   \
-                  MtpStorage.cpp                        \
-                  MtpUtils.cpp                          \
-
-LOCAL_MODULE:= libmtp
-
-LOCAL_CFLAGS := -DMTP_HOST
-
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-endif
diff --git a/media/mtp/MtpDataPacket.cpp b/media/mtp/MtpDataPacket.cpp
deleted file mode 100644
index 930f0b0..0000000
--- a/media/mtp/MtpDataPacket.cpp
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpDataPacket"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-
-#include <usbhost/usbhost.h>
-
-#include "MtpDataPacket.h"
-#include "MtpStringBuffer.h"
-
-#define MTP_BUFFER_SIZE 16384
-
-namespace android {
-
-MtpDataPacket::MtpDataPacket()
-    :   MtpPacket(MTP_BUFFER_SIZE),   // MAX_USBFS_BUFFER_SIZE
-        mOffset(MTP_CONTAINER_HEADER_SIZE)
-{
-}
-
-MtpDataPacket::~MtpDataPacket() {
-}
-
-void MtpDataPacket::reset() {
-    MtpPacket::reset();
-    mOffset = MTP_CONTAINER_HEADER_SIZE;
-}
-
-void MtpDataPacket::setOperationCode(MtpOperationCode code) {
-    MtpPacket::putUInt16(MTP_CONTAINER_CODE_OFFSET, code);
-}
-
-void MtpDataPacket::setTransactionID(MtpTransactionID id) {
-    MtpPacket::putUInt32(MTP_CONTAINER_TRANSACTION_ID_OFFSET, id);
-}
-
-uint16_t MtpDataPacket::getUInt16() {
-    int offset = mOffset;
-    uint16_t result = (uint16_t)mBuffer[offset] | ((uint16_t)mBuffer[offset + 1] << 8);
-    mOffset += 2;
-    return result;
-}
-
-uint32_t MtpDataPacket::getUInt32() {
-    int offset = mOffset;
-    uint32_t result = (uint32_t)mBuffer[offset] | ((uint32_t)mBuffer[offset + 1] << 8) |
-           ((uint32_t)mBuffer[offset + 2] << 16)  | ((uint32_t)mBuffer[offset + 3] << 24);
-    mOffset += 4;
-    return result;
-}
-
-uint64_t MtpDataPacket::getUInt64() {
-    int offset = mOffset;
-    uint64_t result = (uint64_t)mBuffer[offset] | ((uint64_t)mBuffer[offset + 1] << 8) |
-           ((uint64_t)mBuffer[offset + 2] << 16) | ((uint64_t)mBuffer[offset + 3] << 24) |
-           ((uint64_t)mBuffer[offset + 4] << 32) | ((uint64_t)mBuffer[offset + 5] << 40) |
-           ((uint64_t)mBuffer[offset + 6] << 48)  | ((uint64_t)mBuffer[offset + 7] << 56);
-    mOffset += 8;
-    return result;
-}
-
-void MtpDataPacket::getUInt128(uint128_t& value) {
-    value[0] = getUInt32();
-    value[1] = getUInt32();
-    value[2] = getUInt32();
-    value[3] = getUInt32();
-}
-
-void MtpDataPacket::getString(MtpStringBuffer& string)
-{
-    string.readFromPacket(this);
-}
-
-Int8List* MtpDataPacket::getAInt8() {
-    Int8List* result = new Int8List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getInt8());
-    return result;
-}
-
-UInt8List* MtpDataPacket::getAUInt8() {
-    UInt8List* result = new UInt8List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getUInt8());
-    return result;
-}
-
-Int16List* MtpDataPacket::getAInt16() {
-    Int16List* result = new Int16List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getInt16());
-    return result;
-}
-
-UInt16List* MtpDataPacket::getAUInt16() {
-    UInt16List* result = new UInt16List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getUInt16());
-    return result;
-}
-
-Int32List* MtpDataPacket::getAInt32() {
-    Int32List* result = new Int32List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getInt32());
-    return result;
-}
-
-UInt32List* MtpDataPacket::getAUInt32() {
-    UInt32List* result = new UInt32List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getUInt32());
-    return result;
-}
-
-Int64List* MtpDataPacket::getAInt64() {
-    Int64List* result = new Int64List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getInt64());
-    return result;
-}
-
-UInt64List* MtpDataPacket::getAUInt64() {
-    UInt64List* result = new UInt64List;
-    int count = getUInt32();
-    for (int i = 0; i < count; i++)
-        result->push(getUInt64());
-    return result;
-}
-
-void MtpDataPacket::putInt8(int8_t value) {
-    allocate(mOffset + 1);
-    mBuffer[mOffset++] = (uint8_t)value;
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putUInt8(uint8_t value) {
-    allocate(mOffset + 1);
-    mBuffer[mOffset++] = (uint8_t)value;
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putInt16(int16_t value) {
-    allocate(mOffset + 2);
-    mBuffer[mOffset++] = (uint8_t)(value & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 8) & 0xFF);
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putUInt16(uint16_t value) {
-    allocate(mOffset + 2);
-    mBuffer[mOffset++] = (uint8_t)(value & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 8) & 0xFF);
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putInt32(int32_t value) {
-    allocate(mOffset + 4);
-    mBuffer[mOffset++] = (uint8_t)(value & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 8) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 16) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 24) & 0xFF);
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putUInt32(uint32_t value) {
-    allocate(mOffset + 4);
-    mBuffer[mOffset++] = (uint8_t)(value & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 8) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 16) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 24) & 0xFF);
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putInt64(int64_t value) {
-    allocate(mOffset + 8);
-    mBuffer[mOffset++] = (uint8_t)(value & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 8) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 16) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 24) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 32) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 40) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 48) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 56) & 0xFF);
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putUInt64(uint64_t value) {
-    allocate(mOffset + 8);
-    mBuffer[mOffset++] = (uint8_t)(value & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 8) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 16) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 24) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 32) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 40) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 48) & 0xFF);
-    mBuffer[mOffset++] = (uint8_t)((value >> 56) & 0xFF);
-    if (mPacketSize < mOffset)
-        mPacketSize = mOffset;
-}
-
-void MtpDataPacket::putInt128(const int128_t& value) {
-    putInt32(value[0]);
-    putInt32(value[1]);
-    putInt32(value[2]);
-    putInt32(value[3]);
-}
-
-void MtpDataPacket::putUInt128(const uint128_t& value) {
-    putUInt32(value[0]);
-    putUInt32(value[1]);
-    putUInt32(value[2]);
-    putUInt32(value[3]);
-}
-
-void MtpDataPacket::putInt128(int64_t value) {
-    putInt64(value);
-    putInt64(value < 0 ? -1 : 0);
-}
-
-void MtpDataPacket::putUInt128(uint64_t value) {
-    putUInt64(value);
-    putUInt64(0);
-}
-
-void MtpDataPacket::putAInt8(const int8_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putInt8(*values++);
-}
-
-void MtpDataPacket::putAUInt8(const uint8_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putUInt8(*values++);
-}
-
-void MtpDataPacket::putAInt16(const int16_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putInt16(*values++);
-}
-
-void MtpDataPacket::putAUInt16(const uint16_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putUInt16(*values++);
-}
-
-void MtpDataPacket::putAUInt16(const UInt16List* values) {
-    size_t count = (values ? values->size() : 0);
-    putUInt32(count);
-    for (size_t i = 0; i < count; i++)
-        putUInt16((*values)[i]);
-}
-
-void MtpDataPacket::putAInt32(const int32_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putInt32(*values++);
-}
-
-void MtpDataPacket::putAUInt32(const uint32_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putUInt32(*values++);
-}
-
-void MtpDataPacket::putAUInt32(const UInt32List* list) {
-    if (!list) {
-        putEmptyArray();
-    } else {
-        size_t size = list->size();
-        putUInt32(size);
-        for (size_t i = 0; i < size; i++)
-            putUInt32((*list)[i]);
-    }
-}
-
-void MtpDataPacket::putAInt64(const int64_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putInt64(*values++);
-}
-
-void MtpDataPacket::putAUInt64(const uint64_t* values, int count) {
-    putUInt32(count);
-    for (int i = 0; i < count; i++)
-        putUInt64(*values++);
-}
-
-void MtpDataPacket::putString(const MtpStringBuffer& string) {
-    string.writeToPacket(this);
-}
-
-void MtpDataPacket::putString(const char* s) {
-    MtpStringBuffer string(s);
-    string.writeToPacket(this);
-}
-
-void MtpDataPacket::putString(const uint16_t* string) {
-    int count = 0;
-    for (int i = 0; i < 256; i++) {
-        if (string[i])
-            count++;
-        else
-            break;
-    }
-    putUInt8(count > 0 ? count + 1 : 0);
-    for (int i = 0; i < count; i++)
-        putUInt16(string[i]);
-    // only terminate with zero if string is not empty
-    if (count > 0)
-        putUInt16(0);
-}
-
-#ifdef MTP_DEVICE 
-int MtpDataPacket::read(int fd) {
-    int ret = ::read(fd, mBuffer, MTP_BUFFER_SIZE);
-    if (ret < MTP_CONTAINER_HEADER_SIZE)
-        return -1;
-    mPacketSize = ret;
-    mOffset = MTP_CONTAINER_HEADER_SIZE;
-    return ret;
-}
-
-int MtpDataPacket::write(int fd) {
-    MtpPacket::putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
-    MtpPacket::putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_DATA);
-    int ret = ::write(fd, mBuffer, mPacketSize);
-    return (ret < 0 ? ret : 0);
-}
-
-int MtpDataPacket::writeData(int fd, void* data, uint32_t length) {
-    allocate(length);
-    memcpy(mBuffer + MTP_CONTAINER_HEADER_SIZE, data, length);
-    length += MTP_CONTAINER_HEADER_SIZE;
-    MtpPacket::putUInt32(MTP_CONTAINER_LENGTH_OFFSET, length);
-    MtpPacket::putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_DATA);
-    int ret = ::write(fd, mBuffer, length);
-    return (ret < 0 ? ret : 0);
-}
-
-#endif // MTP_DEVICE
-
-#ifdef MTP_HOST
-int MtpDataPacket::read(struct usb_request *request) {
-    // first read the header
-    request->buffer = mBuffer;
-    request->buffer_length = mBufferSize;
-    int length = transfer(request);
-    if (length >= MTP_CONTAINER_HEADER_SIZE) {
-        // look at the length field to see if the data spans multiple packets
-        uint32_t totalLength = MtpPacket::getUInt32(MTP_CONTAINER_LENGTH_OFFSET);
-        allocate(totalLength);
-        while (totalLength > length) {
-            request->buffer = mBuffer + length;
-            request->buffer_length = totalLength - length;
-            int ret = transfer(request);
-            if (ret >= 0)
-                length += ret;
-            else {
-                length = ret;
-                break;
-            }
-        }
-    }
-    if (length >= 0)
-        mPacketSize = length;
-    return length;
-}
-
-int MtpDataPacket::readData(struct usb_request *request, void* buffer, int length) {
-    int read = 0;
-    while (read < length) {
-        request->buffer = (char *)buffer + read;
-        request->buffer_length = length - read;
-        int ret = transfer(request);
-        if (ret < 0) {
-            return ret;
-        }
-        read += ret;
-    }
-    return read;
-}
-
-// Queue a read request.  Call readDataWait to wait for result
-int MtpDataPacket::readDataAsync(struct usb_request *req) {
-    if (usb_request_queue(req)) {
-        ALOGE("usb_endpoint_queue failed, errno: %d", errno);
-        return -1;
-    }
-    return 0;
-}
-
-// Wait for result of readDataAsync
-int MtpDataPacket::readDataWait(struct usb_device *device) {
-    struct usb_request *req = usb_request_wait(device);
-    return (req ? req->actual_length : -1);
-}
-
-int MtpDataPacket::readDataHeader(struct usb_request *request) {
-    request->buffer = mBuffer;
-    request->buffer_length = request->max_packet_size;
-    int length = transfer(request);
-    if (length >= 0)
-        mPacketSize = length;
-    return length;
-}
-
-int MtpDataPacket::writeDataHeader(struct usb_request *request, uint32_t length) {
-    MtpPacket::putUInt32(MTP_CONTAINER_LENGTH_OFFSET, length);
-    MtpPacket::putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_DATA);
-    request->buffer = mBuffer;
-    request->buffer_length = MTP_CONTAINER_HEADER_SIZE;
-    int ret = transfer(request);
-    return (ret < 0 ? ret : 0);
-}
-
-int MtpDataPacket::write(struct usb_request *request) {
-    MtpPacket::putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
-    MtpPacket::putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_DATA);
-
-    // send header separately from data
-    request->buffer = mBuffer;
-    request->buffer_length = MTP_CONTAINER_HEADER_SIZE;
-    int ret = transfer(request);
-    if (ret == MTP_CONTAINER_HEADER_SIZE) {
-        request->buffer = mBuffer + MTP_CONTAINER_HEADER_SIZE;
-        request->buffer_length = mPacketSize - MTP_CONTAINER_HEADER_SIZE;
-        ret = transfer(request);
-    }
-    return (ret < 0 ? ret : 0);
-}
-
-int MtpDataPacket::write(struct usb_request *request, void* buffer, uint32_t length) {
-    request->buffer = buffer;
-    request->buffer_length = length;
-    int ret = transfer(request);
-    return (ret < 0 ? ret : 0);
-}
-
-#endif // MTP_HOST
-
-void* MtpDataPacket::getData(int& outLength) const {
-    int length = mPacketSize - MTP_CONTAINER_HEADER_SIZE;
-    if (length > 0) {
-        void* result = malloc(length);
-        if (result) {
-            memcpy(result, mBuffer + MTP_CONTAINER_HEADER_SIZE, length);
-            outLength = length;
-            return result;
-        }
-    }
-    outLength = 0;
-    return NULL;
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpDataPacket.h b/media/mtp/MtpDataPacket.h
deleted file mode 100644
index 2b81063..0000000
--- a/media/mtp/MtpDataPacket.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_DATA_PACKET_H
-#define _MTP_DATA_PACKET_H
-
-#include "MtpPacket.h"
-#include "mtp.h"
-
-struct usb_device;
-struct usb_request;
-
-namespace android {
-
-class MtpStringBuffer;
-
-class MtpDataPacket : public MtpPacket {
-private:
-    // current offset for get/put methods
-    int                 mOffset;
-
-public:
-                        MtpDataPacket();
-    virtual             ~MtpDataPacket();
-
-    virtual void        reset();
-
-    void                setOperationCode(MtpOperationCode code);
-    void                setTransactionID(MtpTransactionID id);
-
-    inline const uint8_t*     getData() const { return mBuffer + MTP_CONTAINER_HEADER_SIZE; }
-    inline uint8_t      getUInt8() { return (uint8_t)mBuffer[mOffset++]; }
-    inline int8_t       getInt8() { return (int8_t)mBuffer[mOffset++]; }
-    uint16_t            getUInt16();
-    inline int16_t      getInt16() { return (int16_t)getUInt16(); }
-    uint32_t            getUInt32();
-    inline int32_t      getInt32() { return (int32_t)getUInt32(); }
-    uint64_t            getUInt64();
-    inline int64_t      getInt64() { return (int64_t)getUInt64(); }
-    void                getUInt128(uint128_t& value);
-    inline void         getInt128(int128_t& value) { getUInt128((uint128_t&)value); }
-    void                getString(MtpStringBuffer& string);
-
-    Int8List*           getAInt8();
-    UInt8List*          getAUInt8();
-    Int16List*          getAInt16();
-    UInt16List*         getAUInt16();
-    Int32List*          getAInt32();
-    UInt32List*         getAUInt32();
-    Int64List*          getAInt64();
-    UInt64List*         getAUInt64();
-
-    void                putInt8(int8_t value);
-    void                putUInt8(uint8_t value);
-    void                putInt16(int16_t value);
-    void                putUInt16(uint16_t value);
-    void                putInt32(int32_t value);
-    void                putUInt32(uint32_t value);
-    void                putInt64(int64_t value);
-    void                putUInt64(uint64_t value);
-    void                putInt128(const int128_t& value);
-    void                putUInt128(const uint128_t& value);
-    void                putInt128(int64_t value);
-    void                putUInt128(uint64_t value);
-
-    void                putAInt8(const int8_t* values, int count);
-    void                putAUInt8(const uint8_t* values, int count);
-    void                putAInt16(const int16_t* values, int count);
-    void                putAUInt16(const uint16_t* values, int count);
-    void                putAUInt16(const UInt16List* values);
-    void                putAInt32(const int32_t* values, int count);
-    void                putAUInt32(const uint32_t* values, int count);
-    void                putAUInt32(const UInt32List* list);
-    void                putAInt64(const int64_t* values, int count);
-    void                putAUInt64(const uint64_t* values, int count);
-    void                putString(const MtpStringBuffer& string);
-    void                putString(const char* string);
-    void                putString(const uint16_t* string);
-    inline void         putEmptyString() { putUInt8(0); }
-    inline void         putEmptyArray() { putUInt32(0); }
-
-
-#ifdef MTP_DEVICE
-    // fill our buffer with data from the given file descriptor
-    int                 read(int fd);
-
-    // write our data to the given file descriptor
-    int                 write(int fd);
-    int                 writeData(int fd, void* data, uint32_t length);
-#endif
-
-#ifdef MTP_HOST
-    int                 read(struct usb_request *request);
-    int                 readData(struct usb_request *request, void* buffer, int length);
-    int                 readDataAsync(struct usb_request *req);
-    int                 readDataWait(struct usb_device *device);
-    int                 readDataHeader(struct usb_request *ep);
-
-    int                 writeDataHeader(struct usb_request *ep, uint32_t length);
-    int                 write(struct usb_request *ep);
-    int                 write(struct usb_request *ep, void* buffer, uint32_t length);
-#endif
-
-    inline bool         hasData() const { return mPacketSize > MTP_CONTAINER_HEADER_SIZE; }
-    inline uint32_t     getContainerLength() const { return MtpPacket::getUInt32(MTP_CONTAINER_LENGTH_OFFSET); }
-    void*               getData(int& outLength) const;
-};
-
-}; // namespace android
-
-#endif // _MTP_DATA_PACKET_H
diff --git a/media/mtp/MtpDatabase.h b/media/mtp/MtpDatabase.h
deleted file mode 100644
index 4e6ac7a..0000000
--- a/media/mtp/MtpDatabase.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_DATABASE_H
-#define _MTP_DATABASE_H
-
-#include "MtpTypes.h"
-
-namespace android {
-
-class MtpDataPacket;
-class MtpProperty;
-class MtpObjectInfo;
-
-class MtpDatabase {
-public:
-    virtual ~MtpDatabase() {}
-
-    // called from SendObjectInfo to reserve a database entry for the incoming file
-    virtual MtpObjectHandle         beginSendObject(const char* path,
-                                            MtpObjectFormat format,
-                                            MtpObjectHandle parent,
-                                            MtpStorageID storage,
-                                            uint64_t size,
-                                            time_t modified) = 0;
-
-    // called to report success or failure of the SendObject file transfer
-    // success should signal a notification of the new object's creation,
-    // failure should remove the database entry created in beginSendObject
-    virtual void                    endSendObject(const char* path,
-                                            MtpObjectHandle handle,
-                                            MtpObjectFormat format,
-                                            bool succeeded) = 0;
-
-    virtual MtpObjectHandleList*    getObjectList(MtpStorageID storageID,
-                                            MtpObjectFormat format,
-                                            MtpObjectHandle parent) = 0;
-
-    virtual int                     getNumObjects(MtpStorageID storageID,
-                                            MtpObjectFormat format,
-                                            MtpObjectHandle parent) = 0;
-
-    // callee should delete[] the results from these
-    // results can be NULL
-    virtual MtpObjectFormatList*    getSupportedPlaybackFormats() = 0;
-    virtual MtpObjectFormatList*    getSupportedCaptureFormats() = 0;
-    virtual MtpObjectPropertyList*  getSupportedObjectProperties(MtpObjectFormat format) = 0;
-    virtual MtpDevicePropertyList*  getSupportedDeviceProperties() = 0;
-
-    virtual MtpResponseCode         getObjectPropertyValue(MtpObjectHandle handle,
-                                            MtpObjectProperty property,
-                                            MtpDataPacket& packet) = 0;
-
-    virtual MtpResponseCode         setObjectPropertyValue(MtpObjectHandle handle,
-                                            MtpObjectProperty property,
-                                            MtpDataPacket& packet) = 0;
-
-    virtual MtpResponseCode         getDevicePropertyValue(MtpDeviceProperty property,
-                                            MtpDataPacket& packet) = 0;
-
-    virtual MtpResponseCode         setDevicePropertyValue(MtpDeviceProperty property,
-                                            MtpDataPacket& packet) = 0;
-
-    virtual MtpResponseCode         resetDeviceProperty(MtpDeviceProperty property) = 0;
-
-    virtual MtpResponseCode         getObjectPropertyList(MtpObjectHandle handle,
-                                            uint32_t format, uint32_t property,
-                                            int groupCode, int depth,
-                                            MtpDataPacket& packet) = 0;
-
-    virtual MtpResponseCode         getObjectInfo(MtpObjectHandle handle,
-                                            MtpObjectInfo& info) = 0;
-
-    virtual void*                   getThumbnail(MtpObjectHandle handle, size_t& outThumbSize) = 0;
-
-    virtual MtpResponseCode         getObjectFilePath(MtpObjectHandle handle,
-                                            MtpString& outFilePath,
-                                            int64_t& outFileLength,
-                                            MtpObjectFormat& outFormat) = 0;
-
-    virtual MtpResponseCode         deleteFile(MtpObjectHandle handle) = 0;
-
-    virtual MtpObjectHandleList*    getObjectReferences(MtpObjectHandle handle) = 0;
-
-    virtual MtpResponseCode         setObjectReferences(MtpObjectHandle handle,
-                                            MtpObjectHandleList* references) = 0;
-
-    virtual MtpProperty*            getObjectPropertyDesc(MtpObjectProperty property,
-                                            MtpObjectFormat format) = 0;
-
-    virtual MtpProperty*            getDevicePropertyDesc(MtpDeviceProperty property) = 0;
-
-    virtual void                    sessionStarted() = 0;
-
-    virtual void                    sessionEnded() = 0;
-};
-
-}; // namespace android
-
-#endif // _MTP_DATABASE_H
diff --git a/media/mtp/MtpDebug.cpp b/media/mtp/MtpDebug.cpp
deleted file mode 100644
index 9f3037d..0000000
--- a/media/mtp/MtpDebug.cpp
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "MtpDebug.h"
-
-namespace android {
-
-struct CodeEntry {
-    const char* name;
-    uint16_t code;
-};
-
-static const CodeEntry sOperationCodes[] = {
-    { "MTP_OPERATION_GET_DEVICE_INFO",              0x1001 },
-    { "MTP_OPERATION_OPEN_SESSION",                 0x1002 },
-    { "MTP_OPERATION_CLOSE_SESSION",                0x1003 },
-    { "MTP_OPERATION_GET_STORAGE_IDS",              0x1004 },
-    { "MTP_OPERATION_GET_STORAGE_INFO",             0x1005 },
-    { "MTP_OPERATION_GET_NUM_OBJECTS",              0x1006 },
-    { "MTP_OPERATION_GET_OBJECT_HANDLES",           0x1007 },
-    { "MTP_OPERATION_GET_OBJECT_INFO",              0x1008 },
-    { "MTP_OPERATION_GET_OBJECT",                   0x1009 },
-    { "MTP_OPERATION_GET_THUMB",                    0x100A },
-    { "MTP_OPERATION_DELETE_OBJECT",                0x100B },
-    { "MTP_OPERATION_SEND_OBJECT_INFO",             0x100C },
-    { "MTP_OPERATION_SEND_OBJECT",                  0x100D },
-    { "MTP_OPERATION_INITIATE_CAPTURE",             0x100E },
-    { "MTP_OPERATION_FORMAT_STORE",                 0x100F },
-    { "MTP_OPERATION_RESET_DEVICE",                 0x1010 },
-    { "MTP_OPERATION_SELF_TEST",                    0x1011 },
-    { "MTP_OPERATION_SET_OBJECT_PROTECTION",        0x1012 },
-    { "MTP_OPERATION_POWER_DOWN",                   0x1013 },
-    { "MTP_OPERATION_GET_DEVICE_PROP_DESC",         0x1014 },
-    { "MTP_OPERATION_GET_DEVICE_PROP_VALUE",        0x1015 },
-    { "MTP_OPERATION_SET_DEVICE_PROP_VALUE",        0x1016 },
-    { "MTP_OPERATION_RESET_DEVICE_PROP_VALUE",      0x1017 },
-    { "MTP_OPERATION_TERMINATE_OPEN_CAPTURE",       0x1018 },
-    { "MTP_OPERATION_MOVE_OBJECT",                  0x1019 },
-    { "MTP_OPERATION_COPY_OBJECT",                  0x101A },
-    { "MTP_OPERATION_GET_PARTIAL_OBJECT",           0x101B },
-    { "MTP_OPERATION_INITIATE_OPEN_CAPTURE",        0x101C },
-    { "MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED",   0x9801 },
-    { "MTP_OPERATION_GET_OBJECT_PROP_DESC",         0x9802 },
-    { "MTP_OPERATION_GET_OBJECT_PROP_VALUE",        0x9803 },
-    { "MTP_OPERATION_SET_OBJECT_PROP_VALUE",        0x9804 },
-    { "MTP_OPERATION_GET_OBJECT_PROP_LIST",         0x9805 },
-    { "MTP_OPERATION_SET_OBJECT_PROP_LIST",         0x9806 },
-    { "MTP_OPERATION_GET_INTERDEPENDENT_PROP_DESC", 0x9807 },
-    { "MTP_OPERATION_SEND_OBJECT_PROP_LIST",        0x9808 },
-    { "MTP_OPERATION_GET_OBJECT_REFERENCES",        0x9810 },
-    { "MTP_OPERATION_SET_OBJECT_REFERENCES",        0x9811 },
-    { "MTP_OPERATION_SKIP",                         0x9820 },
-    // android extensions
-    { "MTP_OPERATION_GET_PARTIAL_OBJECT_64",        0x95C1 },
-    { "MTP_OPERATION_SEND_PARTIAL_OBJECT",          0x95C2 },
-    { "MTP_OPERATION_TRUNCATE_OBJECT",              0x95C3 },
-    { "MTP_OPERATION_BEGIN_EDIT_OBJECT",            0x95C4 },
-    { "MTP_OPERATION_END_EDIT_OBJECT",              0x95C5 },
-    { 0,                                            0      },
-};
-
-static const CodeEntry sFormatCodes[] = {
-    { "MTP_FORMAT_UNDEFINED",                       0x3000 },
-    { "MTP_FORMAT_ASSOCIATION",                     0x3001 },
-    { "MTP_FORMAT_SCRIPT",                          0x3002 },
-    { "MTP_FORMAT_EXECUTABLE",                      0x3003 },
-    { "MTP_FORMAT_TEXT",                            0x3004 },
-    { "MTP_FORMAT_HTML",                            0x3005 },
-    { "MTP_FORMAT_DPOF",                            0x3006 },
-    { "MTP_FORMAT_AIFF",                            0x3007 },
-    { "MTP_FORMAT_WAV",                             0x3008 },
-    { "MTP_FORMAT_MP3",                             0x3009 },
-    { "MTP_FORMAT_AVI",                             0x300A },
-    { "MTP_FORMAT_MPEG",                            0x300B },
-    { "MTP_FORMAT_ASF",                             0x300C },
-    { "MTP_FORMAT_DEFINED",                         0x3800 },
-    { "MTP_FORMAT_EXIF_JPEG",                       0x3801 },
-    { "MTP_FORMAT_TIFF_EP",                         0x3802 },
-    { "MTP_FORMAT_FLASHPIX",                        0x3803 },
-    { "MTP_FORMAT_BMP",                             0x3804 },
-    { "MTP_FORMAT_CIFF",                            0x3805 },
-    { "MTP_FORMAT_GIF",                             0x3807 },
-    { "MTP_FORMAT_JFIF",                            0x3808 },
-    { "MTP_FORMAT_CD",                              0x3809 },
-    { "MTP_FORMAT_PICT",                            0x380A },
-    { "MTP_FORMAT_PNG",                             0x380B },
-    { "MTP_FORMAT_TIFF",                            0x380D },
-    { "MTP_FORMAT_TIFF_IT",                         0x380E },
-    { "MTP_FORMAT_JP2",                             0x380F },
-    { "MTP_FORMAT_JPX",                             0x3810 },
-    { "MTP_FORMAT_UNDEFINED_FIRMWARE",              0xB802 },
-    { "MTP_FORMAT_WINDOWS_IMAGE_FORMAT",            0xB881 },
-    { "MTP_FORMAT_UNDEFINED_AUDIO",                 0xB900 },
-    { "MTP_FORMAT_WMA",                             0xB901 },
-    { "MTP_FORMAT_OGG",                             0xB902 },
-    { "MTP_FORMAT_AAC",                             0xB903 },
-    { "MTP_FORMAT_AUDIBLE",                         0xB904 },
-    { "MTP_FORMAT_FLAC",                            0xB906 },
-    { "MTP_FORMAT_UNDEFINED_VIDEO",                 0xB980 },
-    { "MTP_FORMAT_WMV",                             0xB981 },
-    { "MTP_FORMAT_MP4_CONTAINER",                   0xB982 },
-    { "MTP_FORMAT_MP2",                             0xB983 },
-    { "MTP_FORMAT_3GP_CONTAINER",                   0xB984 },
-    { "MTP_FORMAT_UNDEFINED_COLLECTION",            0xBA00 },
-    { "MTP_FORMAT_ABSTRACT_MULTIMEDIA_ALBUM",       0xBA01 },
-    { "MTP_FORMAT_ABSTRACT_IMAGE_ALBUM",            0xBA02 },
-    { "MTP_FORMAT_ABSTRACT_AUDIO_ALBUM",            0xBA03 },
-    { "MTP_FORMAT_ABSTRACT_VIDEO_ALBUM",            0xBA04 },
-    { "MTP_FORMAT_ABSTRACT_AV_PLAYLIST",            0xBA05 },
-    { "MTP_FORMAT_ABSTRACT_CONTACT_GROUP",          0xBA06 },
-    { "MTP_FORMAT_ABSTRACT_MESSAGE_FOLDER",         0xBA07 },
-    { "MTP_FORMAT_ABSTRACT_CHAPTERED_PRODUCTION",   0xBA08 },
-    { "MTP_FORMAT_ABSTRACT_AUDIO_PLAYLIST",         0xBA09 },
-    { "MTP_FORMAT_ABSTRACT_VIDEO_PLAYLIST",         0xBA0A },
-    { "MTP_FORMAT_ABSTRACT_MEDIACAST",              0xBA0B },
-    { "MTP_FORMAT_WPL_PLAYLIST",                    0xBA10 },
-    { "MTP_FORMAT_M3U_PLAYLIST",                    0xBA11 },
-    { "MTP_FORMAT_MPL_PLAYLIST",                    0xBA12 },
-    { "MTP_FORMAT_ASX_PLAYLIST",                    0xBA13 },
-    { "MTP_FORMAT_PLS_PLAYLIST",                    0xBA14 },
-    { "MTP_FORMAT_UNDEFINED_DOCUMENT",              0xBA80 },
-    { "MTP_FORMAT_ABSTRACT_DOCUMENT",               0xBA81 },
-    { "MTP_FORMAT_XML_DOCUMENT",                    0xBA82 },
-    { "MTP_FORMAT_MS_WORD_DOCUMENT",                0xBA83 },
-    { "MTP_FORMAT_MHT_COMPILED_HTML_DOCUMENT",      0xBA84 },
-    { "MTP_FORMAT_MS_EXCEL_SPREADSHEET",            0xBA85 },
-    { "MTP_FORMAT_MS_POWERPOINT_PRESENTATION",      0xBA86 },
-    { "MTP_FORMAT_UNDEFINED_MESSAGE",               0xBB00 },
-    { "MTP_FORMAT_ABSTRACT_MESSSAGE",               0xBB01 },
-    { "MTP_FORMAT_UNDEFINED_CONTACT",               0xBB80 },
-    { "MTP_FORMAT_ABSTRACT_CONTACT",                0xBB81 },
-    { "MTP_FORMAT_VCARD_2",                         0xBB82 },
-    { 0,                                            0      },
-};
-
-static const CodeEntry sObjectPropCodes[] = {
-    { "MTP_PROPERTY_STORAGE_ID",                             0xDC01 },
-    { "MTP_PROPERTY_OBJECT_FORMAT",                          0xDC02 },
-    { "MTP_PROPERTY_PROTECTION_STATUS",                      0xDC03 },
-    { "MTP_PROPERTY_OBJECT_SIZE",                            0xDC04 },
-    { "MTP_PROPERTY_ASSOCIATION_TYPE",                       0xDC05 },
-    { "MTP_PROPERTY_ASSOCIATION_DESC",                       0xDC06 },
-    { "MTP_PROPERTY_OBJECT_FILE_NAME",                       0xDC07 },
-    { "MTP_PROPERTY_DATE_CREATED",                           0xDC08 },
-    { "MTP_PROPERTY_DATE_MODIFIED",                          0xDC09 },
-    { "MTP_PROPERTY_KEYWORDS",                               0xDC0A },
-    { "MTP_PROPERTY_PARENT_OBJECT",                          0xDC0B },
-    { "MTP_PROPERTY_ALLOWED_FOLDER_CONTENTS",                0xDC0C },
-    { "MTP_PROPERTY_HIDDEN",                                 0xDC0D },
-    { "MTP_PROPERTY_SYSTEM_OBJECT",                          0xDC0E },
-    { "MTP_PROPERTY_PERSISTENT_UID",                         0xDC41 },
-    { "MTP_PROPERTY_SYNC_ID",                                0xDC42 },
-    { "MTP_PROPERTY_PROPERTY_BAG",                           0xDC43 },
-    { "MTP_PROPERTY_NAME",                                   0xDC44 },
-    { "MTP_PROPERTY_CREATED_BY",                             0xDC45 },
-    { "MTP_PROPERTY_ARTIST",                                 0xDC46 },
-    { "MTP_PROPERTY_DATE_AUTHORED",                          0xDC47 },
-    { "MTP_PROPERTY_DESCRIPTION",                            0xDC48 },
-    { "MTP_PROPERTY_URL_REFERENCE",                          0xDC49 },
-    { "MTP_PROPERTY_LANGUAGE_LOCALE",                        0xDC4A },
-    { "MTP_PROPERTY_COPYRIGHT_INFORMATION",                  0xDC4B },
-    { "MTP_PROPERTY_SOURCE",                                 0xDC4C },
-    { "MTP_PROPERTY_ORIGIN_LOCATION",                        0xDC4D },
-    { "MTP_PROPERTY_DATE_ADDED",                             0xDC4E },
-    { "MTP_PROPERTY_NON_CONSUMABLE",                         0xDC4F },
-    { "MTP_PROPERTY_CORRUPT_UNPLAYABLE",                     0xDC50 },
-    { "MTP_PROPERTY_PRODUCER_SERIAL_NUMBER",                 0xDC51 },
-    { "MTP_PROPERTY_REPRESENTATIVE_SAMPLE_FORMAT",           0xDC81 },
-    { "MTP_PROPERTY_REPRESENTATIVE_SAMPLE_SIZE",             0xDC82 },
-    { "MTP_PROPERTY_REPRESENTATIVE_SAMPLE_HEIGHT",           0xDC83 },
-    { "MTP_PROPERTY_REPRESENTATIVE_SAMPLE_WIDTH",            0xDC84 },
-    { "MTP_PROPERTY_REPRESENTATIVE_SAMPLE_DURATION",         0xDC85 },
-    { "MTP_PROPERTY_REPRESENTATIVE_SAMPLE_DATA",             0xDC86 },
-    { "MTP_PROPERTY_WIDTH",                                  0xDC87 },
-    { "MTP_PROPERTY_HEIGHT",                                 0xDC88 },
-    { "MTP_PROPERTY_DURATION",                               0xDC89 },
-    { "MTP_PROPERTY_RATING",                                 0xDC8A },
-    { "MTP_PROPERTY_TRACK",                                  0xDC8B },
-    { "MTP_PROPERTY_GENRE",                                  0xDC8C },
-    { "MTP_PROPERTY_CREDITS",                                0xDC8D },
-    { "MTP_PROPERTY_LYRICS",                                 0xDC8E },
-    { "MTP_PROPERTY_SUBSCRIPTION_CONTENT_ID",                0xDC8F },
-    { "MTP_PROPERTY_PRODUCED_BY",                            0xDC90 },
-    { "MTP_PROPERTY_USE_COUNT",                              0xDC91 },
-    { "MTP_PROPERTY_SKIP_COUNT",                             0xDC92 },
-    { "MTP_PROPERTY_LAST_ACCESSED",                          0xDC93 },
-    { "MTP_PROPERTY_PARENTAL_RATING",                        0xDC94 },
-    { "MTP_PROPERTY_META_GENRE",                             0xDC95 },
-    { "MTP_PROPERTY_COMPOSER",                               0xDC96 },
-    { "MTP_PROPERTY_EFFECTIVE_RATING",                       0xDC97 },
-    { "MTP_PROPERTY_SUBTITLE",                               0xDC98 },
-    { "MTP_PROPERTY_ORIGINAL_RELEASE_DATE",                  0xDC99 },
-    { "MTP_PROPERTY_ALBUM_NAME",                             0xDC9A },
-    { "MTP_PROPERTY_ALBUM_ARTIST",                           0xDC9B },
-    { "MTP_PROPERTY_MOOD",                                   0xDC9C },
-    { "MTP_PROPERTY_DRM_STATUS",                             0xDC9D },
-    { "MTP_PROPERTY_SUB_DESCRIPTION",                        0xDC9E },
-    { "MTP_PROPERTY_IS_CROPPED",                             0xDCD1 },
-    { "MTP_PROPERTY_IS_COLOUR_CORRECTED",                    0xDCD2 },
-    { "MTP_PROPERTY_IMAGE_BIT_DEPTH",                        0xDCD3 },
-    { "MTP_PROPERTY_F_NUMBER",                               0xDCD4 },
-    { "MTP_PROPERTY_EXPOSURE_TIME",                          0xDCD5 },
-    { "MTP_PROPERTY_EXPOSURE_INDEX",                         0xDCD6 },
-    { "MTP_PROPERTY_TOTAL_BITRATE",                          0xDE91 },
-    { "MTP_PROPERTY_BITRATE_TYPE",                           0xDE92 },
-    { "MTP_PROPERTY_SAMPLE_RATE",                            0xDE93 },
-    { "MTP_PROPERTY_NUMBER_OF_CHANNELS",                     0xDE94 },
-    { "MTP_PROPERTY_AUDIO_BIT_DEPTH",                        0xDE95 },
-    { "MTP_PROPERTY_SCAN_TYPE",                              0xDE97 },
-    { "MTP_PROPERTY_AUDIO_WAVE_CODEC",                       0xDE99 },
-    { "MTP_PROPERTY_AUDIO_BITRATE",                          0xDE9A },
-    { "MTP_PROPERTY_VIDEO_FOURCC_CODEC",                     0xDE9B },
-    { "MTP_PROPERTY_VIDEO_BITRATE",                          0xDE9C },
-    { "MTP_PROPERTY_FRAMES_PER_THOUSAND_SECONDS",            0xDE9D },
-    { "MTP_PROPERTY_KEYFRAME_DISTANCE",                      0xDE9E },
-    { "MTP_PROPERTY_BUFFER_SIZE",                            0xDE9F },
-    { "MTP_PROPERTY_ENCODING_QUALITY",                       0xDEA0 },
-    { "MTP_PROPERTY_ENCODING_PROFILE",                       0xDEA1 },
-    { "MTP_PROPERTY_DISPLAY_NAME",                           0xDCE0 },
-    { "MTP_PROPERTY_BODY_TEXT",                              0xDCE1 },
-    { "MTP_PROPERTY_SUBJECT",                                0xDCE2 },
-    { "MTP_PROPERTY_PRIORITY",                               0xDCE3 },
-    { "MTP_PROPERTY_GIVEN_NAME",                             0xDD00 },
-    { "MTP_PROPERTY_MIDDLE_NAMES",                           0xDD01 },
-    { "MTP_PROPERTY_FAMILY_NAME",                            0xDD02 },
-    { "MTP_PROPERTY_PREFIX",                                 0xDD03 },
-    { "MTP_PROPERTY_SUFFIX",                                 0xDD04 },
-    { "MTP_PROPERTY_PHONETIC_GIVEN_NAME",                    0xDD05 },
-    { "MTP_PROPERTY_PHONETIC_FAMILY_NAME",                   0xDD06 },
-    { "MTP_PROPERTY_EMAIL_PRIMARY",                          0xDD07 },
-    { "MTP_PROPERTY_EMAIL_PERSONAL_1",                       0xDD08 },
-    { "MTP_PROPERTY_EMAIL_PERSONAL_2",                       0xDD09 },
-    { "MTP_PROPERTY_EMAIL_BUSINESS_1",                       0xDD0A },
-    { "MTP_PROPERTY_EMAIL_BUSINESS_2",                       0xDD0B },
-    { "MTP_PROPERTY_EMAIL_OTHERS",                           0xDD0C },
-    { "MTP_PROPERTY_PHONE_NUMBER_PRIMARY",                   0xDD0D },
-    { "MTP_PROPERTY_PHONE_NUMBER_PERSONAL",                  0xDD0E },
-    { "MTP_PROPERTY_PHONE_NUMBER_PERSONAL_2",                0xDD0F },
-    { "MTP_PROPERTY_PHONE_NUMBER_BUSINESS",                  0xDD10 },
-    { "MTP_PROPERTY_PHONE_NUMBER_BUSINESS_2",                0xDD11 },
-    { "MTP_PROPERTY_PHONE_NUMBER_MOBILE",                    0xDD12 },
-    { "MTP_PROPERTY_PHONE_NUMBER_MOBILE_2",                  0xDD13 },
-    { "MTP_PROPERTY_FAX_NUMBER_PRIMARY",                     0xDD14 },
-    { "MTP_PROPERTY_FAX_NUMBER_PERSONAL",                    0xDD15 },
-    { "MTP_PROPERTY_FAX_NUMBER_BUSINESS",                    0xDD16 },
-    { "MTP_PROPERTY_PAGER_NUMBER",                           0xDD17 },
-    { "MTP_PROPERTY_PHONE_NUMBER_OTHERS",                    0xDD18 },
-    { "MTP_PROPERTY_PRIMARY_WEB_ADDRESS",                    0xDD19 },
-    { "MTP_PROPERTY_PERSONAL_WEB_ADDRESS",                   0xDD1A },
-    { "MTP_PROPERTY_BUSINESS_WEB_ADDRESS",                   0xDD1B },
-    { "MTP_PROPERTY_INSTANT_MESSANGER_ADDRESS",              0xDD1C },
-    { "MTP_PROPERTY_INSTANT_MESSANGER_ADDRESS_2",            0xDD1D },
-    { "MTP_PROPERTY_INSTANT_MESSANGER_ADDRESS_3",            0xDD1E },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_FULL",           0xDD1F },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_1",         0xDD20 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_2",         0xDD21 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_CITY",           0xDD22 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_REGION",         0xDD23 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_POSTAL_CODE",    0xDD24 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_COUNTRY",        0xDD25 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_FULL",           0xDD26 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_1",         0xDD27 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_2",         0xDD28 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_CITY",           0xDD29 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_REGION",         0xDD2A },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_POSTAL_CODE",    0xDD2B },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_COUNTRY",        0xDD2C },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_OTHER_FULL",              0xDD2D },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_OTHER_LINE_1",            0xDD2E },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_OTHER_LINE_2",            0xDD2F },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_OTHER_CITY",              0xDD30 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_OTHER_REGION",            0xDD31 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_OTHER_POSTAL_CODE",       0xDD32 },
-    { "MTP_PROPERTY_POSTAL_ADDRESS_OTHER_COUNTRY",           0xDD33 },
-    { "MTP_PROPERTY_ORGANIZATION_NAME",                      0xDD34 },
-    { "MTP_PROPERTY_PHONETIC_ORGANIZATION_NAME",             0xDD35 },
-    { "MTP_PROPERTY_ROLE",                                   0xDD36 },
-    { "MTP_PROPERTY_BIRTHDATE",                              0xDD37 },
-    { "MTP_PROPERTY_MESSAGE_TO",                             0xDD40 },
-    { "MTP_PROPERTY_MESSAGE_CC",                             0xDD41 },
-    { "MTP_PROPERTY_MESSAGE_BCC",                            0xDD42 },
-    { "MTP_PROPERTY_MESSAGE_READ",                           0xDD43 },
-    { "MTP_PROPERTY_MESSAGE_RECEIVED_TIME",                  0xDD44 },
-    { "MTP_PROPERTY_MESSAGE_SENDER",                         0xDD45 },
-    { "MTP_PROPERTY_ACTIVITY_BEGIN_TIME",                    0xDD50 },
-    { "MTP_PROPERTY_ACTIVITY_END_TIME",                      0xDD51 },
-    { "MTP_PROPERTY_ACTIVITY_LOCATION",                      0xDD52 },
-    { "MTP_PROPERTY_ACTIVITY_REQUIRED_ATTENDEES",            0xDD54 },
-    { "MTP_PROPERTY_ACTIVITY_OPTIONAL_ATTENDEES",            0xDD55 },
-    { "MTP_PROPERTY_ACTIVITY_RESOURCES",                     0xDD56 },
-    { "MTP_PROPERTY_ACTIVITY_ACCEPTED",                      0xDD57 },
-    { "MTP_PROPERTY_ACTIVITY_TENTATIVE",                     0xDD58 },
-    { "MTP_PROPERTY_ACTIVITY_DECLINED",                      0xDD59 },
-    { "MTP_PROPERTY_ACTIVITY_REMAINDER_TIME",                0xDD5A },
-    { "MTP_PROPERTY_ACTIVITY_OWNER",                         0xDD5B },
-    { "MTP_PROPERTY_ACTIVITY_STATUS",                        0xDD5C },
-    { "MTP_PROPERTY_OWNER",                                  0xDD5D },
-    { "MTP_PROPERTY_EDITOR",                                 0xDD5E },
-    { "MTP_PROPERTY_WEBMASTER",                              0xDD5F },
-    { "MTP_PROPERTY_URL_SOURCE",                             0xDD60 },
-    { "MTP_PROPERTY_URL_DESTINATION",                        0xDD61 },
-    { "MTP_PROPERTY_TIME_BOOKMARK",                          0xDD62 },
-    { "MTP_PROPERTY_OBJECT_BOOKMARK",                        0xDD63 },
-    { "MTP_PROPERTY_BYTE_BOOKMARK",                          0xDD64 },
-    { "MTP_PROPERTY_LAST_BUILD_DATE",                        0xDD70 },
-    { "MTP_PROPERTY_TIME_TO_LIVE",                           0xDD71 },
-    { "MTP_PROPERTY_MEDIA_GUID",                             0xDD72 },
-    { 0,                                                     0      },
-};
-
-static const CodeEntry sDevicePropCodes[] = {
-    { "MTP_DEVICE_PROPERTY_UNDEFINED",                       0x5000 },
-    { "MTP_DEVICE_PROPERTY_BATTERY_LEVEL",                   0x5001 },
-    { "MTP_DEVICE_PROPERTY_FUNCTIONAL_MODE",                 0x5002 },
-    { "MTP_DEVICE_PROPERTY_IMAGE_SIZE",                      0x5003 },
-    { "MTP_DEVICE_PROPERTY_COMPRESSION_SETTING",             0x5004 },
-    { "MTP_DEVICE_PROPERTY_WHITE_BALANCE",                   0x5005 },
-    { "MTP_DEVICE_PROPERTY_RGB_GAIN",                        0x5006 },
-    { "MTP_DEVICE_PROPERTY_F_NUMBER",                        0x5007 },
-    { "MTP_DEVICE_PROPERTY_FOCAL_LENGTH",                    0x5008 },
-    { "MTP_DEVICE_PROPERTY_FOCUS_DISTANCE",                  0x5009 },
-    { "MTP_DEVICE_PROPERTY_FOCUS_MODE",                      0x500A },
-    { "MTP_DEVICE_PROPERTY_EXPOSURE_METERING_MODE",          0x500B },
-    { "MTP_DEVICE_PROPERTY_FLASH_MODE",                      0x500C },
-    { "MTP_DEVICE_PROPERTY_EXPOSURE_TIME",                   0x500D },
-    { "MTP_DEVICE_PROPERTY_EXPOSURE_PROGRAM_MODE",           0x500E },
-    { "MTP_DEVICE_PROPERTY_EXPOSURE_INDEX",                  0x500F },
-    { "MTP_DEVICE_PROPERTY_EXPOSURE_BIAS_COMPENSATION",      0x5010 },
-    { "MTP_DEVICE_PROPERTY_DATETIME",                        0x5011 },
-    { "MTP_DEVICE_PROPERTY_CAPTURE_DELAY",                   0x5012 },
-    { "MTP_DEVICE_PROPERTY_STILL_CAPTURE_MODE",              0x5013 },
-    { "MTP_DEVICE_PROPERTY_CONTRAST",                        0x5014 },
-    { "MTP_DEVICE_PROPERTY_SHARPNESS",                       0x5015 },
-    { "MTP_DEVICE_PROPERTY_DIGITAL_ZOOM",                    0x5016 },
-    { "MTP_DEVICE_PROPERTY_EFFECT_MODE",                     0x5017 },
-    { "MTP_DEVICE_PROPERTY_BURST_NUMBER",                    0x5018 },
-    { "MTP_DEVICE_PROPERTY_BURST_INTERVAL",                  0x5019 },
-    { "MTP_DEVICE_PROPERTY_TIMELAPSE_NUMBER",                0x501A },
-    { "MTP_DEVICE_PROPERTY_TIMELAPSE_INTERVAL",              0x501B },
-    { "MTP_DEVICE_PROPERTY_FOCUS_METERING_MODE",             0x501C },
-    { "MTP_DEVICE_PROPERTY_UPLOAD_URL",                      0x501D },
-    { "MTP_DEVICE_PROPERTY_ARTIST",                          0x501E },
-    { "MTP_DEVICE_PROPERTY_COPYRIGHT_INFO",                  0x501F },
-    { "MTP_DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER",         0xD401 },
-    { "MTP_DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME",            0xD402 },
-    { "MTP_DEVICE_PROPERTY_VOLUME",                          0xD403 },
-    { "MTP_DEVICE_PROPERTY_SUPPORTED_FORMATS_ORDERED",       0xD404 },
-    { "MTP_DEVICE_PROPERTY_DEVICE_ICON",                     0xD405 },
-    { "MTP_DEVICE_PROPERTY_PLAYBACK_RATE",                   0xD410 },
-    { "MTP_DEVICE_PROPERTY_PLAYBACK_OBJECT",                 0xD411 },
-    { "MTP_DEVICE_PROPERTY_PLAYBACK_CONTAINER_INDEX",        0xD412 },
-    { "MTP_DEVICE_PROPERTY_SESSION_INITIATOR_VERSION_INFO",  0xD406 },
-    { "MTP_DEVICE_PROPERTY_PERCEIVED_DEVICE_TYPE",           0xD407 },
-    { 0,                                                     0      },
-};
-
-static const char* getCodeName(uint16_t code, const CodeEntry* table) {
-    const CodeEntry* entry = table;
-    while (entry->name) {
-        if (entry->code == code)
-            return entry->name;
-        entry++;
-    }
-    return "UNKNOWN";
-}
-
-const char* MtpDebug::getOperationCodeName(MtpOperationCode code) {
-    return getCodeName(code, sOperationCodes);
-}
-
-const char* MtpDebug::getFormatCodeName(MtpObjectFormat code) {
-    if (code == 0)
-        return "NONE";
-    return getCodeName(code, sFormatCodes);
-}
-
-const char* MtpDebug::getObjectPropCodeName(MtpPropertyCode code) {
-    if (code == 0)
-        return "NONE";
-    return getCodeName(code, sObjectPropCodes);
-}
-
-const char* MtpDebug::getDevicePropCodeName(MtpPropertyCode code) {
-    if (code == 0)
-        return "NONE";
-    return getCodeName(code, sDevicePropCodes);
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpDebug.h b/media/mtp/MtpDebug.h
deleted file mode 100644
index 5b53e31..0000000
--- a/media/mtp/MtpDebug.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_DEBUG_H
-#define _MTP_DEBUG_H
-
-// #define LOG_NDEBUG 0
-#include <utils/Log.h>
-
-#include "MtpTypes.h"
-
-namespace android {
-
-class MtpDebug {
-public:
-    static const char* getOperationCodeName(MtpOperationCode code);
-    static const char* getFormatCodeName(MtpObjectFormat code);
-    static const char* getObjectPropCodeName(MtpPropertyCode code);
-    static const char* getDevicePropCodeName(MtpPropertyCode code);
-};
-
-}; // namespace android
-
-#endif // _MTP_DEBUG_H
diff --git a/media/mtp/MtpDevice.cpp b/media/mtp/MtpDevice.cpp
deleted file mode 100644
index bf7795c..0000000
--- a/media/mtp/MtpDevice.cpp
+++ /dev/null
@@ -1,835 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpDevice"
-
-#include "MtpDebug.h"
-#include "MtpDevice.h"
-#include "MtpDeviceInfo.h"
-#include "MtpObjectInfo.h"
-#include "MtpProperty.h"
-#include "MtpStorageInfo.h"
-#include "MtpStringBuffer.h"
-#include "MtpUtils.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <endian.h>
-
-#include <usbhost/usbhost.h>
-
-namespace android {
-
-#if 0
-static bool isMtpDevice(uint16_t vendor, uint16_t product) {
-    // Sandisk Sansa Fuze
-    if (vendor == 0x0781 && product == 0x74c2)
-        return true;
-    // Samsung YP-Z5
-    if (vendor == 0x04e8 && product == 0x503c)
-        return true;
-    return false;
-}
-#endif
-
-MtpDevice* MtpDevice::open(const char* deviceName, int fd) {
-    struct usb_device *device = usb_device_new(deviceName, fd);
-    if (!device) {
-        ALOGE("usb_device_new failed for %s", deviceName);
-        return NULL;
-    }
-
-    struct usb_descriptor_header* desc;
-    struct usb_descriptor_iter iter;
-
-    usb_descriptor_iter_init(device, &iter);
-
-    while ((desc = usb_descriptor_iter_next(&iter)) != NULL) {
-        if (desc->bDescriptorType == USB_DT_INTERFACE) {
-            struct usb_interface_descriptor *interface = (struct usb_interface_descriptor *)desc;
-
-            if (interface->bInterfaceClass == USB_CLASS_STILL_IMAGE &&
-                interface->bInterfaceSubClass == 1 && // Still Image Capture
-                interface->bInterfaceProtocol == 1)     // Picture Transfer Protocol (PIMA 15470)
-            {
-                char* manufacturerName = usb_device_get_manufacturer_name(device);
-                char* productName = usb_device_get_product_name(device);
-                ALOGD("Found camera: \"%s\" \"%s\"\n", manufacturerName, productName);
-                free(manufacturerName);
-                free(productName);
-            } else if (interface->bInterfaceClass == 0xFF &&
-                    interface->bInterfaceSubClass == 0xFF &&
-                    interface->bInterfaceProtocol == 0) {
-                char* interfaceName = usb_device_get_string(device, interface->iInterface);
-                if (!interfaceName) {
-                    continue;
-                } else if (strcmp(interfaceName, "MTP")) {
-                    free(interfaceName);
-                    continue;
-                }
-                free(interfaceName);
-
-                // Looks like an android style MTP device
-                char* manufacturerName = usb_device_get_manufacturer_name(device);
-                char* productName = usb_device_get_product_name(device);
-                ALOGD("Found MTP device: \"%s\" \"%s\"\n", manufacturerName, productName);
-                free(manufacturerName);
-                free(productName);
-            }
-#if 0
-             else {
-                // look for special cased devices based on vendor/product ID
-                // we are doing this mainly for testing purposes
-                uint16_t vendor = usb_device_get_vendor_id(device);
-                uint16_t product = usb_device_get_product_id(device);
-                if (!isMtpDevice(vendor, product)) {
-                    // not an MTP or PTP device
-                    continue;
-                }
-                // request MTP OS string and descriptor
-                // some music players need to see this before entering MTP mode.
-                char buffer[256];
-                memset(buffer, 0, sizeof(buffer));
-                int ret = usb_device_control_transfer(device,
-                        USB_DIR_IN|USB_RECIP_DEVICE|USB_TYPE_STANDARD,
-                        USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) | 0xEE,
-                        0, buffer, sizeof(buffer), 0);
-                printf("usb_device_control_transfer returned %d errno: %d\n", ret, errno);
-                if (ret > 0) {
-                    printf("got MTP string %s\n", buffer);
-                    ret = usb_device_control_transfer(device,
-                            USB_DIR_IN|USB_RECIP_DEVICE|USB_TYPE_VENDOR, 1,
-                            0, 4, buffer, sizeof(buffer), 0);
-                    printf("OS descriptor got %d\n", ret);
-                } else {
-                    printf("no MTP string\n");
-                }
-            }
-#endif
-            // if we got here, then we have a likely MTP or PTP device
-
-            // interface should be followed by three endpoints
-            struct usb_endpoint_descriptor *ep;
-            struct usb_endpoint_descriptor *ep_in_desc = NULL;
-            struct usb_endpoint_descriptor *ep_out_desc = NULL;
-            struct usb_endpoint_descriptor *ep_intr_desc = NULL;
-            for (int i = 0; i < 3; i++) {
-                ep = (struct usb_endpoint_descriptor *)usb_descriptor_iter_next(&iter);
-                if (!ep || ep->bDescriptorType != USB_DT_ENDPOINT) {
-                    ALOGE("endpoints not found\n");
-                    usb_device_close(device);
-                    return NULL;
-                }
-                if (ep->bmAttributes == USB_ENDPOINT_XFER_BULK) {
-                    if (ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK)
-                        ep_in_desc = ep;
-                    else
-                        ep_out_desc = ep;
-                } else if (ep->bmAttributes == USB_ENDPOINT_XFER_INT &&
-                    ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK) {
-                    ep_intr_desc = ep;
-                }
-            }
-            if (!ep_in_desc || !ep_out_desc || !ep_intr_desc) {
-                ALOGE("endpoints not found\n");
-                usb_device_close(device);
-                return NULL;
-            }
-
-            if (usb_device_claim_interface(device, interface->bInterfaceNumber)) {
-                ALOGE("usb_device_claim_interface failed errno: %d\n", errno);
-                usb_device_close(device);
-                return NULL;
-            }
-
-            MtpDevice* mtpDevice = new MtpDevice(device, interface->bInterfaceNumber,
-                        ep_in_desc, ep_out_desc, ep_intr_desc);
-            mtpDevice->initialize();
-            return mtpDevice;
-        }
-    }
-
-    usb_device_close(device);
-    ALOGE("device not found");
-    return NULL;
-}
-
-MtpDevice::MtpDevice(struct usb_device* device, int interface,
-            const struct usb_endpoint_descriptor *ep_in,
-            const struct usb_endpoint_descriptor *ep_out,
-            const struct usb_endpoint_descriptor *ep_intr)
-    :   mDevice(device),
-        mInterface(interface),
-        mRequestIn1(NULL),
-        mRequestIn2(NULL),
-        mRequestOut(NULL),
-        mRequestIntr(NULL),
-        mDeviceInfo(NULL),
-        mSessionID(0),
-        mTransactionID(0),
-        mReceivedResponse(false)
-{
-    mRequestIn1 = usb_request_new(device, ep_in);
-    mRequestIn2 = usb_request_new(device, ep_in);
-    mRequestOut = usb_request_new(device, ep_out);
-    mRequestIntr = usb_request_new(device, ep_intr);
-}
-
-MtpDevice::~MtpDevice() {
-    close();
-    for (int i = 0; i < mDeviceProperties.size(); i++)
-        delete mDeviceProperties[i];
-    usb_request_free(mRequestIn1);
-    usb_request_free(mRequestIn2);
-    usb_request_free(mRequestOut);
-    usb_request_free(mRequestIntr);
-}
-
-void MtpDevice::initialize() {
-    openSession();
-    mDeviceInfo = getDeviceInfo();
-    if (mDeviceInfo) {
-        if (mDeviceInfo->mDeviceProperties) {
-            int count = mDeviceInfo->mDeviceProperties->size();
-            for (int i = 0; i < count; i++) {
-                MtpDeviceProperty propCode = (*mDeviceInfo->mDeviceProperties)[i];
-                MtpProperty* property = getDevicePropDesc(propCode);
-                if (property)
-                    mDeviceProperties.push(property);
-            }
-        }
-    }
-}
-
-void MtpDevice::close() {
-    if (mDevice) {
-        usb_device_release_interface(mDevice, mInterface);
-        usb_device_close(mDevice);
-        mDevice = NULL;
-    }
-}
-
-void MtpDevice::print() {
-    if (mDeviceInfo) {
-        mDeviceInfo->print();
-
-        if (mDeviceInfo->mDeviceProperties) {
-            ALOGI("***** DEVICE PROPERTIES *****\n");
-            int count = mDeviceInfo->mDeviceProperties->size();
-            for (int i = 0; i < count; i++) {
-                MtpDeviceProperty propCode = (*mDeviceInfo->mDeviceProperties)[i];
-                MtpProperty* property = getDevicePropDesc(propCode);
-                if (property) {
-                    property->print();
-                    delete property;
-                }
-            }
-        }
-    }
-
-    if (mDeviceInfo->mPlaybackFormats) {
-            ALOGI("***** OBJECT PROPERTIES *****\n");
-        int count = mDeviceInfo->mPlaybackFormats->size();
-        for (int i = 0; i < count; i++) {
-            MtpObjectFormat format = (*mDeviceInfo->mPlaybackFormats)[i];
-            ALOGI("*** FORMAT: %s\n", MtpDebug::getFormatCodeName(format));
-            MtpObjectPropertyList* props = getObjectPropsSupported(format);
-            if (props) {
-                for (int j = 0; j < props->size(); j++) {
-                    MtpObjectProperty prop = (*props)[j];
-                    MtpProperty* property = getObjectPropDesc(prop, format);
-                    if (property) {
-                        property->print();
-                        delete property;
-                    } else {
-                        ALOGE("could not fetch property: %s",
-                                MtpDebug::getObjectPropCodeName(prop));
-                    }
-                }
-            }
-        }
-    }
-}
-
-const char* MtpDevice::getDeviceName() {
-    if (mDevice)
-        return usb_device_get_name(mDevice);
-    else
-        return "???";
-}
-
-bool MtpDevice::openSession() {
-    Mutex::Autolock autoLock(mMutex);
-
-    mSessionID = 0;
-    mTransactionID = 0;
-    MtpSessionID newSession = 1;
-    mRequest.reset();
-    mRequest.setParameter(1, newSession);
-    if (!sendRequest(MTP_OPERATION_OPEN_SESSION))
-        return false;
-    MtpResponseCode ret = readResponse();
-    if (ret == MTP_RESPONSE_SESSION_ALREADY_OPEN)
-        newSession = mResponse.getParameter(1);
-    else if (ret != MTP_RESPONSE_OK)
-        return false;
-
-    mSessionID = newSession;
-    mTransactionID = 1;
-    return true;
-}
-
-bool MtpDevice::closeSession() {
-    // FIXME
-    return true;
-}
-
-MtpDeviceInfo* MtpDevice::getDeviceInfo() {
-    Mutex::Autolock autoLock(mMutex);
-
-    mRequest.reset();
-    if (!sendRequest(MTP_OPERATION_GET_DEVICE_INFO))
-        return NULL;
-    if (!readData())
-        return NULL;
-    MtpResponseCode ret = readResponse();
-    if (ret == MTP_RESPONSE_OK) {
-        MtpDeviceInfo* info = new MtpDeviceInfo;
-        info->read(mData);
-        return info;
-    }
-    return NULL;
-}
-
-MtpStorageIDList* MtpDevice::getStorageIDs() {
-    Mutex::Autolock autoLock(mMutex);
-
-    mRequest.reset();
-    if (!sendRequest(MTP_OPERATION_GET_STORAGE_IDS))
-        return NULL;
-    if (!readData())
-        return NULL;
-    MtpResponseCode ret = readResponse();
-    if (ret == MTP_RESPONSE_OK) {
-        return mData.getAUInt32();
-    }
-    return NULL;
-}
-
-MtpStorageInfo* MtpDevice::getStorageInfo(MtpStorageID storageID) {
-    Mutex::Autolock autoLock(mMutex);
-
-    mRequest.reset();
-    mRequest.setParameter(1, storageID);
-    if (!sendRequest(MTP_OPERATION_GET_STORAGE_INFO))
-        return NULL;
-    if (!readData())
-        return NULL;
-    MtpResponseCode ret = readResponse();
-    if (ret == MTP_RESPONSE_OK) {
-        MtpStorageInfo* info = new MtpStorageInfo(storageID);
-        info->read(mData);
-        return info;
-    }
-    return NULL;
-}
-
-MtpObjectHandleList* MtpDevice::getObjectHandles(MtpStorageID storageID,
-            MtpObjectFormat format, MtpObjectHandle parent) {
-    Mutex::Autolock autoLock(mMutex);
-
-    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();
-    if (ret == MTP_RESPONSE_OK) {
-        return mData.getAUInt32();
-    }
-    return NULL;
-}
-
-MtpObjectInfo* MtpDevice::getObjectInfo(MtpObjectHandle handle) {
-    Mutex::Autolock autoLock(mMutex);
-
-    // FIXME - we might want to add some caching here
-
-    mRequest.reset();
-    mRequest.setParameter(1, handle);
-    if (!sendRequest(MTP_OPERATION_GET_OBJECT_INFO))
-        return NULL;
-    if (!readData())
-        return NULL;
-    MtpResponseCode ret = readResponse();
-    if (ret == MTP_RESPONSE_OK) {
-        MtpObjectInfo* info = new MtpObjectInfo(handle);
-        info->read(mData);
-        return info;
-    }
-    return NULL;
-}
-
-void* MtpDevice::getThumbnail(MtpObjectHandle handle, int& outLength) {
-    Mutex::Autolock autoLock(mMutex);
-
-    mRequest.reset();
-    mRequest.setParameter(1, handle);
-    if (sendRequest(MTP_OPERATION_GET_THUMB) && readData()) {
-        MtpResponseCode ret = readResponse();
-        if (ret == MTP_RESPONSE_OK) {
-            return mData.getData(outLength);
-        }
-    }
-    outLength = 0;
-    return NULL;
-}
-
-MtpObjectHandle MtpDevice::sendObjectInfo(MtpObjectInfo* info) {
-    Mutex::Autolock autoLock(mMutex);
-
-    mRequest.reset();
-    MtpObjectHandle parent = info->mParent;
-    if (parent == 0)
-        parent = MTP_PARENT_ROOT;
-
-    mRequest.setParameter(1, info->mStorageID);
-    mRequest.setParameter(2, info->mParent);
-
-    mData.putUInt32(info->mStorageID);
-    mData.putUInt16(info->mFormat);
-    mData.putUInt16(info->mProtectionStatus);
-    mData.putUInt32(info->mCompressedSize);
-    mData.putUInt16(info->mThumbFormat);
-    mData.putUInt32(info->mThumbCompressedSize);
-    mData.putUInt32(info->mThumbPixWidth);
-    mData.putUInt32(info->mThumbPixHeight);
-    mData.putUInt32(info->mImagePixWidth);
-    mData.putUInt32(info->mImagePixHeight);
-    mData.putUInt32(info->mImagePixDepth);
-    mData.putUInt32(info->mParent);
-    mData.putUInt16(info->mAssociationType);
-    mData.putUInt32(info->mAssociationDesc);
-    mData.putUInt32(info->mSequenceNumber);
-    mData.putString(info->mName);
-
-    char created[100], modified[100];
-    formatDateTime(info->mDateCreated, created, sizeof(created));
-    formatDateTime(info->mDateModified, modified, sizeof(modified));
-
-    mData.putString(created);
-    mData.putString(modified);
-    if (info->mKeywords)
-        mData.putString(info->mKeywords);
-    else
-        mData.putEmptyString();
-
-   if (sendRequest(MTP_OPERATION_SEND_OBJECT_INFO) && sendData()) {
-        MtpResponseCode ret = readResponse();
-        if (ret == MTP_RESPONSE_OK) {
-            info->mStorageID = mResponse.getParameter(1);
-            info->mParent = mResponse.getParameter(2);
-            info->mHandle = mResponse.getParameter(3);
-            return info->mHandle;
-        }
-    }
-    return (MtpObjectHandle)-1;
-}
-
-bool MtpDevice::sendObject(MtpObjectInfo* info, int srcFD) {
-    Mutex::Autolock autoLock(mMutex);
-
-    int remaining = info->mCompressedSize;
-    mRequest.reset();
-    mRequest.setParameter(1, info->mHandle);
-    if (sendRequest(MTP_OPERATION_SEND_OBJECT)) {
-        // send data header
-        writeDataHeader(MTP_OPERATION_SEND_OBJECT, remaining);
-
-        char buffer[65536];
-        while (remaining > 0) {
-            int count = read(srcFD, buffer, sizeof(buffer));
-            if (count > 0) {
-                int written = mData.write(mRequestOut, buffer, count);
-                // FIXME check error
-                remaining -= count;
-            } else {
-                break;
-            }
-        }
-    }
-    MtpResponseCode ret = readResponse();
-    return (remaining == 0 && ret == MTP_RESPONSE_OK);
-}
-
-bool MtpDevice::deleteObject(MtpObjectHandle handle) {
-    Mutex::Autolock autoLock(mMutex);
-
-    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) {
-        MtpObjectHandle parent = info->mParent;
-        delete info;
-        return parent;
-    } else {
-        return -1;
-    }
-}
-
-MtpObjectHandle MtpDevice::getStorageID(MtpObjectHandle handle) {
-    MtpObjectInfo* info = getObjectInfo(handle);
-    if (info) {
-        MtpObjectHandle storageId = info->mStorageID;
-        delete info;
-        return storageId;
-    } else {
-        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);
-
-    mRequest.reset();
-    mRequest.setParameter(1, code);
-    if (!sendRequest(MTP_OPERATION_GET_DEVICE_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;
-}
-
-MtpProperty* MtpDevice::getObjectPropDesc(MtpObjectProperty code, MtpObjectFormat format) {
-    Mutex::Autolock autoLock(mMutex);
-
-    mRequest.reset();
-    mRequest.setParameter(1, code);
-    mRequest.setParameter(2, format);
-    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;
-}
-
-bool MtpDevice::readObject(MtpObjectHandle handle,
-        bool (* callback)(void* data, int offset, int length, void* clientData),
-        int objectSize, void* clientData) {
-    Mutex::Autolock autoLock(mMutex);
-    bool result = false;
-
-    mRequest.reset();
-    mRequest.setParameter(1, handle);
-    if (sendRequest(MTP_OPERATION_GET_OBJECT)
-            && mData.readDataHeader(mRequestIn1)) {
-        uint32_t length = mData.getContainerLength();
-        if (length - MTP_CONTAINER_HEADER_SIZE != objectSize) {
-            ALOGE("readObject error objectSize: %d, length: %d",
-                    objectSize, length);
-            goto fail;
-        }
-        length -= MTP_CONTAINER_HEADER_SIZE;
-        uint32_t remaining = length;
-        int offset = 0;
-
-        int initialDataLength = 0;
-        void* initialData = mData.getData(initialDataLength);
-        if (initialData) {
-            if (initialDataLength > 0) {
-                if (!callback(initialData, 0, initialDataLength, clientData))
-                    goto fail;
-                remaining -= initialDataLength;
-                offset += initialDataLength;
-            }
-            free(initialData);
-        }
-
-        // USB reads greater than 16K don't work
-        char buffer1[16384], buffer2[16384];
-        mRequestIn1->buffer = buffer1;
-        mRequestIn2->buffer = buffer2;
-        struct usb_request* req = mRequestIn1;
-        void* writeBuffer = NULL;
-        int writeLength = 0;
-
-        while (remaining > 0 || writeBuffer) {
-            if (remaining > 0) {
-                // queue up a read request
-                req->buffer_length = (remaining > sizeof(buffer1) ? sizeof(buffer1) : remaining);
-                if (mData.readDataAsync(req)) {
-                    ALOGE("readDataAsync failed");
-                    goto fail;
-                }
-            } else {
-                req = NULL;
-            }
-
-            if (writeBuffer) {
-                // write previous buffer
-                if (!callback(writeBuffer, offset, writeLength, clientData)) {
-                    ALOGE("write failed");
-                    // wait for pending read before failing
-                    if (req)
-                        mData.readDataWait(mDevice);
-                    goto fail;
-                }
-                offset += writeLength;
-                writeBuffer = NULL;
-            }
-
-            // wait for read to complete
-            if (req) {
-                int read = mData.readDataWait(mDevice);
-                if (read < 0)
-                    goto fail;
-
-                if (read > 0) {
-                    writeBuffer = req->buffer;
-                    writeLength = read;
-                    remaining -= read;
-                    req = (req == mRequestIn1 ? mRequestIn2 : mRequestIn1);
-                } else {
-                    writeBuffer = NULL;
-                }
-            }
-        }
-
-        MtpResponseCode response = readResponse();
-        if (response == MTP_RESPONSE_OK)
-            result = true;
-    }
-
-fail:
-    return result;
-}
-
-
-// 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) {
-    ALOGD("readObject: %s", destPath);
-    int fd = ::open(destPath, O_RDWR | O_CREAT | O_TRUNC);
-    if (fd < 0) {
-        ALOGE("open failed for %s", destPath);
-        return false;
-    }
-
-    fchown(fd, getuid(), group);
-    // set permissions
-    int mask = umask(0);
-    fchmod(fd, perm);
-    umask(mask);
-
-    Mutex::Autolock autoLock(mMutex);
-    bool result = false;
-
-    mRequest.reset();
-    mRequest.setParameter(1, handle);
-    if (sendRequest(MTP_OPERATION_GET_OBJECT)
-            && mData.readDataHeader(mRequestIn1)) {
-        uint32_t length = mData.getContainerLength();
-        if (length < MTP_CONTAINER_HEADER_SIZE)
-            goto fail;
-        length -= MTP_CONTAINER_HEADER_SIZE;
-        uint32_t remaining = length;
-
-        int initialDataLength = 0;
-        void* initialData = mData.getData(initialDataLength);
-        if (initialData) {
-            if (initialDataLength > 0) {
-                if (write(fd, initialData, initialDataLength) != initialDataLength) {
-                    free(initialData);
-                    goto fail;
-                }
-                remaining -= initialDataLength;
-            }
-            free(initialData);
-        }
-
-        // USB reads greater than 16K don't work
-        char buffer1[16384], buffer2[16384];
-        mRequestIn1->buffer = buffer1;
-        mRequestIn2->buffer = buffer2;
-        struct usb_request* req = mRequestIn1;
-        void* writeBuffer = NULL;
-        int writeLength = 0;
-
-        while (remaining > 0 || writeBuffer) {
-            if (remaining > 0) {
-                // queue up a read request
-                req->buffer_length = (remaining > sizeof(buffer1) ? sizeof(buffer1) : remaining);
-                if (mData.readDataAsync(req)) {
-                    ALOGE("readDataAsync failed");
-                    goto fail;
-                }
-            } else {
-                req = NULL;
-            }
-
-            if (writeBuffer) {
-                // write previous buffer
-                if (write(fd, writeBuffer, writeLength) != writeLength) {
-                    ALOGE("write failed");
-                    // wait for pending read before failing
-                    if (req)
-                        mData.readDataWait(mDevice);
-                    goto fail;
-                }
-                writeBuffer = NULL;
-            }
-
-            // wait for read to complete
-            if (req) {
-                int read = mData.readDataWait(mDevice);
-                if (read < 0)
-                    goto fail;
-
-                if (read > 0) {
-                    writeBuffer = req->buffer;
-                    writeLength = read;
-                    remaining -= read;
-                    req = (req == mRequestIn1 ? mRequestIn2 : mRequestIn1);
-                } else {
-                    writeBuffer = NULL;
-                }
-            }
-        }
-
-        MtpResponseCode response = readResponse();
-        if (response == MTP_RESPONSE_OK)
-            result = true;
-    }
-
-fail:
-    ::close(fd);
-    return result;
-}
-
-bool MtpDevice::sendRequest(MtpOperationCode operation) {
-    ALOGV("sendRequest: %s\n", MtpDebug::getOperationCodeName(operation));
-    mReceivedResponse = false;
-    mRequest.setOperationCode(operation);
-    if (mTransactionID > 0)
-        mRequest.setTransactionID(mTransactionID++);
-    int ret = mRequest.write(mRequestOut);
-    mRequest.dump();
-    return (ret > 0);
-}
-
-bool MtpDevice::sendData() {
-    ALOGV("sendData\n");
-    mData.setOperationCode(mRequest.getOperationCode());
-    mData.setTransactionID(mRequest.getTransactionID());
-    int ret = mData.write(mRequestOut);
-    mData.dump();
-    return (ret > 0);
-}
-
-bool MtpDevice::readData() {
-    mData.reset();
-    int ret = mData.read(mRequestIn1);
-    ALOGV("readData returned %d\n", ret);
-    if (ret >= MTP_CONTAINER_HEADER_SIZE) {
-        if (mData.getContainerType() == MTP_CONTAINER_TYPE_RESPONSE) {
-            ALOGD("got response packet instead of data packet");
-            // we got a response packet rather than data
-            // copy it to mResponse
-            mResponse.copyFrom(mData);
-            mReceivedResponse = true;
-            return false;
-        }
-        mData.dump();
-        return true;
-    }
-    else {
-        ALOGV("readResponse failed\n");
-        return false;
-    }
-}
-
-bool MtpDevice::writeDataHeader(MtpOperationCode operation, int dataLength) {
-    mData.setOperationCode(operation);
-    mData.setTransactionID(mRequest.getTransactionID());
-    return (!mData.writeDataHeader(mRequestOut, dataLength));
-}
-
-MtpResponseCode MtpDevice::readResponse() {
-    ALOGV("readResponse\n");
-    if (mReceivedResponse) {
-        mReceivedResponse = false;
-        return mResponse.getResponseCode();
-    }
-    int ret = mResponse.read(mRequestIn1);
-    // handle zero length packets, which might occur if the data transfer
-    // ends on a packet boundary
-    if (ret == 0)
-        ret = mResponse.read(mRequestIn1);
-    if (ret >= MTP_CONTAINER_HEADER_SIZE) {
-        mResponse.dump();
-        return mResponse.getResponseCode();
-    } else {
-        ALOGD("readResponse failed\n");
-        return -1;
-    }
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpDevice.h b/media/mtp/MtpDevice.h
deleted file mode 100644
index b69203e..0000000
--- a/media/mtp/MtpDevice.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_DEVICE_H
-#define _MTP_DEVICE_H
-
-#include "MtpRequestPacket.h"
-#include "MtpDataPacket.h"
-#include "MtpResponsePacket.h"
-#include "MtpTypes.h"
-
-#include <utils/threads.h>
-
-struct usb_device;
-struct usb_request;
-struct usb_endpoint_descriptor;
-
-namespace android {
-
-class MtpDeviceInfo;
-class MtpObjectInfo;
-class MtpStorageInfo;
-
-class MtpDevice {
-private:
-    struct usb_device*      mDevice;
-    int                     mInterface;
-    struct usb_request*     mRequestIn1;
-    struct usb_request*     mRequestIn2;
-    struct usb_request*     mRequestOut;
-    struct usb_request*     mRequestIntr;
-    MtpDeviceInfo*          mDeviceInfo;
-    MtpPropertyList         mDeviceProperties;
-
-    // current session ID
-    MtpSessionID            mSessionID;
-    // current transaction ID
-    MtpTransactionID        mTransactionID;
-
-    MtpRequestPacket        mRequest;
-    MtpDataPacket           mData;
-    MtpResponsePacket       mResponse;
-    // set to true if we received a response packet instead of a data packet
-    bool                    mReceivedResponse;
-
-    // to ensure only one MTP transaction at a time
-    Mutex                   mMutex;
-
-public:
-                            MtpDevice(struct usb_device* device, int interface,
-                                    const struct usb_endpoint_descriptor *ep_in,
-                                    const struct usb_endpoint_descriptor *ep_out,
-                                    const struct usb_endpoint_descriptor *ep_intr);
-
-    static MtpDevice*       open(const char* deviceName, int fd);
-
-    virtual                 ~MtpDevice();
-
-    void                    initialize();
-    void                    close();
-    void                    print();
-    const char*             getDeviceName();
-
-    bool                    openSession();
-    bool                    closeSession();
-
-    MtpDeviceInfo*          getDeviceInfo();
-    MtpStorageIDList*       getStorageIDs();
-    MtpStorageInfo*         getStorageInfo(MtpStorageID storageID);
-    MtpObjectHandleList*    getObjectHandles(MtpStorageID storageID, MtpObjectFormat format,
-                                    MtpObjectHandle parent);
-    MtpObjectInfo*          getObjectInfo(MtpObjectHandle handle);
-    void*                   getThumbnail(MtpObjectHandle handle, int& outLength);
-    MtpObjectHandle         sendObjectInfo(MtpObjectInfo* info);
-    bool                    sendObject(MtpObjectInfo* info, int srcFD);
-    bool                    deleteObject(MtpObjectHandle handle);
-    MtpObjectHandle         getParent(MtpObjectHandle handle);
-    MtpObjectHandle         getStorageID(MtpObjectHandle handle);
-
-    MtpObjectPropertyList*  getObjectPropsSupported(MtpObjectFormat format);
-
-    MtpProperty*            getDevicePropDesc(MtpDeviceProperty code);
-    MtpProperty*            getObjectPropDesc(MtpObjectProperty code, MtpObjectFormat format);
-
-    bool                    readObject(MtpObjectHandle handle,
-                                    bool (* callback)(void* data, int offset,
-                                            int length, void* clientData),
-                                    int objectSize, void* clientData);
-    bool                    readObject(MtpObjectHandle handle, const char* destPath, int group,
-                                    int perm);
-
-private:
-    bool                    sendRequest(MtpOperationCode operation);
-    bool                    sendData();
-    bool                    readData();
-    bool                    writeDataHeader(MtpOperationCode operation, int dataLength);
-    MtpResponseCode         readResponse();
-
-};
-
-}; // namespace android
-
-#endif // _MTP_DEVICE_H
diff --git a/media/mtp/MtpDeviceInfo.cpp b/media/mtp/MtpDeviceInfo.cpp
deleted file mode 100644
index 108e2b8..0000000
--- a/media/mtp/MtpDeviceInfo.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpDeviceInfo"
-
-#include "MtpDebug.h"
-#include "MtpDataPacket.h"
-#include "MtpDeviceInfo.h"
-#include "MtpStringBuffer.h"
-
-namespace android {
-
-MtpDeviceInfo::MtpDeviceInfo()
-    :   mStandardVersion(0),
-        mVendorExtensionID(0),
-        mVendorExtensionVersion(0),
-        mVendorExtensionDesc(NULL),
-        mFunctionalCode(0),
-        mOperations(NULL),
-        mEvents(NULL),
-        mDeviceProperties(NULL),
-        mCaptureFormats(NULL),
-        mPlaybackFormats(NULL),
-        mManufacturer(NULL),
-        mModel(NULL),
-        mVersion(NULL),
-        mSerial(NULL)
-{
-}
-
-MtpDeviceInfo::~MtpDeviceInfo() {
-    if (mVendorExtensionDesc)
-        free(mVendorExtensionDesc);
-    delete mOperations;
-    delete mEvents;
-    delete mDeviceProperties;
-    delete mCaptureFormats;
-    delete mPlaybackFormats;
-    if (mManufacturer)
-        free(mManufacturer);
-    if (mModel)
-        free(mModel);
-    if (mVersion)
-        free(mVersion);
-    if (mSerial)
-        free(mSerial);
-}
-
-void MtpDeviceInfo::read(MtpDataPacket& packet) {
-    MtpStringBuffer string;
-
-    // read the device info
-    mStandardVersion = packet.getUInt16();
-    mVendorExtensionID = packet.getUInt32();
-    mVendorExtensionVersion = packet.getUInt16();
-
-    packet.getString(string);
-    mVendorExtensionDesc = strdup((const char *)string);
-
-    mFunctionalCode = packet.getUInt16();
-    mOperations = packet.getAUInt16();
-    mEvents = packet.getAUInt16();
-    mDeviceProperties = packet.getAUInt16();
-    mCaptureFormats = packet.getAUInt16();
-    mPlaybackFormats = packet.getAUInt16();
-
-    packet.getString(string);
-    mManufacturer = strdup((const char *)string);
-    packet.getString(string);
-    mModel = strdup((const char *)string);
-    packet.getString(string);
-    mVersion = strdup((const char *)string);
-    packet.getString(string);
-    mSerial = strdup((const char *)string);
-}
-
-void MtpDeviceInfo::print() {
-    ALOGV("Device Info:\n\tmStandardVersion: %d\n\tmVendorExtensionID: %d\n\tmVendorExtensionVersiony: %d\n",
-            mStandardVersion, mVendorExtensionID, mVendorExtensionVersion);
-    ALOGV("\tmVendorExtensionDesc: %s\n\tmFunctionalCode: %d\n\tmManufacturer: %s\n\tmModel: %s\n\tmVersion: %s\n\tmSerial: %s\n",
-            mVendorExtensionDesc, mFunctionalCode, mManufacturer, mModel, mVersion, mSerial);
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpDeviceInfo.h b/media/mtp/MtpDeviceInfo.h
deleted file mode 100644
index 2abaa10..0000000
--- a/media/mtp/MtpDeviceInfo.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_DEVICE_INFO_H
-#define _MTP_DEVICE_INFO_H
-
-struct stat;
-
-namespace android {
-
-class MtpDataPacket;
-
-class MtpDeviceInfo {
-public:
-    uint16_t                mStandardVersion;
-    uint32_t                mVendorExtensionID;
-    uint16_t                mVendorExtensionVersion;
-    char*                   mVendorExtensionDesc;
-    uint16_t                mFunctionalCode;
-    UInt16List*             mOperations;
-    UInt16List*             mEvents;
-    MtpDevicePropertyList*  mDeviceProperties;
-    MtpObjectFormatList*    mCaptureFormats;
-    MtpObjectFormatList*    mPlaybackFormats;
-    char*                   mManufacturer;
-    char*                   mModel;
-    char*                   mVersion;
-    char*                   mSerial;
-
-public:
-                            MtpDeviceInfo();
-    virtual                 ~MtpDeviceInfo();
-
-    void                    read(MtpDataPacket& packet);
-
-    void                    print();
-};
-
-}; // namespace android
-
-#endif // _MTP_DEVICE_INFO_H
diff --git a/media/mtp/MtpEventPacket.cpp b/media/mtp/MtpEventPacket.cpp
deleted file mode 100644
index d2fca42..0000000
--- a/media/mtp/MtpEventPacket.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpEventPacket"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-
-#ifdef MTP_DEVICE
-#include <linux/usb/f_mtp.h>
-#endif
-
-#include "MtpEventPacket.h"
-
-#include <usbhost/usbhost.h>
-
-namespace android {
-
-MtpEventPacket::MtpEventPacket()
-    :   MtpPacket(512)
-{
-}
-
-MtpEventPacket::~MtpEventPacket() {
-}
-
-#ifdef MTP_DEVICE
-int MtpEventPacket::write(int fd) {
-    struct mtp_event    event;
-
-    putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
-    putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_EVENT);
-
-    event.data = mBuffer;
-    event.length = mPacketSize;
-    int ret = ::ioctl(fd, MTP_SEND_EVENT, (unsigned long)&event);
-    return (ret < 0 ? ret : 0);
-}
-#endif
-
-#ifdef MTP_HOST
-int MtpEventPacket::read(struct usb_request *request) {
-    request->buffer = mBuffer;
-    request->buffer_length = mBufferSize;
-    int ret = transfer(request);
-     if (ret >= 0)
-        mPacketSize = ret;
-    else
-        mPacketSize = 0;
-    return ret;
-}
-#endif
-
-}  // namespace android
-
diff --git a/media/mtp/MtpEventPacket.h b/media/mtp/MtpEventPacket.h
deleted file mode 100644
index 660baad..0000000
--- a/media/mtp/MtpEventPacket.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_EVENT_PACKET_H
-#define _MTP_EVENT_PACKET_H
-
-#include "MtpPacket.h"
-#include "mtp.h"
-
-namespace android {
-
-class MtpEventPacket : public MtpPacket {
-
-public:
-                        MtpEventPacket();
-    virtual             ~MtpEventPacket();
-
-#ifdef MTP_DEVICE
-    // write our data to the given file descriptor
-    int                 write(int fd);
-#endif
-
-#ifdef MTP_HOST
-    // read our buffer with the given request
-    int                 read(struct usb_request *request);
-#endif
-
-    inline MtpEventCode     getEventCode() const { return getContainerCode(); }
-    inline void             setEventCode(MtpEventCode code)
-                                                     { return setContainerCode(code); }
-};
-
-}; // namespace android
-
-#endif // _MTP_EVENT_PACKET_H
diff --git a/media/mtp/MtpObjectInfo.cpp b/media/mtp/MtpObjectInfo.cpp
deleted file mode 100644
index cd15343..0000000
--- a/media/mtp/MtpObjectInfo.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpObjectInfo"
-
-#include "MtpDebug.h"
-#include "MtpDataPacket.h"
-#include "MtpObjectInfo.h"
-#include "MtpStringBuffer.h"
-#include "MtpUtils.h"
-
-namespace android {
-
-MtpObjectInfo::MtpObjectInfo(MtpObjectHandle handle)
-    :   mHandle(handle),
-        mStorageID(0),
-        mFormat(0),
-        mProtectionStatus(0),
-        mCompressedSize(0),
-        mThumbFormat(0),
-        mThumbCompressedSize(0),
-        mThumbPixWidth(0),
-        mThumbPixHeight(0),
-        mImagePixWidth(0),
-        mImagePixHeight(0),
-        mImagePixDepth(0),
-        mParent(0),
-        mAssociationType(0),
-        mAssociationDesc(0),
-        mSequenceNumber(0),
-        mName(NULL),
-        mDateCreated(0),
-        mDateModified(0),
-        mKeywords(NULL)
-{
-}
-
-MtpObjectInfo::~MtpObjectInfo() {
-    if (mName)
-        free(mName);
-    if (mKeywords)
-        free(mKeywords);
-}
-
-void MtpObjectInfo::read(MtpDataPacket& packet) {
-    MtpStringBuffer string;
-    time_t time;
-
-    mStorageID = packet.getUInt32();
-    mFormat = packet.getUInt16();
-    mProtectionStatus = packet.getUInt16();
-    mCompressedSize = packet.getUInt32();
-    mThumbFormat = packet.getUInt16();
-    mThumbCompressedSize = packet.getUInt32();
-    mThumbPixWidth = packet.getUInt32();
-    mThumbPixHeight = packet.getUInt32();
-    mImagePixWidth = packet.getUInt32();
-    mImagePixHeight = packet.getUInt32();
-    mImagePixDepth = packet.getUInt32();
-    mParent = packet.getUInt32();
-    mAssociationType = packet.getUInt16();
-    mAssociationDesc = packet.getUInt32();
-    mSequenceNumber = packet.getUInt32();
-
-    packet.getString(string);
-    mName = strdup((const char *)string);
-
-    packet.getString(string);
-    if (parseDateTime((const char*)string, time))
-        mDateCreated = time;
-
-    packet.getString(string);
-    if (parseDateTime((const char*)string, time))
-        mDateModified = time;
-
-    packet.getString(string);
-    mKeywords = strdup((const char *)string);
-}
-
-void MtpObjectInfo::print() {
-    ALOGD("MtpObject Info %08X: %s\n", mHandle, mName);
-    ALOGD("  mStorageID: %08X mFormat: %04X mProtectionStatus: %d\n",
-            mStorageID, mFormat, mProtectionStatus);
-    ALOGD("  mCompressedSize: %d mThumbFormat: %04X mThumbCompressedSize: %d\n",
-            mCompressedSize, mFormat, mThumbCompressedSize);
-    ALOGD("  mThumbPixWidth: %d mThumbPixHeight: %d\n", mThumbPixWidth, mThumbPixHeight);
-    ALOGD("  mImagePixWidth: %d mImagePixHeight: %d mImagePixDepth: %d\n",
-            mImagePixWidth, mImagePixHeight, mImagePixDepth);
-    ALOGD("  mParent: %08X mAssociationType: %04X mAssociationDesc: %04X\n",
-            mParent, mAssociationType, mAssociationDesc);
-    ALOGD("  mSequenceNumber: %d mDateCreated: %ld mDateModified: %ld mKeywords: %s\n",
-            mSequenceNumber, mDateCreated, mDateModified, mKeywords);
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpObjectInfo.h b/media/mtp/MtpObjectInfo.h
deleted file mode 100644
index c7a449c..0000000
--- a/media/mtp/MtpObjectInfo.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_OBJECT_INFO_H
-#define _MTP_OBJECT_INFO_H
-
-#include "MtpTypes.h"
-
-namespace android {
-
-class MtpDataPacket;
-
-class MtpObjectInfo {
-public:
-    MtpObjectHandle     mHandle;
-    MtpStorageID        mStorageID;
-    MtpObjectFormat     mFormat;
-    uint16_t            mProtectionStatus;
-    uint32_t            mCompressedSize;
-    MtpObjectFormat     mThumbFormat;
-    uint32_t            mThumbCompressedSize;
-    uint32_t            mThumbPixWidth;
-    uint32_t            mThumbPixHeight;
-    uint32_t            mImagePixWidth;
-    uint32_t            mImagePixHeight;
-    uint32_t            mImagePixDepth;
-    MtpObjectHandle     mParent;
-    uint16_t            mAssociationType;
-    uint32_t            mAssociationDesc;
-    uint32_t            mSequenceNumber;
-    char*               mName;
-    time_t              mDateCreated;
-    time_t              mDateModified;
-    char*               mKeywords;
-
-public:
-                        MtpObjectInfo(MtpObjectHandle handle);
-    virtual             ~MtpObjectInfo();
-
-    void                read(MtpDataPacket& packet);
-
-    void                print();
-};
-
-}; // namespace android
-
-#endif // _MTP_OBJECT_INFO_H
diff --git a/media/mtp/MtpPacket.cpp b/media/mtp/MtpPacket.cpp
deleted file mode 100644
index dd07843..0000000
--- a/media/mtp/MtpPacket.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpPacket"
-
-#include "MtpDebug.h"
-#include "MtpPacket.h"
-#include "mtp.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <usbhost/usbhost.h>
-
-namespace android {
-
-MtpPacket::MtpPacket(int bufferSize)
-    :   mBuffer(NULL),
-        mBufferSize(bufferSize),
-        mAllocationIncrement(bufferSize),
-        mPacketSize(0)
-{
-    mBuffer = (uint8_t *)malloc(bufferSize);
-    if (!mBuffer) {
-        ALOGE("out of memory!");
-        abort();
-    }
-}
-
-MtpPacket::~MtpPacket() {
-    if (mBuffer)
-        free(mBuffer);
-}
-
-void MtpPacket::reset() {
-    allocate(MTP_CONTAINER_HEADER_SIZE);
-    mPacketSize = MTP_CONTAINER_HEADER_SIZE;
-    memset(mBuffer, 0, mBufferSize);
-}
-
-void MtpPacket::allocate(int length) {
-    if (length > mBufferSize) {
-        int newLength = length + mAllocationIncrement;
-        mBuffer = (uint8_t *)realloc(mBuffer, newLength);
-        if (!mBuffer) {
-            ALOGE("out of memory!");
-            abort();
-        }
-        mBufferSize = newLength;
-    }
-}
-
-void MtpPacket::dump() {
-#define DUMP_BYTES_PER_ROW  16
-    char buffer[500];
-    char* bufptr = buffer;
-
-    for (int i = 0; i < mPacketSize; i++) {
-        sprintf(bufptr, "%02X ", mBuffer[i]);
-        bufptr += strlen(bufptr);
-        if (i % DUMP_BYTES_PER_ROW == (DUMP_BYTES_PER_ROW - 1)) {
-            ALOGV("%s", buffer);
-            bufptr = buffer;
-        }
-    }
-    if (bufptr != buffer) {
-        // print last line
-        ALOGV("%s", buffer);
-    }
-    ALOGV("\n");
-}
-
-void MtpPacket::copyFrom(const MtpPacket& src) {
-    int length = src.mPacketSize;
-    allocate(length);
-    mPacketSize = length;
-    memcpy(mBuffer, src.mBuffer, length);
-}
-
-uint16_t MtpPacket::getUInt16(int offset) const {
-    return ((uint16_t)mBuffer[offset + 1] << 8) | (uint16_t)mBuffer[offset];
-}
-
-uint32_t MtpPacket::getUInt32(int offset) const {
-    return ((uint32_t)mBuffer[offset + 3] << 24) | ((uint32_t)mBuffer[offset + 2] << 16) |
-           ((uint32_t)mBuffer[offset + 1] << 8)  | (uint32_t)mBuffer[offset];
-}
-
-void MtpPacket::putUInt16(int offset, uint16_t value) {
-    mBuffer[offset++] = (uint8_t)(value & 0xFF);
-    mBuffer[offset++] = (uint8_t)((value >> 8) & 0xFF);
-}
-
-void MtpPacket::putUInt32(int offset, uint32_t value) {
-    mBuffer[offset++] = (uint8_t)(value & 0xFF);
-    mBuffer[offset++] = (uint8_t)((value >> 8) & 0xFF);
-    mBuffer[offset++] = (uint8_t)((value >> 16) & 0xFF);
-    mBuffer[offset++] = (uint8_t)((value >> 24) & 0xFF);
-}
-
-uint16_t MtpPacket::getContainerCode() const {
-    return getUInt16(MTP_CONTAINER_CODE_OFFSET);
-}
-
-void MtpPacket::setContainerCode(uint16_t code) {
-    putUInt16(MTP_CONTAINER_CODE_OFFSET, code);
-}
-
-uint16_t MtpPacket::getContainerType() const {
-    return getUInt16(MTP_CONTAINER_TYPE_OFFSET);
-}
-
-MtpTransactionID MtpPacket::getTransactionID() const {
-    return getUInt32(MTP_CONTAINER_TRANSACTION_ID_OFFSET);
-}
-
-void MtpPacket::setTransactionID(MtpTransactionID id) {
-    putUInt32(MTP_CONTAINER_TRANSACTION_ID_OFFSET, id);
-}
-
-uint32_t MtpPacket::getParameter(int index) const {
-    if (index < 1 || index > 5) {
-        ALOGE("index %d out of range in MtpPacket::getParameter", index);
-        return 0;
-    }
-    return getUInt32(MTP_CONTAINER_PARAMETER_OFFSET + (index - 1) * sizeof(uint32_t));
-}
-
-void MtpPacket::setParameter(int index, uint32_t value) {
-    if (index < 1 || index > 5) {
-        ALOGE("index %d out of range in MtpPacket::setParameter", index);
-        return;
-    }
-    int offset = MTP_CONTAINER_PARAMETER_OFFSET + (index - 1) * sizeof(uint32_t);
-    if (mPacketSize < offset + sizeof(uint32_t))
-        mPacketSize = offset + sizeof(uint32_t);
-    putUInt32(offset, value);
-}
-
-#ifdef MTP_HOST
-int MtpPacket::transfer(struct usb_request* request) {
-    int result = usb_device_bulk_transfer(request->dev,
-                            request->endpoint,
-                            request->buffer,
-                            request->buffer_length,
-                            0);
-    request->actual_length = result;
-    return result;
-}
-#endif
-
-}  // namespace android
diff --git a/media/mtp/MtpPacket.h b/media/mtp/MtpPacket.h
deleted file mode 100644
index 0ffb1d3..0000000
--- a/media/mtp/MtpPacket.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_PACKET_H
-#define _MTP_PACKET_H
-
-#include "MtpTypes.h"
-
-struct usb_request;
-
-namespace android {
-
-class MtpPacket {
-
-protected:
-    uint8_t*            mBuffer;
-    // current size of the buffer
-    int                 mBufferSize;
-    // number of bytes to add when resizing the buffer
-    int                 mAllocationIncrement;
-    // size of the data in the packet
-    int                 mPacketSize;
-
-public:
-                        MtpPacket(int bufferSize);
-    virtual             ~MtpPacket();
-
-    // sets packet size to the default container size and sets buffer to zero
-    virtual void        reset();
-
-    void                allocate(int length);
-    void                dump();
-    void                copyFrom(const MtpPacket& src);
-
-    uint16_t            getContainerCode() const;
-    void                setContainerCode(uint16_t code);
-
-    uint16_t            getContainerType() const;
-
-    MtpTransactionID    getTransactionID() const;
-    void                setTransactionID(MtpTransactionID id);
-
-    uint32_t            getParameter(int index) const;
-    void                setParameter(int index, uint32_t value);
-
-#ifdef MTP_HOST
-    int                 transfer(struct usb_request* request);
-#endif
-
-protected:
-    uint16_t            getUInt16(int offset) const;
-    uint32_t            getUInt32(int offset) const;
-    void                putUInt16(int offset, uint16_t value);
-    void                putUInt32(int offset, uint32_t value);
-};
-
-}; // namespace android
-
-#endif // _MTP_PACKET_H
diff --git a/media/mtp/MtpProperty.cpp b/media/mtp/MtpProperty.cpp
deleted file mode 100644
index 64dd45b..0000000
--- a/media/mtp/MtpProperty.cpp
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpProperty"
-
-#include "MtpDataPacket.h"
-#include "MtpDebug.h"
-#include "MtpProperty.h"
-#include "MtpStringBuffer.h"
-#include "MtpUtils.h"
-
-namespace android {
-
-MtpProperty::MtpProperty()
-    :   mCode(0),
-        mType(0),
-        mWriteable(false),
-        mDefaultArrayLength(0),
-        mDefaultArrayValues(NULL),
-        mCurrentArrayLength(0),
-        mCurrentArrayValues(NULL),
-        mGroupCode(0),
-        mFormFlag(kFormNone),
-        mEnumLength(0),
-        mEnumValues(NULL)
-{
-    memset(&mDefaultValue, 0, sizeof(mDefaultValue));
-    memset(&mCurrentValue, 0, sizeof(mCurrentValue));
-    memset(&mMinimumValue, 0, sizeof(mMinimumValue));
-    memset(&mMaximumValue, 0, sizeof(mMaximumValue));
-}
-
-MtpProperty::MtpProperty(MtpPropertyCode propCode,
-                         MtpDataType type,
-                         bool writeable,
-                         int defaultValue)
-    :   mCode(propCode),
-        mType(type),
-        mWriteable(writeable),
-        mDefaultArrayLength(0),
-        mDefaultArrayValues(NULL),
-        mCurrentArrayLength(0),
-        mCurrentArrayValues(NULL),
-        mGroupCode(0),
-        mFormFlag(kFormNone),
-        mEnumLength(0),
-        mEnumValues(NULL)
-{
-    memset(&mDefaultValue, 0, sizeof(mDefaultValue));
-    memset(&mCurrentValue, 0, sizeof(mCurrentValue));
-    memset(&mMinimumValue, 0, sizeof(mMinimumValue));
-    memset(&mMaximumValue, 0, sizeof(mMaximumValue));
-
-    if (defaultValue) {
-        switch (type) {
-            case MTP_TYPE_INT8:
-                mDefaultValue.u.i8 = defaultValue;
-                break;
-            case MTP_TYPE_UINT8:
-                mDefaultValue.u.u8 = defaultValue;
-                break;
-            case MTP_TYPE_INT16:
-                mDefaultValue.u.i16 = defaultValue;
-                break;
-            case MTP_TYPE_UINT16:
-                mDefaultValue.u.u16 = defaultValue;
-                break;
-            case MTP_TYPE_INT32:
-                mDefaultValue.u.i32 = defaultValue;
-                break;
-            case MTP_TYPE_UINT32:
-                mDefaultValue.u.u32 = defaultValue;
-                break;
-            case MTP_TYPE_INT64:
-                mDefaultValue.u.i64 = defaultValue;
-                break;
-            case MTP_TYPE_UINT64:
-                mDefaultValue.u.u64 = defaultValue;
-                break;
-            default:
-                ALOGE("unknown type %04X in MtpProperty::MtpProperty", type);
-        }
-    }
-}
-
-MtpProperty::~MtpProperty() {
-    if (mType == MTP_TYPE_STR) {
-        // free all strings
-        free(mDefaultValue.str);
-        free(mCurrentValue.str);
-        free(mMinimumValue.str);
-        free(mMaximumValue.str);
-        if (mDefaultArrayValues) {
-            for (int i = 0; i < mDefaultArrayLength; i++)
-                free(mDefaultArrayValues[i].str);
-        }
-        if (mCurrentArrayValues) {
-            for (int i = 0; i < mCurrentArrayLength; i++)
-                free(mCurrentArrayValues[i].str);
-        }
-        if (mEnumValues) {
-            for (int i = 0; i < mEnumLength; i++)
-                free(mEnumValues[i].str);
-        }
-    }
-    delete[] mDefaultArrayValues;
-    delete[] mCurrentArrayValues;
-    delete[] mEnumValues;
-}
-
-void MtpProperty::read(MtpDataPacket& packet) {
-    mCode = packet.getUInt16();
-    bool deviceProp = isDeviceProperty();
-    mType = packet.getUInt16();
-    mWriteable = (packet.getUInt8() == 1);
-    switch (mType) {
-        case MTP_TYPE_AINT8:
-        case MTP_TYPE_AUINT8:
-        case MTP_TYPE_AINT16:
-        case MTP_TYPE_AUINT16:
-        case MTP_TYPE_AINT32:
-        case MTP_TYPE_AUINT32:
-        case MTP_TYPE_AINT64:
-        case MTP_TYPE_AUINT64:
-        case MTP_TYPE_AINT128:
-        case MTP_TYPE_AUINT128:
-            mDefaultArrayValues = readArrayValues(packet, mDefaultArrayLength);
-            if (deviceProp)
-                mCurrentArrayValues = readArrayValues(packet, mCurrentArrayLength);
-            break;
-        default:
-            readValue(packet, mDefaultValue);
-            if (deviceProp)
-                readValue(packet, mCurrentValue);
-    }
-    if (!deviceProp)
-        mGroupCode = packet.getUInt32();
-    mFormFlag = packet.getUInt8();
-
-    if (mFormFlag == kFormRange) {
-            readValue(packet, mMinimumValue);
-            readValue(packet, mMaximumValue);
-            readValue(packet, mStepSize);
-    } else if (mFormFlag == kFormEnum) {
-        mEnumLength = packet.getUInt16();
-        mEnumValues = new MtpPropertyValue[mEnumLength];
-        for (int i = 0; i < mEnumLength; i++)
-            readValue(packet, mEnumValues[i]);
-    }
-}
-
-void MtpProperty::write(MtpDataPacket& packet) {
-    bool deviceProp = isDeviceProperty();
-
-    packet.putUInt16(mCode);
-    packet.putUInt16(mType);
-    packet.putUInt8(mWriteable ? 1 : 0);
-
-    switch (mType) {
-        case MTP_TYPE_AINT8:
-        case MTP_TYPE_AUINT8:
-        case MTP_TYPE_AINT16:
-        case MTP_TYPE_AUINT16:
-        case MTP_TYPE_AINT32:
-        case MTP_TYPE_AUINT32:
-        case MTP_TYPE_AINT64:
-        case MTP_TYPE_AUINT64:
-        case MTP_TYPE_AINT128:
-        case MTP_TYPE_AUINT128:
-            writeArrayValues(packet, mDefaultArrayValues, mDefaultArrayLength);
-            if (deviceProp)
-                writeArrayValues(packet, mCurrentArrayValues, mCurrentArrayLength);
-            break;
-        default:
-            writeValue(packet, mDefaultValue);
-            if (deviceProp)
-                writeValue(packet, mCurrentValue);
-    }
-    packet.putUInt32(mGroupCode);
-    if (!deviceProp)
-        packet.putUInt8(mFormFlag);
-    if (mFormFlag == kFormRange) {
-            writeValue(packet, mMinimumValue);
-            writeValue(packet, mMaximumValue);
-            writeValue(packet, mStepSize);
-    } else if (mFormFlag == kFormEnum) {
-        packet.putUInt16(mEnumLength);
-        for (int i = 0; i < mEnumLength; i++)
-            writeValue(packet, mEnumValues[i]);
-    }
-}
-
-void MtpProperty::setDefaultValue(const uint16_t* string) {
-    free(mDefaultValue.str);
-    if (string) {
-        MtpStringBuffer buffer(string);
-        mDefaultValue.str = strdup(buffer);
-    }
-    else
-        mDefaultValue.str = NULL;
-}
-
-void MtpProperty::setCurrentValue(const uint16_t* string) {
-    free(mCurrentValue.str);
-    if (string) {
-        MtpStringBuffer buffer(string);
-        mCurrentValue.str = strdup(buffer);
-    }
-    else
-        mCurrentValue.str = NULL;
-}
-
-void MtpProperty::setFormRange(int min, int max, int step) {
-    mFormFlag = kFormRange;
-    switch (mType) {
-        case MTP_TYPE_INT8:
-            mMinimumValue.u.i8 = min;
-            mMaximumValue.u.i8 = max;
-            mStepSize.u.i8 = step;
-            break;
-        case MTP_TYPE_UINT8:
-            mMinimumValue.u.u8 = min;
-            mMaximumValue.u.u8 = max;
-            mStepSize.u.u8 = step;
-            break;
-        case MTP_TYPE_INT16:
-            mMinimumValue.u.i16 = min;
-            mMaximumValue.u.i16 = max;
-            mStepSize.u.i16 = step;
-            break;
-        case MTP_TYPE_UINT16:
-            mMinimumValue.u.u16 = min;
-            mMaximumValue.u.u16 = max;
-            mStepSize.u.u16 = step;
-            break;
-        case MTP_TYPE_INT32:
-            mMinimumValue.u.i32 = min;
-            mMaximumValue.u.i32 = max;
-            mStepSize.u.i32 = step;
-            break;
-        case MTP_TYPE_UINT32:
-            mMinimumValue.u.u32 = min;
-            mMaximumValue.u.u32 = max;
-            mStepSize.u.u32 = step;
-            break;
-        case MTP_TYPE_INT64:
-            mMinimumValue.u.i64 = min;
-            mMaximumValue.u.i64 = max;
-            mStepSize.u.i64 = step;
-            break;
-        case MTP_TYPE_UINT64:
-            mMinimumValue.u.u64 = min;
-            mMaximumValue.u.u64 = max;
-            mStepSize.u.u64 = step;
-            break;
-        default:
-            ALOGE("unsupported type for MtpProperty::setRange");
-            break;
-    }
-}
-
-void MtpProperty::setFormEnum(const int* values, int count) {
-     mFormFlag = kFormEnum;
-     delete[] mEnumValues;
-     mEnumValues = new MtpPropertyValue[count];
-     mEnumLength = count;
-
-    for (int i = 0; i < count; i++) {
-        int value = *values++;
-            switch (mType) {
-                case MTP_TYPE_INT8:
-                    mEnumValues[i].u.i8 = value;
-                    break;
-                case MTP_TYPE_UINT8:
-                    mEnumValues[i].u.u8 = value;
-                    break;
-                case MTP_TYPE_INT16:
-                    mEnumValues[i].u.i16 = value;
-                    break;
-                case MTP_TYPE_UINT16:
-                    mEnumValues[i].u.u16 = value;
-                    break;
-                case MTP_TYPE_INT32:
-                    mEnumValues[i].u.i32 = value;
-                    break;
-                case MTP_TYPE_UINT32:
-                    mEnumValues[i].u.u32 = value;
-                    break;
-                case MTP_TYPE_INT64:
-                    mEnumValues[i].u.i64 = value;
-                    break;
-                case MTP_TYPE_UINT64:
-                    mEnumValues[i].u.u64 = value;
-                    break;
-                default:
-                    ALOGE("unsupported type for MtpProperty::setEnum");
-                    break;
-        }
-    }
-}
-
-void MtpProperty::setFormDateTime() {
-     mFormFlag = kFormDateTime;
-}
-
-void MtpProperty::print() {
-    MtpString buffer;
-    bool deviceProp = isDeviceProperty();
-    if (deviceProp)
-        ALOGI("    %s (%04X)", MtpDebug::getDevicePropCodeName(mCode), mCode);
-    else
-        ALOGI("    %s (%04X)", MtpDebug::getObjectPropCodeName(mCode), mCode);
-    ALOGI("    type %04X", mType);
-    ALOGI("    writeable %s", (mWriteable ? "true" : "false"));
-    buffer = "    default value: ";
-    print(mDefaultValue, buffer);
-    ALOGI("%s", (const char *)buffer);
-    if (deviceProp) {
-        buffer = "    current value: ";
-        print(mCurrentValue, buffer);
-        ALOGI("%s", (const char *)buffer);
-    }
-    switch (mFormFlag) {
-        case kFormNone:
-            break;
-        case kFormRange:
-            buffer = "    Range (";
-            print(mMinimumValue, buffer);
-            buffer += ", ";
-            print(mMaximumValue, buffer);
-            buffer += ", ";
-            print(mStepSize, buffer);
-            buffer += ")";
-            ALOGI("%s", (const char *)buffer);
-            break;
-        case kFormEnum:
-            buffer = "    Enum { ";
-            for (int i = 0; i < mEnumLength; i++) {
-                print(mEnumValues[i], buffer);
-                buffer += " ";
-            }
-            buffer += "}";
-            ALOGI("%s", (const char *)buffer);
-            break;
-        case kFormDateTime:
-            ALOGI("    DateTime\n");
-            break;
-        default:
-            ALOGI("    form %d\n", mFormFlag);
-            break;
-    }
-}
-
-void MtpProperty::print(MtpPropertyValue& value, MtpString& buffer) {
-    switch (mType) {
-        case MTP_TYPE_INT8:
-            buffer.appendFormat("%d", value.u.i8);
-            break;
-        case MTP_TYPE_UINT8:
-            buffer.appendFormat("%d", value.u.u8);
-            break;
-        case MTP_TYPE_INT16:
-            buffer.appendFormat("%d", value.u.i16);
-            break;
-        case MTP_TYPE_UINT16:
-            buffer.appendFormat("%d", value.u.u16);
-            break;
-        case MTP_TYPE_INT32:
-            buffer.appendFormat("%d", value.u.i32);
-            break;
-        case MTP_TYPE_UINT32:
-            buffer.appendFormat("%d", value.u.u32);
-            break;
-        case MTP_TYPE_INT64:
-            buffer.appendFormat("%lld", value.u.i64);
-            break;
-        case MTP_TYPE_UINT64:
-            buffer.appendFormat("%lld", value.u.u64);
-            break;
-        case MTP_TYPE_INT128:
-            buffer.appendFormat("%08X%08X%08X%08X", value.u.i128[0], value.u.i128[1],
-                    value.u.i128[2], value.u.i128[3]);
-            break;
-        case MTP_TYPE_UINT128:
-            buffer.appendFormat("%08X%08X%08X%08X", value.u.u128[0], value.u.u128[1],
-                    value.u.u128[2], value.u.u128[3]);
-            break;
-        case MTP_TYPE_STR:
-            buffer.appendFormat("%s", value.str);
-            break;
-        default:
-            ALOGE("unsupported type for MtpProperty::print\n");
-            break;
-    }
-}
-
-void MtpProperty::readValue(MtpDataPacket& packet, MtpPropertyValue& value) {
-    MtpStringBuffer stringBuffer;
-
-    switch (mType) {
-        case MTP_TYPE_INT8:
-        case MTP_TYPE_AINT8:
-            value.u.i8 = packet.getInt8();
-            break;
-        case MTP_TYPE_UINT8:
-        case MTP_TYPE_AUINT8:
-            value.u.u8 = packet.getUInt8();
-            break;
-        case MTP_TYPE_INT16:
-        case MTP_TYPE_AINT16:
-            value.u.i16 = packet.getInt16();
-            break;
-        case MTP_TYPE_UINT16:
-        case MTP_TYPE_AUINT16:
-            value.u.u16 = packet.getUInt16();
-            break;
-        case MTP_TYPE_INT32:
-        case MTP_TYPE_AINT32:
-            value.u.i32 = packet.getInt32();
-            break;
-        case MTP_TYPE_UINT32:
-        case MTP_TYPE_AUINT32:
-            value.u.u32 = packet.getUInt32();
-            break;
-        case MTP_TYPE_INT64:
-        case MTP_TYPE_AINT64:
-            value.u.i64 = packet.getInt64();
-            break;
-        case MTP_TYPE_UINT64:
-        case MTP_TYPE_AUINT64:
-            value.u.u64 = packet.getUInt64();
-            break;
-        case MTP_TYPE_INT128:
-        case MTP_TYPE_AINT128:
-            packet.getInt128(value.u.i128);
-            break;
-        case MTP_TYPE_UINT128:
-        case MTP_TYPE_AUINT128:
-            packet.getUInt128(value.u.u128);
-            break;
-        case MTP_TYPE_STR:
-            packet.getString(stringBuffer);
-            value.str = strdup(stringBuffer);
-            break;
-        default:
-            ALOGE("unknown type %04X in MtpProperty::readValue", mType);
-    }
-}
-
-void MtpProperty::writeValue(MtpDataPacket& packet, MtpPropertyValue& value) {
-    MtpStringBuffer stringBuffer;
-
-    switch (mType) {
-        case MTP_TYPE_INT8:
-        case MTP_TYPE_AINT8:
-            packet.putInt8(value.u.i8);
-            break;
-        case MTP_TYPE_UINT8:
-        case MTP_TYPE_AUINT8:
-            packet.putUInt8(value.u.u8);
-            break;
-        case MTP_TYPE_INT16:
-        case MTP_TYPE_AINT16:
-            packet.putInt16(value.u.i16);
-            break;
-        case MTP_TYPE_UINT16:
-        case MTP_TYPE_AUINT16:
-            packet.putUInt16(value.u.u16);
-            break;
-        case MTP_TYPE_INT32:
-        case MTP_TYPE_AINT32:
-            packet.putInt32(value.u.i32);
-            break;
-        case MTP_TYPE_UINT32:
-        case MTP_TYPE_AUINT32:
-            packet.putUInt32(value.u.u32);
-            break;
-        case MTP_TYPE_INT64:
-        case MTP_TYPE_AINT64:
-            packet.putInt64(value.u.i64);
-            break;
-        case MTP_TYPE_UINT64:
-        case MTP_TYPE_AUINT64:
-            packet.putUInt64(value.u.u64);
-            break;
-        case MTP_TYPE_INT128:
-        case MTP_TYPE_AINT128:
-            packet.putInt128(value.u.i128);
-            break;
-        case MTP_TYPE_UINT128:
-        case MTP_TYPE_AUINT128:
-            packet.putUInt128(value.u.u128);
-            break;
-        case MTP_TYPE_STR:
-            if (value.str)
-                packet.putString(value.str);
-            else
-                packet.putEmptyString();
-            break;
-        default:
-            ALOGE("unknown type %04X in MtpProperty::writeValue", mType);
-    }
-}
-
-MtpPropertyValue* MtpProperty::readArrayValues(MtpDataPacket& packet, int& length) {
-    length = packet.getUInt32();
-    if (length == 0)
-        return NULL;
-    MtpPropertyValue* result = new MtpPropertyValue[length];
-    for (int i = 0; i < length; i++)
-        readValue(packet, result[i]);
-    return result;
-}
-
-void MtpProperty::writeArrayValues(MtpDataPacket& packet, MtpPropertyValue* values, int length) {
-    packet.putUInt32(length);
-    for (int i = 0; i < length; i++)
-        writeValue(packet, values[i]);
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpProperty.h b/media/mtp/MtpProperty.h
deleted file mode 100644
index 06ca56e..0000000
--- a/media/mtp/MtpProperty.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_PROPERTY_H
-#define _MTP_PROPERTY_H
-
-#include "MtpTypes.h"
-
-namespace android {
-
-class MtpDataPacket;
-
-struct MtpPropertyValue {
-    union {
-        int8_t          i8;
-        uint8_t         u8;
-        int16_t         i16;
-        uint16_t        u16;
-        int32_t         i32;
-        uint32_t        u32;
-        int64_t         i64;
-        uint64_t        u64;
-        int128_t        i128;
-        uint128_t       u128;
-    } u;
-    // string in UTF8 format
-    char*               str;
-};
-
-class MtpProperty {
-public:
-    MtpPropertyCode     mCode;
-    MtpDataType         mType;
-    bool                mWriteable;
-    MtpPropertyValue    mDefaultValue;
-    MtpPropertyValue    mCurrentValue;
-
-    // for array types
-    int                 mDefaultArrayLength;
-    MtpPropertyValue*   mDefaultArrayValues;
-    int                 mCurrentArrayLength;
-    MtpPropertyValue*   mCurrentArrayValues;
-
-    enum {
-        kFormNone = 0,
-        kFormRange = 1,
-        kFormEnum = 2,
-        kFormDateTime = 3,
-    };
-
-    uint32_t            mGroupCode;
-    uint8_t             mFormFlag;
-
-    // for range form
-    MtpPropertyValue    mMinimumValue;
-    MtpPropertyValue    mMaximumValue;
-    MtpPropertyValue    mStepSize;
-
-    // for enum form
-    int                 mEnumLength;
-    MtpPropertyValue*   mEnumValues;
-
-public:
-                        MtpProperty();
-                        MtpProperty(MtpPropertyCode propCode,
-                                     MtpDataType type,
-                                     bool writeable = false,
-                                     int defaultValue = 0);
-    virtual             ~MtpProperty();
-
-    inline MtpPropertyCode getPropertyCode() const { return mCode; }
-
-    void                read(MtpDataPacket& packet);
-    void                write(MtpDataPacket& packet);
-
-    void                setDefaultValue(const uint16_t* string);
-    void                setCurrentValue(const uint16_t* string);
-
-    void                setFormRange(int min, int max, int step);
-    void                setFormEnum(const int* values, int count);
-    void                setFormDateTime();
-
-    void                print();
-    void                print(MtpPropertyValue& value, MtpString& buffer);
-
-    inline bool         isDeviceProperty() const {
-                            return (   ((mCode & 0xF000) == 0x5000)
-                                    || ((mCode & 0xF800) == 0xD000));
-                        }
-
-private:
-    void                readValue(MtpDataPacket& packet, MtpPropertyValue& value);
-    void                writeValue(MtpDataPacket& packet, MtpPropertyValue& value);
-    MtpPropertyValue*   readArrayValues(MtpDataPacket& packet, int& length);
-    void                writeArrayValues(MtpDataPacket& packet,
-                                            MtpPropertyValue* values, int length);
-};
-
-}; // namespace android
-
-#endif // _MTP_PROPERTY_H
diff --git a/media/mtp/MtpRequestPacket.cpp b/media/mtp/MtpRequestPacket.cpp
deleted file mode 100644
index 0e58e01..0000000
--- a/media/mtp/MtpRequestPacket.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpRequestPacket"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-
-#include "MtpRequestPacket.h"
-
-#include <usbhost/usbhost.h>
-
-namespace android {
-
-MtpRequestPacket::MtpRequestPacket()
-    :   MtpPacket(512)
-{
-}
-
-MtpRequestPacket::~MtpRequestPacket() {
-}
-
-#ifdef MTP_DEVICE
-int MtpRequestPacket::read(int fd) {
-    int ret = ::read(fd, mBuffer, mBufferSize);
-    if (ret >= 0)
-        mPacketSize = ret;
-    else
-        mPacketSize = 0;
-    return ret;
-}
-#endif
-
-#ifdef MTP_HOST
-    // write our buffer to the given endpoint (host mode)
-int MtpRequestPacket::write(struct usb_request *request)
-{
-    putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
-    putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_COMMAND);
-    request->buffer = mBuffer;
-    request->buffer_length = mPacketSize;
-    return transfer(request);
-}
-#endif
-
-}  // namespace android
diff --git a/media/mtp/MtpRequestPacket.h b/media/mtp/MtpRequestPacket.h
deleted file mode 100644
index 1201f11..0000000
--- a/media/mtp/MtpRequestPacket.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_REQUEST_PACKET_H
-#define _MTP_REQUEST_PACKET_H
-
-#include "MtpPacket.h"
-#include "mtp.h"
-
-struct usb_request;
-
-namespace android {
-
-class MtpRequestPacket : public MtpPacket {
-
-public:
-                        MtpRequestPacket();
-    virtual             ~MtpRequestPacket();
-
-#ifdef MTP_DEVICE
-    // fill our buffer with data from the given file descriptor
-    int                 read(int fd);
-#endif
-
-#ifdef MTP_HOST
-    // write our buffer to the given endpoint
-    int                 write(struct usb_request *request);
-#endif
-
-    inline MtpOperationCode    getOperationCode() const { return getContainerCode(); }
-    inline void                setOperationCode(MtpOperationCode code)
-                                                    { return setContainerCode(code); }
-};
-
-}; // namespace android
-
-#endif // _MTP_REQUEST_PACKET_H
diff --git a/media/mtp/MtpResponsePacket.cpp b/media/mtp/MtpResponsePacket.cpp
deleted file mode 100644
index c2b41e4..0000000
--- a/media/mtp/MtpResponsePacket.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpResponsePacket"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <fcntl.h>
-
-#include "MtpResponsePacket.h"
-
-#include <usbhost/usbhost.h>
-
-namespace android {
-
-MtpResponsePacket::MtpResponsePacket()
-    :   MtpPacket(512)
-{
-}
-
-MtpResponsePacket::~MtpResponsePacket() {
-}
-
-#ifdef MTP_DEVICE
-int MtpResponsePacket::write(int fd) {
-    putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
-    putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_RESPONSE);
-    int ret = ::write(fd, mBuffer, mPacketSize);
-    return (ret < 0 ? ret : 0);
-}
-#endif
-
-#ifdef MTP_HOST
-int MtpResponsePacket::read(struct usb_request *request) {
-    request->buffer = mBuffer;
-    request->buffer_length = mBufferSize;
-    int ret = transfer(request);
-     if (ret >= 0)
-        mPacketSize = ret;
-    else
-        mPacketSize = 0;
-    return ret;
-}
-#endif
-
-}  // namespace android
-
diff --git a/media/mtp/MtpResponsePacket.h b/media/mtp/MtpResponsePacket.h
deleted file mode 100644
index 592ad4a..0000000
--- a/media/mtp/MtpResponsePacket.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_RESPONSE_PACKET_H
-#define _MTP_RESPONSE_PACKET_H
-
-#include "MtpPacket.h"
-#include "mtp.h"
-
-namespace android {
-
-class MtpResponsePacket : public MtpPacket {
-
-public:
-                        MtpResponsePacket();
-    virtual             ~MtpResponsePacket();
-
-#ifdef MTP_DEVICE
-    // write our data to the given file descriptor
-    int                 write(int fd);
-#endif
-
-#ifdef MTP_HOST
-    // read our buffer with the given request
-    int                 read(struct usb_request *request);
-#endif
-
-    inline MtpResponseCode      getResponseCode() const { return getContainerCode(); }
-    inline void                 setResponseCode(MtpResponseCode code)
-                                                     { return setContainerCode(code); }
-};
-
-}; // namespace android
-
-#endif // _MTP_RESPONSE_PACKET_H
diff --git a/media/mtp/MtpServer.cpp b/media/mtp/MtpServer.cpp
deleted file mode 100644
index 5606187..0000000
--- a/media/mtp/MtpServer.cpp
+++ /dev/null
@@ -1,1210 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <dirent.h>
-
-#include <cutils/properties.h>
-
-#define LOG_TAG "MtpServer"
-
-#include "MtpDebug.h"
-#include "MtpDatabase.h"
-#include "MtpObjectInfo.h"
-#include "MtpProperty.h"
-#include "MtpServer.h"
-#include "MtpStorage.h"
-#include "MtpStringBuffer.h"
-
-#include <linux/usb/f_mtp.h>
-
-namespace android {
-
-static const MtpOperationCode kSupportedOperationCodes[] = {
-    MTP_OPERATION_GET_DEVICE_INFO,
-    MTP_OPERATION_OPEN_SESSION,
-    MTP_OPERATION_CLOSE_SESSION,
-    MTP_OPERATION_GET_STORAGE_IDS,
-    MTP_OPERATION_GET_STORAGE_INFO,
-    MTP_OPERATION_GET_NUM_OBJECTS,
-    MTP_OPERATION_GET_OBJECT_HANDLES,
-    MTP_OPERATION_GET_OBJECT_INFO,
-    MTP_OPERATION_GET_OBJECT,
-    MTP_OPERATION_GET_THUMB,
-    MTP_OPERATION_DELETE_OBJECT,
-    MTP_OPERATION_SEND_OBJECT_INFO,
-    MTP_OPERATION_SEND_OBJECT,
-//    MTP_OPERATION_INITIATE_CAPTURE,
-//    MTP_OPERATION_FORMAT_STORE,
-//    MTP_OPERATION_RESET_DEVICE,
-//    MTP_OPERATION_SELF_TEST,
-//    MTP_OPERATION_SET_OBJECT_PROTECTION,
-//    MTP_OPERATION_POWER_DOWN,
-    MTP_OPERATION_GET_DEVICE_PROP_DESC,
-    MTP_OPERATION_GET_DEVICE_PROP_VALUE,
-    MTP_OPERATION_SET_DEVICE_PROP_VALUE,
-    MTP_OPERATION_RESET_DEVICE_PROP_VALUE,
-//    MTP_OPERATION_TERMINATE_OPEN_CAPTURE,
-//    MTP_OPERATION_MOVE_OBJECT,
-//    MTP_OPERATION_COPY_OBJECT,
-    MTP_OPERATION_GET_PARTIAL_OBJECT,
-//    MTP_OPERATION_INITIATE_OPEN_CAPTURE,
-    MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED,
-    MTP_OPERATION_GET_OBJECT_PROP_DESC,
-    MTP_OPERATION_GET_OBJECT_PROP_VALUE,
-    MTP_OPERATION_SET_OBJECT_PROP_VALUE,
-    MTP_OPERATION_GET_OBJECT_PROP_LIST,
-//    MTP_OPERATION_SET_OBJECT_PROP_LIST,
-//    MTP_OPERATION_GET_INTERDEPENDENT_PROP_DESC,
-//    MTP_OPERATION_SEND_OBJECT_PROP_LIST,
-    MTP_OPERATION_GET_OBJECT_REFERENCES,
-    MTP_OPERATION_SET_OBJECT_REFERENCES,
-//    MTP_OPERATION_SKIP,
-    // Android extension for direct file IO
-    MTP_OPERATION_GET_PARTIAL_OBJECT_64,
-    MTP_OPERATION_SEND_PARTIAL_OBJECT,
-    MTP_OPERATION_TRUNCATE_OBJECT,
-    MTP_OPERATION_BEGIN_EDIT_OBJECT,
-    MTP_OPERATION_END_EDIT_OBJECT,
-};
-
-static const MtpEventCode kSupportedEventCodes[] = {
-    MTP_EVENT_OBJECT_ADDED,
-    MTP_EVENT_OBJECT_REMOVED,
-    MTP_EVENT_STORE_ADDED,
-    MTP_EVENT_STORE_REMOVED,
-};
-
-MtpServer::MtpServer(int fd, MtpDatabase* database, bool ptp,
-                    int fileGroup, int filePerm, int directoryPerm)
-    :   mFD(fd),
-        mDatabase(database),
-        mPtp(ptp),
-        mFileGroup(fileGroup),
-        mFilePermission(filePerm),
-        mDirectoryPermission(directoryPerm),
-        mSessionID(0),
-        mSessionOpen(false),
-        mSendObjectHandle(kInvalidObjectHandle),
-        mSendObjectFormat(0),
-        mSendObjectFileSize(0)
-{
-}
-
-MtpServer::~MtpServer() {
-}
-
-void MtpServer::addStorage(MtpStorage* storage) {
-    Mutex::Autolock autoLock(mMutex);
-
-    mStorages.push(storage);
-    sendStoreAdded(storage->getStorageID());
-}
-
-void MtpServer::removeStorage(MtpStorage* storage) {
-    Mutex::Autolock autoLock(mMutex);
-
-    for (int i = 0; i < mStorages.size(); i++) {
-        if (mStorages[i] == storage) {
-            mStorages.removeAt(i);
-            sendStoreRemoved(storage->getStorageID());
-            break;
-        }
-    }
-}
-
-MtpStorage* MtpServer::getStorage(MtpStorageID id) {
-    if (id == 0)
-        return mStorages[0];
-    for (int i = 0; i < mStorages.size(); i++) {
-        MtpStorage* storage = mStorages[i];
-        if (storage->getStorageID() == id)
-            return storage;
-    }
-    return NULL;
-}
-
-bool MtpServer::hasStorage(MtpStorageID id) {
-    if (id == 0 || id == 0xFFFFFFFF)
-        return mStorages.size() > 0;
-    return (getStorage(id) != NULL);
-}
-
-void MtpServer::run() {
-    int fd = mFD;
-
-    ALOGV("MtpServer::run fd: %d\n", fd);
-
-    while (1) {
-        int ret = mRequest.read(fd);
-        if (ret < 0) {
-            ALOGV("request read returned %d, errno: %d", ret, errno);
-            if (errno == ECANCELED) {
-                // return to top of loop and wait for next command
-                continue;
-            }
-            break;
-        }
-        MtpOperationCode operation = mRequest.getOperationCode();
-        MtpTransactionID transaction = mRequest.getTransactionID();
-
-        ALOGV("operation: %s", MtpDebug::getOperationCodeName(operation));
-        mRequest.dump();
-
-        // FIXME need to generalize this
-        bool dataIn = (operation == MTP_OPERATION_SEND_OBJECT_INFO
-                    || operation == MTP_OPERATION_SET_OBJECT_REFERENCES
-                    || operation == MTP_OPERATION_SET_OBJECT_PROP_VALUE
-                    || operation == MTP_OPERATION_SET_DEVICE_PROP_VALUE);
-        if (dataIn) {
-            int ret = mData.read(fd);
-            if (ret < 0) {
-                ALOGE("data read returned %d, errno: %d", ret, errno);
-                if (errno == ECANCELED) {
-                    // return to top of loop and wait for next command
-                    continue;
-                }
-                break;
-            }
-            ALOGV("received data:");
-            mData.dump();
-        } else {
-            mData.reset();
-        }
-
-        if (handleRequest()) {
-            if (!dataIn && mData.hasData()) {
-                mData.setOperationCode(operation);
-                mData.setTransactionID(transaction);
-                ALOGV("sending data:");
-                mData.dump();
-                ret = mData.write(fd);
-                if (ret < 0) {
-                    ALOGE("request write returned %d, errno: %d", ret, errno);
-                    if (errno == ECANCELED) {
-                        // return to top of loop and wait for next command
-                        continue;
-                    }
-                    break;
-                }
-            }
-
-            mResponse.setTransactionID(transaction);
-            ALOGV("sending response %04X", mResponse.getResponseCode());
-            ret = mResponse.write(fd);
-            mResponse.dump();
-            if (ret < 0) {
-                ALOGE("request write returned %d, errno: %d", ret, errno);
-                if (errno == ECANCELED) {
-                    // return to top of loop and wait for next command
-                    continue;
-                }
-                break;
-            }
-        } else {
-            ALOGV("skipping response\n");
-        }
-    }
-
-    // commit any open edits
-    int count = mObjectEditList.size();
-    for (int i = 0; i < count; i++) {
-        ObjectEdit* edit = mObjectEditList[i];
-        commitEdit(edit);
-        delete edit;
-    }
-    mObjectEditList.clear();
-
-    if (mSessionOpen)
-        mDatabase->sessionEnded();
-    close(fd);
-    mFD = -1;
-}
-
-void MtpServer::sendObjectAdded(MtpObjectHandle handle) {
-    ALOGV("sendObjectAdded %d\n", handle);
-    sendEvent(MTP_EVENT_OBJECT_ADDED, handle);
-}
-
-void MtpServer::sendObjectRemoved(MtpObjectHandle handle) {
-    ALOGV("sendObjectRemoved %d\n", handle);
-    sendEvent(MTP_EVENT_OBJECT_REMOVED, handle);
-}
-
-void MtpServer::sendStoreAdded(MtpStorageID id) {
-    ALOGV("sendStoreAdded %08X\n", id);
-    sendEvent(MTP_EVENT_STORE_ADDED, id);
-}
-
-void MtpServer::sendStoreRemoved(MtpStorageID id) {
-    ALOGV("sendStoreRemoved %08X\n", id);
-    sendEvent(MTP_EVENT_STORE_REMOVED, id);
-}
-
-void MtpServer::sendEvent(MtpEventCode code, uint32_t param1) {
-    if (mSessionOpen) {
-        mEvent.setEventCode(code);
-        mEvent.setTransactionID(mRequest.getTransactionID());
-        mEvent.setParameter(1, param1);
-        int ret = mEvent.write(mFD);
-        ALOGV("mEvent.write returned %d\n", ret);
-    }
-}
-
-void MtpServer::addEditObject(MtpObjectHandle handle, MtpString& path,
-        uint64_t size, MtpObjectFormat format, int fd) {
-    ObjectEdit*  edit = new ObjectEdit(handle, path, size, format, fd);
-    mObjectEditList.add(edit);
-}
-
-MtpServer::ObjectEdit* MtpServer::getEditObject(MtpObjectHandle handle) {
-    int count = mObjectEditList.size();
-    for (int i = 0; i < count; i++) {
-        ObjectEdit* edit = mObjectEditList[i];
-        if (edit->mHandle == handle) return edit;
-    }
-    return NULL;
-}
-
-void MtpServer::removeEditObject(MtpObjectHandle handle) {
-    int count = mObjectEditList.size();
-    for (int i = 0; i < count; i++) {
-        ObjectEdit* edit = mObjectEditList[i];
-        if (edit->mHandle == handle) {
-            delete edit;
-            mObjectEditList.removeAt(i);
-            return;
-        }
-    }
-    ALOGE("ObjectEdit not found in removeEditObject");
-}
-
-void MtpServer::commitEdit(ObjectEdit* edit) {
-    mDatabase->endSendObject((const char *)edit->mPath, edit->mHandle, edit->mFormat, true);
-}
-
-
-bool MtpServer::handleRequest() {
-    Mutex::Autolock autoLock(mMutex);
-
-    MtpOperationCode operation = mRequest.getOperationCode();
-    MtpResponseCode response;
-
-    mResponse.reset();
-
-    if (mSendObjectHandle != kInvalidObjectHandle && operation != MTP_OPERATION_SEND_OBJECT) {
-        // FIXME - need to delete mSendObjectHandle from the database
-        ALOGE("expected SendObject after SendObjectInfo");
-        mSendObjectHandle = kInvalidObjectHandle;
-    }
-
-    switch (operation) {
-        case MTP_OPERATION_GET_DEVICE_INFO:
-            response = doGetDeviceInfo();
-            break;
-        case MTP_OPERATION_OPEN_SESSION:
-            response = doOpenSession();
-            break;
-        case MTP_OPERATION_CLOSE_SESSION:
-            response = doCloseSession();
-            break;
-        case MTP_OPERATION_GET_STORAGE_IDS:
-            response = doGetStorageIDs();
-            break;
-         case MTP_OPERATION_GET_STORAGE_INFO:
-            response = doGetStorageInfo();
-            break;
-        case MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED:
-            response = doGetObjectPropsSupported();
-            break;
-        case MTP_OPERATION_GET_OBJECT_HANDLES:
-            response = doGetObjectHandles();
-            break;
-        case MTP_OPERATION_GET_NUM_OBJECTS:
-            response = doGetNumObjects();
-            break;
-        case MTP_OPERATION_GET_OBJECT_REFERENCES:
-            response = doGetObjectReferences();
-            break;
-        case MTP_OPERATION_SET_OBJECT_REFERENCES:
-            response = doSetObjectReferences();
-            break;
-        case MTP_OPERATION_GET_OBJECT_PROP_VALUE:
-            response = doGetObjectPropValue();
-            break;
-        case MTP_OPERATION_SET_OBJECT_PROP_VALUE:
-            response = doSetObjectPropValue();
-            break;
-        case MTP_OPERATION_GET_DEVICE_PROP_VALUE:
-            response = doGetDevicePropValue();
-            break;
-        case MTP_OPERATION_SET_DEVICE_PROP_VALUE:
-            response = doSetDevicePropValue();
-            break;
-        case MTP_OPERATION_RESET_DEVICE_PROP_VALUE:
-            response = doResetDevicePropValue();
-            break;
-        case MTP_OPERATION_GET_OBJECT_PROP_LIST:
-            response = doGetObjectPropList();
-            break;
-        case MTP_OPERATION_GET_OBJECT_INFO:
-            response = doGetObjectInfo();
-            break;
-        case MTP_OPERATION_GET_OBJECT:
-            response = doGetObject();
-            break;
-        case MTP_OPERATION_GET_THUMB:
-            response = doGetThumb();
-            break;
-        case MTP_OPERATION_GET_PARTIAL_OBJECT:
-        case MTP_OPERATION_GET_PARTIAL_OBJECT_64:
-            response = doGetPartialObject(operation);
-            break;
-        case MTP_OPERATION_SEND_OBJECT_INFO:
-            response = doSendObjectInfo();
-            break;
-        case MTP_OPERATION_SEND_OBJECT:
-            response = doSendObject();
-            break;
-        case MTP_OPERATION_DELETE_OBJECT:
-            response = doDeleteObject();
-            break;
-        case MTP_OPERATION_GET_OBJECT_PROP_DESC:
-            response = doGetObjectPropDesc();
-            break;
-        case MTP_OPERATION_GET_DEVICE_PROP_DESC:
-            response = doGetDevicePropDesc();
-            break;
-        case MTP_OPERATION_SEND_PARTIAL_OBJECT:
-            response = doSendPartialObject();
-            break;
-        case MTP_OPERATION_TRUNCATE_OBJECT:
-            response = doTruncateObject();
-            break;
-        case MTP_OPERATION_BEGIN_EDIT_OBJECT:
-            response = doBeginEditObject();
-            break;
-        case MTP_OPERATION_END_EDIT_OBJECT:
-            response = doEndEditObject();
-            break;
-        default:
-            ALOGE("got unsupported command %s", MtpDebug::getOperationCodeName(operation));
-            response = MTP_RESPONSE_OPERATION_NOT_SUPPORTED;
-            break;
-    }
-
-    if (response == MTP_RESPONSE_TRANSACTION_CANCELLED)
-        return false;
-    mResponse.setResponseCode(response);
-    return true;
-}
-
-MtpResponseCode MtpServer::doGetDeviceInfo() {
-    MtpStringBuffer   string;
-    char prop_value[PROPERTY_VALUE_MAX];
-
-    MtpObjectFormatList* playbackFormats = mDatabase->getSupportedPlaybackFormats();
-    MtpObjectFormatList* captureFormats = mDatabase->getSupportedCaptureFormats();
-    MtpDevicePropertyList* deviceProperties = mDatabase->getSupportedDeviceProperties();
-
-    // fill in device info
-    mData.putUInt16(MTP_STANDARD_VERSION);
-    if (mPtp) {
-        mData.putUInt32(0);
-    } else {
-        // MTP Vendor Extension ID
-        mData.putUInt32(6);
-    }
-    mData.putUInt16(MTP_STANDARD_VERSION);
-    if (mPtp) {
-        // no extensions
-        string.set("");
-    } else {
-        // MTP extensions
-        string.set("microsoft.com: 1.0; android.com: 1.0;");
-    }
-    mData.putString(string); // MTP Extensions
-    mData.putUInt16(0); //Functional Mode
-    mData.putAUInt16(kSupportedOperationCodes,
-            sizeof(kSupportedOperationCodes) / sizeof(uint16_t)); // Operations Supported
-    mData.putAUInt16(kSupportedEventCodes,
-            sizeof(kSupportedEventCodes) / sizeof(uint16_t)); // Events Supported
-    mData.putAUInt16(deviceProperties); // Device Properties Supported
-    mData.putAUInt16(captureFormats); // Capture Formats
-    mData.putAUInt16(playbackFormats);  // Playback Formats
-
-    property_get("ro.product.manufacturer", prop_value, "unknown manufacturer");
-    string.set(prop_value);
-    mData.putString(string);   // Manufacturer
-
-    property_get("ro.product.model", prop_value, "MTP Device");
-    string.set(prop_value);
-    mData.putString(string);   // Model
-    string.set("1.0");
-    mData.putString(string);   // Device Version
-
-    property_get("ro.serialno", prop_value, "????????");
-    string.set(prop_value);
-    mData.putString(string);   // Serial Number
-
-    delete playbackFormats;
-    delete captureFormats;
-    delete deviceProperties;
-
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doOpenSession() {
-    if (mSessionOpen) {
-        mResponse.setParameter(1, mSessionID);
-        return MTP_RESPONSE_SESSION_ALREADY_OPEN;
-    }
-    mSessionID = mRequest.getParameter(1);
-    mSessionOpen = true;
-
-    mDatabase->sessionStarted();
-
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doCloseSession() {
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-    mSessionID = 0;
-    mSessionOpen = false;
-    mDatabase->sessionEnded();
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doGetStorageIDs() {
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-
-    int count = mStorages.size();
-    mData.putUInt32(count);
-    for (int i = 0; i < count; i++)
-        mData.putUInt32(mStorages[i]->getStorageID());
-
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doGetStorageInfo() {
-    MtpStringBuffer   string;
-
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-    MtpStorageID id = mRequest.getParameter(1);
-    MtpStorage* storage = getStorage(id);
-    if (!storage)
-        return MTP_RESPONSE_INVALID_STORAGE_ID;
-
-    mData.putUInt16(storage->getType());
-    mData.putUInt16(storage->getFileSystemType());
-    mData.putUInt16(storage->getAccessCapability());
-    mData.putUInt64(storage->getMaxCapacity());
-    mData.putUInt64(storage->getFreeSpace());
-    mData.putUInt32(1024*1024*1024); // Free Space in Objects
-    string.set(storage->getDescription());
-    mData.putString(string);
-    mData.putEmptyString();   // Volume Identifier
-
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doGetObjectPropsSupported() {
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-    MtpObjectFormat format = mRequest.getParameter(1);
-    MtpObjectPropertyList* properties = mDatabase->getSupportedObjectProperties(format);
-    mData.putAUInt16(properties);
-    delete properties;
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doGetObjectHandles() {
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-    MtpStorageID storageID = mRequest.getParameter(1);      // 0xFFFFFFFF for all storage
-    MtpObjectFormat format = mRequest.getParameter(2);      // 0 for all formats
-    MtpObjectHandle parent = mRequest.getParameter(3);      // 0xFFFFFFFF for objects with no parent
-                                                            // 0x00000000 for all objects
-
-    if (!hasStorage(storageID))
-        return MTP_RESPONSE_INVALID_STORAGE_ID;
-
-    MtpObjectHandleList* handles = mDatabase->getObjectList(storageID, format, parent);
-    mData.putAUInt32(handles);
-    delete handles;
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doGetNumObjects() {
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-    MtpStorageID storageID = mRequest.getParameter(1);      // 0xFFFFFFFF for all storage
-    MtpObjectFormat format = mRequest.getParameter(2);      // 0 for all formats
-    MtpObjectHandle parent = mRequest.getParameter(3);      // 0xFFFFFFFF for objects with no parent
-                                                            // 0x00000000 for all objects
-    if (!hasStorage(storageID))
-        return MTP_RESPONSE_INVALID_STORAGE_ID;
-
-    int count = mDatabase->getNumObjects(storageID, format, parent);
-    if (count >= 0) {
-        mResponse.setParameter(1, count);
-        return MTP_RESPONSE_OK;
-    } else {
-        mResponse.setParameter(1, 0);
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    }
-}
-
-MtpResponseCode MtpServer::doGetObjectReferences() {
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-
-    // FIXME - check for invalid object handle
-    MtpObjectHandleList* handles = mDatabase->getObjectReferences(handle);
-    if (handles) {
-        mData.putAUInt32(handles);
-        delete handles;
-    } else {
-        mData.putEmptyArray();
-    }
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doSetObjectReferences() {
-    if (!mSessionOpen)
-        return MTP_RESPONSE_SESSION_NOT_OPEN;
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpStorageID handle = mRequest.getParameter(1);
-
-    MtpObjectHandleList* references = mData.getAUInt32();
-    MtpResponseCode result = mDatabase->setObjectReferences(handle, references);
-    delete references;
-    return result;
-}
-
-MtpResponseCode MtpServer::doGetObjectPropValue() {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    MtpObjectProperty property = mRequest.getParameter(2);
-    ALOGV("GetObjectPropValue %d %s\n", handle,
-            MtpDebug::getObjectPropCodeName(property));
-
-    return mDatabase->getObjectPropertyValue(handle, property, mData);
-}
-
-MtpResponseCode MtpServer::doSetObjectPropValue() {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    MtpObjectProperty property = mRequest.getParameter(2);
-    ALOGV("SetObjectPropValue %d %s\n", handle,
-            MtpDebug::getObjectPropCodeName(property));
-
-    return mDatabase->setObjectPropertyValue(handle, property, mData);
-}
-
-MtpResponseCode MtpServer::doGetDevicePropValue() {
-    MtpDeviceProperty property = mRequest.getParameter(1);
-    ALOGV("GetDevicePropValue %s\n",
-            MtpDebug::getDevicePropCodeName(property));
-
-    return mDatabase->getDevicePropertyValue(property, mData);
-}
-
-MtpResponseCode MtpServer::doSetDevicePropValue() {
-    MtpDeviceProperty property = mRequest.getParameter(1);
-    ALOGV("SetDevicePropValue %s\n",
-            MtpDebug::getDevicePropCodeName(property));
-
-    return mDatabase->setDevicePropertyValue(property, mData);
-}
-
-MtpResponseCode MtpServer::doResetDevicePropValue() {
-    MtpDeviceProperty property = mRequest.getParameter(1);
-    ALOGV("ResetDevicePropValue %s\n",
-            MtpDebug::getDevicePropCodeName(property));
-
-    return mDatabase->resetDeviceProperty(property);
-}
-
-MtpResponseCode MtpServer::doGetObjectPropList() {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    // use uint32_t so we can support 0xFFFFFFFF
-    uint32_t format = mRequest.getParameter(2);
-    uint32_t property = mRequest.getParameter(3);
-    int groupCode = mRequest.getParameter(4);
-    int depth = mRequest.getParameter(5);
-   ALOGV("GetObjectPropList %d format: %s property: %s group: %d depth: %d\n",
-            handle, MtpDebug::getFormatCodeName(format),
-            MtpDebug::getObjectPropCodeName(property), groupCode, depth);
-
-    return mDatabase->getObjectPropertyList(handle, format, property, groupCode, depth, mData);
-}
-
-MtpResponseCode MtpServer::doGetObjectInfo() {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    MtpObjectInfo info(handle);
-    MtpResponseCode result = mDatabase->getObjectInfo(handle, info);
-    if (result == MTP_RESPONSE_OK) {
-        char    date[20];
-
-        mData.putUInt32(info.mStorageID);
-        mData.putUInt16(info.mFormat);
-        mData.putUInt16(info.mProtectionStatus);
-
-        // if object is being edited the database size may be out of date
-        uint32_t size = info.mCompressedSize;
-        ObjectEdit* edit = getEditObject(handle);
-        if (edit)
-            size = (edit->mSize > 0xFFFFFFFFLL ? 0xFFFFFFFF : (uint32_t)edit->mSize);
-        mData.putUInt32(size);
-
-        mData.putUInt16(info.mThumbFormat);
-        mData.putUInt32(info.mThumbCompressedSize);
-        mData.putUInt32(info.mThumbPixWidth);
-        mData.putUInt32(info.mThumbPixHeight);
-        mData.putUInt32(info.mImagePixWidth);
-        mData.putUInt32(info.mImagePixHeight);
-        mData.putUInt32(info.mImagePixDepth);
-        mData.putUInt32(info.mParent);
-        mData.putUInt16(info.mAssociationType);
-        mData.putUInt32(info.mAssociationDesc);
-        mData.putUInt32(info.mSequenceNumber);
-        mData.putString(info.mName);
-        mData.putEmptyString();    // date created
-        formatDateTime(info.mDateModified, date, sizeof(date));
-        mData.putString(date);   // date modified
-        mData.putEmptyString();   // keywords
-    }
-    return result;
-}
-
-MtpResponseCode MtpServer::doGetObject() {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    MtpString pathBuf;
-    int64_t fileLength;
-    MtpObjectFormat format;
-    int result = mDatabase->getObjectFilePath(handle, pathBuf, fileLength, format);
-    if (result != MTP_RESPONSE_OK)
-        return result;
-
-    const char* filePath = (const char *)pathBuf;
-    mtp_file_range  mfr;
-    mfr.fd = open(filePath, O_RDONLY);
-    if (mfr.fd < 0) {
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-    mfr.offset = 0;
-    mfr.length = fileLength;
-    mfr.command = mRequest.getOperationCode();
-    mfr.transaction_id = mRequest.getTransactionID();
-
-    // then transfer the file
-    int ret = ioctl(mFD, MTP_SEND_FILE_WITH_HEADER, (unsigned long)&mfr);
-    ALOGV("MTP_SEND_FILE_WITH_HEADER returned %d\n", ret);
-    close(mfr.fd);
-    if (ret < 0) {
-        if (errno == ECANCELED)
-            return MTP_RESPONSE_TRANSACTION_CANCELLED;
-        else
-            return MTP_RESPONSE_GENERAL_ERROR;
-    }
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doGetThumb() {
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    size_t thumbSize;
-    void* thumb = mDatabase->getThumbnail(handle, thumbSize);
-    if (thumb) {
-        // send data
-        mData.setOperationCode(mRequest.getOperationCode());
-        mData.setTransactionID(mRequest.getTransactionID());
-        mData.writeData(mFD, thumb, thumbSize);
-        free(thumb);
-        return MTP_RESPONSE_OK;
-    } else {
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-}
-
-MtpResponseCode MtpServer::doGetPartialObject(MtpOperationCode operation) {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    uint64_t offset;
-    uint32_t length;
-    offset = mRequest.getParameter(2);
-    if (operation == MTP_OPERATION_GET_PARTIAL_OBJECT_64) {
-        // android extension with 64 bit offset
-        uint64_t offset2 = mRequest.getParameter(3);
-        offset = offset | (offset2 << 32);
-        length = mRequest.getParameter(4);
-    } else {
-        // standard GetPartialObject
-        length = mRequest.getParameter(3);
-    }
-    MtpString pathBuf;
-    int64_t fileLength;
-    MtpObjectFormat format;
-    int result = mDatabase->getObjectFilePath(handle, pathBuf, fileLength, format);
-    if (result != MTP_RESPONSE_OK)
-        return result;
-    if (offset + length > fileLength)
-        length = fileLength - offset;
-
-    const char* filePath = (const char *)pathBuf;
-    mtp_file_range  mfr;
-    mfr.fd = open(filePath, O_RDONLY);
-    if (mfr.fd < 0) {
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-    mfr.offset = offset;
-    mfr.length = length;
-    mfr.command = mRequest.getOperationCode();
-    mfr.transaction_id = mRequest.getTransactionID();
-    mResponse.setParameter(1, length);
-
-    // transfer the file
-    int ret = ioctl(mFD, MTP_SEND_FILE_WITH_HEADER, (unsigned long)&mfr);
-    ALOGV("MTP_SEND_FILE_WITH_HEADER returned %d\n", ret);
-    close(mfr.fd);
-    if (ret < 0) {
-        if (errno == ECANCELED)
-            return MTP_RESPONSE_TRANSACTION_CANCELLED;
-        else
-            return MTP_RESPONSE_GENERAL_ERROR;
-    }
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doSendObjectInfo() {
-    MtpString path;
-    MtpStorageID storageID = mRequest.getParameter(1);
-    MtpStorage* storage = getStorage(storageID);
-    MtpObjectHandle parent = mRequest.getParameter(2);
-    if (!storage)
-        return MTP_RESPONSE_INVALID_STORAGE_ID;
-
-    // special case the root
-    if (parent == MTP_PARENT_ROOT) {
-        path = storage->getPath();
-        parent = 0;
-    } else {
-        int64_t length;
-        MtpObjectFormat format;
-        int result = mDatabase->getObjectFilePath(parent, path, length, format);
-        if (result != MTP_RESPONSE_OK)
-            return result;
-        if (format != MTP_FORMAT_ASSOCIATION)
-            return MTP_RESPONSE_INVALID_PARENT_OBJECT;
-    }
-
-    // read only the fields we need
-    mData.getUInt32();  // storage ID
-    MtpObjectFormat format = mData.getUInt16();
-    mData.getUInt16();  // protection status
-    mSendObjectFileSize = mData.getUInt32();
-    mData.getUInt16();  // thumb format
-    mData.getUInt32();  // thumb compressed size
-    mData.getUInt32();  // thumb pix width
-    mData.getUInt32();  // thumb pix height
-    mData.getUInt32();  // image pix width
-    mData.getUInt32();  // image pix height
-    mData.getUInt32();  // image bit depth
-    mData.getUInt32();  // parent
-    uint16_t associationType = mData.getUInt16();
-    uint32_t associationDesc = mData.getUInt32();   // association desc
-    mData.getUInt32();  // sequence number
-    MtpStringBuffer name, created, modified;
-    mData.getString(name);    // file name
-    mData.getString(created);      // date created
-    mData.getString(modified);     // date modified
-    // keywords follow
-
-    ALOGV("name: %s format: %04X\n", (const char *)name, format);
-    time_t modifiedTime;
-    if (!parseDateTime(modified, modifiedTime))
-        modifiedTime = 0;
-
-    if (path[path.size() - 1] != '/')
-        path += "/";
-    path += (const char *)name;
-
-    // check space first
-    if (mSendObjectFileSize > storage->getFreeSpace())
-        return MTP_RESPONSE_STORAGE_FULL;
-    uint64_t maxFileSize = storage->getMaxFileSize();
-    // check storage max file size
-    if (maxFileSize != 0) {
-        // if mSendObjectFileSize is 0xFFFFFFFF, then all we know is the file size
-        // is >= 0xFFFFFFFF
-        if (mSendObjectFileSize > maxFileSize || mSendObjectFileSize == 0xFFFFFFFF)
-            return MTP_RESPONSE_OBJECT_TOO_LARGE;
-    }
-
-    ALOGD("path: %s parent: %d storageID: %08X", (const char*)path, parent, storageID);
-    MtpObjectHandle handle = mDatabase->beginSendObject((const char*)path,
-            format, parent, storageID, mSendObjectFileSize, modifiedTime);
-    if (handle == kInvalidObjectHandle) {
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-  if (format == MTP_FORMAT_ASSOCIATION) {
-        mode_t mask = umask(0);
-        int ret = mkdir((const char *)path, mDirectoryPermission);
-        umask(mask);
-        if (ret && ret != -EEXIST)
-            return MTP_RESPONSE_GENERAL_ERROR;
-        chown((const char *)path, getuid(), mFileGroup);
-
-        // SendObject does not get sent for directories, so call endSendObject here instead
-        mDatabase->endSendObject(path, handle, MTP_FORMAT_ASSOCIATION, MTP_RESPONSE_OK);
-    } else {
-        mSendObjectFilePath = path;
-        // save the handle for the SendObject call, which should follow
-        mSendObjectHandle = handle;
-        mSendObjectFormat = format;
-    }
-
-    mResponse.setParameter(1, storageID);
-    mResponse.setParameter(2, parent);
-    mResponse.setParameter(3, handle);
-
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doSendObject() {
-    if (!hasStorage())
-        return MTP_RESPONSE_GENERAL_ERROR;
-    MtpResponseCode result = MTP_RESPONSE_OK;
-    mode_t mask;
-    int ret, initialData;
-
-    if (mSendObjectHandle == kInvalidObjectHandle) {
-        ALOGE("Expected SendObjectInfo before SendObject");
-        result = MTP_RESPONSE_NO_VALID_OBJECT_INFO;
-        goto done;
-    }
-
-    // read the header, and possibly some data
-    ret = mData.read(mFD);
-    if (ret < MTP_CONTAINER_HEADER_SIZE) {
-        result = MTP_RESPONSE_GENERAL_ERROR;
-        goto done;
-    }
-    initialData = ret - MTP_CONTAINER_HEADER_SIZE;
-
-    mtp_file_range  mfr;
-    mfr.fd = open(mSendObjectFilePath, O_RDWR | O_CREAT | O_TRUNC);
-    if (mfr.fd < 0) {
-        result = MTP_RESPONSE_GENERAL_ERROR;
-        goto done;
-    }
-    fchown(mfr.fd, getuid(), mFileGroup);
-    // set permissions
-    mask = umask(0);
-    fchmod(mfr.fd, mFilePermission);
-    umask(mask);
-
-    if (initialData > 0)
-        ret = write(mfr.fd, mData.getData(), initialData);
-
-    if (mSendObjectFileSize - initialData > 0) {
-        mfr.offset = initialData;
-        if (mSendObjectFileSize == 0xFFFFFFFF) {
-            // tell driver to read until it receives a short packet
-            mfr.length = 0xFFFFFFFF;
-        } else {
-            mfr.length = mSendObjectFileSize - initialData;
-        }
-
-        ALOGV("receiving %s\n", (const char *)mSendObjectFilePath);
-        // transfer the file
-        ret = ioctl(mFD, MTP_RECEIVE_FILE, (unsigned long)&mfr);
-        ALOGV("MTP_RECEIVE_FILE returned %d\n", ret);
-    }
-    close(mfr.fd);
-
-    if (ret < 0) {
-        unlink(mSendObjectFilePath);
-        if (errno == ECANCELED)
-            result = MTP_RESPONSE_TRANSACTION_CANCELLED;
-        else
-            result = MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-done:
-    // reset so we don't attempt to send the data back
-    mData.reset();
-
-    mDatabase->endSendObject(mSendObjectFilePath, mSendObjectHandle, mSendObjectFormat,
-            result == MTP_RESPONSE_OK);
-    mSendObjectHandle = kInvalidObjectHandle;
-    mSendObjectFormat = 0;
-    return result;
-}
-
-static void deleteRecursive(const char* path) {
-    char pathbuf[PATH_MAX];
-    int pathLength = strlen(path);
-    if (pathLength >= sizeof(pathbuf) - 1) {
-        ALOGE("path too long: %s\n", path);
-    }
-    strcpy(pathbuf, path);
-    if (pathbuf[pathLength - 1] != '/') {
-        pathbuf[pathLength++] = '/';
-    }
-    char* fileSpot = pathbuf + pathLength;
-    int pathRemaining = sizeof(pathbuf) - pathLength - 1;
-
-    DIR* dir = opendir(path);
-    if (!dir) {
-        ALOGE("opendir %s failed: %s", path, strerror(errno));
-        return;
-    }
-
-    struct dirent* entry;
-    while ((entry = readdir(dir))) {
-        const char* name = entry->d_name;
-
-        // ignore "." and ".."
-        if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0))) {
-            continue;
-        }
-
-        int nameLength = strlen(name);
-        if (nameLength > pathRemaining) {
-            ALOGE("path %s/%s too long\n", path, name);
-            continue;
-        }
-        strcpy(fileSpot, name);
-
-        int type = entry->d_type;
-        if (entry->d_type == DT_DIR) {
-            deleteRecursive(pathbuf);
-            rmdir(pathbuf);
-        } else {
-            unlink(pathbuf);
-        }
-    }
-    closedir(dir);
-}
-
-static void deletePath(const char* path) {
-    struct stat statbuf;
-    if (stat(path, &statbuf) == 0) {
-        if (S_ISDIR(statbuf.st_mode)) {
-            deleteRecursive(path);
-            rmdir(path);
-        } else {
-            unlink(path);
-        }
-    } else {
-        ALOGE("deletePath stat failed for %s: %s", path, strerror(errno));
-    }
-}
-
-MtpResponseCode MtpServer::doDeleteObject() {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    MtpObjectFormat format = mRequest.getParameter(2);
-    // FIXME - support deleting all objects if handle is 0xFFFFFFFF
-    // FIXME - implement deleting objects by format
-
-    MtpString filePath;
-    int64_t fileLength;
-    int result = mDatabase->getObjectFilePath(handle, filePath, fileLength, format);
-    if (result == MTP_RESPONSE_OK) {
-        ALOGV("deleting %s", (const char *)filePath);
-        result = mDatabase->deleteFile(handle);
-        // Don't delete the actual files unless the database deletion is allowed
-        if (result == MTP_RESPONSE_OK) {
-            deletePath((const char *)filePath);
-        }
-    }
-
-    return result;
-}
-
-MtpResponseCode MtpServer::doGetObjectPropDesc() {
-    MtpObjectProperty propCode = mRequest.getParameter(1);
-    MtpObjectFormat format = mRequest.getParameter(2);
-    ALOGV("GetObjectPropDesc %s %s\n", MtpDebug::getObjectPropCodeName(propCode),
-                                        MtpDebug::getFormatCodeName(format));
-    MtpProperty* property = mDatabase->getObjectPropertyDesc(propCode, format);
-    if (!property)
-        return MTP_RESPONSE_OBJECT_PROP_NOT_SUPPORTED;
-    property->write(mData);
-    delete property;
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doGetDevicePropDesc() {
-    MtpDeviceProperty propCode = mRequest.getParameter(1);
-    ALOGV("GetDevicePropDesc %s\n", MtpDebug::getDevicePropCodeName(propCode));
-    MtpProperty* property = mDatabase->getDevicePropertyDesc(propCode);
-    if (!property)
-        return MTP_RESPONSE_DEVICE_PROP_NOT_SUPPORTED;
-    property->write(mData);
-    delete property;
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doSendPartialObject() {
-    if (!hasStorage())
-        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    uint64_t offset = mRequest.getParameter(2);
-    uint64_t offset2 = mRequest.getParameter(3);
-    offset = offset | (offset2 << 32);
-    uint32_t length = mRequest.getParameter(4);
-
-    ObjectEdit* edit = getEditObject(handle);
-    if (!edit) {
-        ALOGE("object not open for edit in doSendPartialObject");
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-    // can't start writing past the end of the file
-    if (offset > edit->mSize) {
-        ALOGD("writing past end of object, offset: %lld, edit->mSize: %lld", offset, edit->mSize);
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-    const char* filePath = (const char *)edit->mPath;
-    ALOGV("receiving partial %s %lld %lld\n", filePath, offset, length);
-
-    // read the header, and possibly some data
-    int ret = mData.read(mFD);
-    if (ret < MTP_CONTAINER_HEADER_SIZE)
-        return MTP_RESPONSE_GENERAL_ERROR;
-    int initialData = ret - MTP_CONTAINER_HEADER_SIZE;
-
-    if (initialData > 0) {
-        ret = write(edit->mFD, mData.getData(), initialData);
-        offset += initialData;
-        length -= initialData;
-    }
-
-    if (length > 0) {
-        mtp_file_range  mfr;
-        mfr.fd = edit->mFD;
-        mfr.offset = offset;
-        mfr.length = length;
-
-        // transfer the file
-        ret = ioctl(mFD, MTP_RECEIVE_FILE, (unsigned long)&mfr);
-        ALOGV("MTP_RECEIVE_FILE returned %d", ret);
-    }
-    if (ret < 0) {
-        mResponse.setParameter(1, 0);
-        if (errno == ECANCELED)
-            return MTP_RESPONSE_TRANSACTION_CANCELLED;
-        else
-            return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-    // reset so we don't attempt to send this back
-    mData.reset();
-    mResponse.setParameter(1, length);
-    uint64_t end = offset + length;
-    if (end > edit->mSize) {
-        edit->mSize = end;
-    }
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doTruncateObject() {
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    ObjectEdit* edit = getEditObject(handle);
-    if (!edit) {
-        ALOGE("object not open for edit in doTruncateObject");
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-    uint64_t offset = mRequest.getParameter(2);
-    uint64_t offset2 = mRequest.getParameter(3);
-    offset |= (offset2 << 32);
-    if (ftruncate(edit->mFD, offset) != 0) {
-        return MTP_RESPONSE_GENERAL_ERROR;
-    } else {
-        edit->mSize = offset;
-        return MTP_RESPONSE_OK;
-    }
-}
-
-MtpResponseCode MtpServer::doBeginEditObject() {
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    if (getEditObject(handle)) {
-        ALOGE("object already open for edit in doBeginEditObject");
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-    MtpString path;
-    int64_t fileLength;
-    MtpObjectFormat format;
-    int result = mDatabase->getObjectFilePath(handle, path, fileLength, format);
-    if (result != MTP_RESPONSE_OK)
-        return result;
-
-    int fd = open((const char *)path, O_RDWR | O_EXCL);
-    if (fd < 0) {
-        ALOGE("open failed for %s in doBeginEditObject (%d)", (const char *)path, errno);
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-    addEditObject(handle, path, fileLength, format, fd);
-    return MTP_RESPONSE_OK;
-}
-
-MtpResponseCode MtpServer::doEndEditObject() {
-    MtpObjectHandle handle = mRequest.getParameter(1);
-    ObjectEdit* edit = getEditObject(handle);
-    if (!edit) {
-        ALOGE("object not open for edit in doEndEditObject");
-        return MTP_RESPONSE_GENERAL_ERROR;
-    }
-
-    commitEdit(edit);
-    removeEditObject(handle);
-    return MTP_RESPONSE_OK;
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpServer.h b/media/mtp/MtpServer.h
deleted file mode 100644
index dfa8258..0000000
--- a/media/mtp/MtpServer.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_SERVER_H
-#define _MTP_SERVER_H
-
-#include "MtpRequestPacket.h"
-#include "MtpDataPacket.h"
-#include "MtpResponsePacket.h"
-#include "MtpEventPacket.h"
-#include "mtp.h"
-#include "MtpUtils.h"
-
-#include <utils/threads.h>
-
-namespace android {
-
-class MtpDatabase;
-class MtpStorage;
-
-class MtpServer {
-
-private:
-    // file descriptor for MTP kernel driver
-    int                 mFD;
-
-    MtpDatabase*        mDatabase;
-
-    // appear as a PTP device
-    bool                mPtp;
-
-    // group to own new files and folders
-    int                 mFileGroup;
-    // permissions for new files and directories
-    int                 mFilePermission;
-    int                 mDirectoryPermission;
-
-    // current session ID
-    MtpSessionID        mSessionID;
-    // true if we have an open session and mSessionID is valid
-    bool                mSessionOpen;
-
-    MtpRequestPacket    mRequest;
-    MtpDataPacket       mData;
-    MtpResponsePacket   mResponse;
-    MtpEventPacket      mEvent;
-
-    MtpStorageList      mStorages;
-
-    // handle for new object, set by SendObjectInfo and used by SendObject
-    MtpObjectHandle     mSendObjectHandle;
-    MtpObjectFormat     mSendObjectFormat;
-    MtpString           mSendObjectFilePath;
-    size_t              mSendObjectFileSize;
-
-    Mutex               mMutex;
-
-    // represents an MTP object that is being edited using the android extensions
-    // for direct editing (BeginEditObject, SendPartialObject, TruncateObject and EndEditObject)
-    class ObjectEdit {
-        public:
-        MtpObjectHandle     mHandle;
-        MtpString           mPath;
-        uint64_t            mSize;
-        MtpObjectFormat     mFormat;
-        int                 mFD;
-
-        ObjectEdit(MtpObjectHandle handle, const char* path, uint64_t size,
-            MtpObjectFormat format, int fd)
-                : mHandle(handle), mPath(path), mSize(size), mFormat(format), mFD(fd) {
-            }
-
-        virtual ~ObjectEdit() {
-            close(mFD);
-        }
-    };
-    Vector<ObjectEdit*>  mObjectEditList;
-
-public:
-                        MtpServer(int fd, MtpDatabase* database, bool ptp,
-                                    int fileGroup, int filePerm, int directoryPerm);
-    virtual             ~MtpServer();
-
-    MtpStorage*         getStorage(MtpStorageID id);
-    inline bool         hasStorage() { return mStorages.size() > 0; }
-    bool                hasStorage(MtpStorageID id);
-    void                addStorage(MtpStorage* storage);
-    void                removeStorage(MtpStorage* storage);
-
-    void                run();
-
-    void                sendObjectAdded(MtpObjectHandle handle);
-    void                sendObjectRemoved(MtpObjectHandle handle);
-
-private:
-    void                sendStoreAdded(MtpStorageID id);
-    void                sendStoreRemoved(MtpStorageID id);
-    void                sendEvent(MtpEventCode code, uint32_t param1);
-
-    void                addEditObject(MtpObjectHandle handle, MtpString& path,
-                                uint64_t size, MtpObjectFormat format, int fd);
-    ObjectEdit*         getEditObject(MtpObjectHandle handle);
-    void                removeEditObject(MtpObjectHandle handle);
-    void                commitEdit(ObjectEdit* edit);
-
-    bool                handleRequest();
-
-    MtpResponseCode     doGetDeviceInfo();
-    MtpResponseCode     doOpenSession();
-    MtpResponseCode     doCloseSession();
-    MtpResponseCode     doGetStorageIDs();
-    MtpResponseCode     doGetStorageInfo();
-    MtpResponseCode     doGetObjectPropsSupported();
-    MtpResponseCode     doGetObjectHandles();
-    MtpResponseCode     doGetNumObjects();
-    MtpResponseCode     doGetObjectReferences();
-    MtpResponseCode     doSetObjectReferences();
-    MtpResponseCode     doGetObjectPropValue();
-    MtpResponseCode     doSetObjectPropValue();
-    MtpResponseCode     doGetDevicePropValue();
-    MtpResponseCode     doSetDevicePropValue();
-    MtpResponseCode     doResetDevicePropValue();
-    MtpResponseCode     doGetObjectPropList();
-    MtpResponseCode     doGetObjectInfo();
-    MtpResponseCode     doGetObject();
-    MtpResponseCode     doGetThumb();
-    MtpResponseCode     doGetPartialObject(MtpOperationCode operation);
-    MtpResponseCode     doSendObjectInfo();
-    MtpResponseCode     doSendObject();
-    MtpResponseCode     doDeleteObject();
-    MtpResponseCode     doGetObjectPropDesc();
-    MtpResponseCode     doGetDevicePropDesc();
-    MtpResponseCode     doSendPartialObject();
-    MtpResponseCode     doTruncateObject();
-    MtpResponseCode     doBeginEditObject();
-    MtpResponseCode     doEndEditObject();
-};
-
-}; // namespace android
-
-#endif // _MTP_SERVER_H
diff --git a/media/mtp/MtpStorage.cpp b/media/mtp/MtpStorage.cpp
deleted file mode 100644
index d77ca72..0000000
--- a/media/mtp/MtpStorage.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpStorage"
-
-#include "MtpDebug.h"
-#include "MtpDatabase.h"
-#include "MtpStorage.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/statfs.h>
-#include <unistd.h>
-#include <dirent.h>
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-#include <limits.h>
-
-namespace android {
-
-MtpStorage::MtpStorage(MtpStorageID id, const char* filePath,
-        const char* description, uint64_t reserveSpace,
-        bool removable, uint64_t maxFileSize)
-    :   mStorageID(id),
-        mFilePath(filePath),
-        mDescription(description),
-        mMaxCapacity(0),
-        mMaxFileSize(maxFileSize),
-        mReserveSpace(reserveSpace),
-        mRemovable(removable)
-{
-    ALOGV("MtpStorage id: %d path: %s\n", id, filePath);
-}
-
-MtpStorage::~MtpStorage() {
-}
-
-int MtpStorage::getType() const {
-    return (mRemovable ? MTP_STORAGE_REMOVABLE_RAM :  MTP_STORAGE_FIXED_RAM);
-}
-
-int MtpStorage::getFileSystemType() const {
-    return MTP_STORAGE_FILESYSTEM_HIERARCHICAL;
-}
-
-int MtpStorage::getAccessCapability() const {
-    return MTP_STORAGE_READ_WRITE;
-}
-
-uint64_t MtpStorage::getMaxCapacity() {
-    if (mMaxCapacity == 0) {
-        struct statfs   stat;
-        if (statfs(getPath(), &stat))
-            return -1;
-        mMaxCapacity = (uint64_t)stat.f_blocks * (uint64_t)stat.f_bsize;
-    }
-    return mMaxCapacity;
-}
-
-uint64_t MtpStorage::getFreeSpace() {
-    struct statfs   stat;
-    if (statfs(getPath(), &stat))
-        return -1;
-    uint64_t freeSpace = (uint64_t)stat.f_bavail * (uint64_t)stat.f_bsize;
-    return (freeSpace > mReserveSpace ? freeSpace - mReserveSpace : 0);
-}
-
-const char* MtpStorage::getDescription() const {
-    return (const char *)mDescription;
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpStorage.h b/media/mtp/MtpStorage.h
deleted file mode 100644
index e5a2e57..0000000
--- a/media/mtp/MtpStorage.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_STORAGE_H
-#define _MTP_STORAGE_H
-
-#include "MtpTypes.h"
-#include "mtp.h"
-
-namespace android {
-
-class MtpDatabase;
-
-class MtpStorage {
-
-private:
-    MtpStorageID            mStorageID;
-    MtpString               mFilePath;
-    MtpString               mDescription;
-    uint64_t                mMaxCapacity;
-    uint64_t                mMaxFileSize;
-    // amount of free space to leave unallocated
-    uint64_t                mReserveSpace;
-    bool                    mRemovable;
-
-public:
-                            MtpStorage(MtpStorageID id, const char* filePath,
-                                    const char* description, uint64_t reserveSpace,
-                                    bool removable, uint64_t maxFileSize);
-    virtual                 ~MtpStorage();
-
-    inline MtpStorageID     getStorageID() const { return mStorageID; }
-    int                     getType() const;
-    int                     getFileSystemType() const;
-    int                     getAccessCapability() const;
-    uint64_t                getMaxCapacity();
-    uint64_t                getFreeSpace();
-    const char*             getDescription() const;
-    inline const char*      getPath() const { return (const char *)mFilePath; }
-    inline bool             isRemovable() const { return mRemovable; }
-    inline uint64_t         getMaxFileSize() const { return mMaxFileSize; }
-};
-
-}; // namespace android
-
-#endif // _MTP_STORAGE_H
diff --git a/media/mtp/MtpStorageInfo.cpp b/media/mtp/MtpStorageInfo.cpp
deleted file mode 100644
index dcd37cd..0000000
--- a/media/mtp/MtpStorageInfo.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpStorageInfo"
-
-#include "MtpDebug.h"
-#include "MtpDataPacket.h"
-#include "MtpStorageInfo.h"
-#include "MtpStringBuffer.h"
-
-namespace android {
-
-MtpStorageInfo::MtpStorageInfo(MtpStorageID id)
-    :   mStorageID(id),
-        mStorageType(0),
-        mFileSystemType(0),
-        mAccessCapability(0),
-        mMaxCapacity(0),
-        mFreeSpaceBytes(0),
-        mFreeSpaceObjects(0),
-        mStorageDescription(NULL),
-        mVolumeIdentifier(NULL)
-{
-}
-
-MtpStorageInfo::~MtpStorageInfo() {
-    if (mStorageDescription)
-        free(mStorageDescription);
-    if (mVolumeIdentifier)
-        free(mVolumeIdentifier);
-}
-
-void MtpStorageInfo::read(MtpDataPacket& packet) {
-    MtpStringBuffer string;
-
-    // read the device info
-    mStorageType = packet.getUInt16();
-    mFileSystemType = packet.getUInt16();
-    mAccessCapability = packet.getUInt16();
-    mMaxCapacity = packet.getUInt64();
-    mFreeSpaceBytes = packet.getUInt64();
-    mFreeSpaceObjects = packet.getUInt32();
-
-    packet.getString(string);
-    mStorageDescription = strdup((const char *)string);
-    packet.getString(string);
-    mVolumeIdentifier = strdup((const char *)string);
-}
-
-void MtpStorageInfo::print() {
-    ALOGD("Storage Info %08X:\n\tmStorageType: %d\n\tmFileSystemType: %d\n\tmAccessCapability: %d\n",
-            mStorageID, mStorageType, mFileSystemType, mAccessCapability);
-    ALOGD("\tmMaxCapacity: %lld\n\tmFreeSpaceBytes: %lld\n\tmFreeSpaceObjects: %d\n",
-            mMaxCapacity, mFreeSpaceBytes, mFreeSpaceObjects);
-    ALOGD("\tmStorageDescription: %s\n\tmVolumeIdentifier: %s\n",
-            mStorageDescription, mVolumeIdentifier);
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpStorageInfo.h b/media/mtp/MtpStorageInfo.h
deleted file mode 100644
index 2cb626e..0000000
--- a/media/mtp/MtpStorageInfo.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_STORAGE_INFO_H
-#define _MTP_STORAGE_INFO_H
-
-#include "MtpTypes.h"
-
-namespace android {
-
-class MtpDataPacket;
-
-class MtpStorageInfo {
-public:
-    MtpStorageID        mStorageID;
-    uint16_t            mStorageType;
-    uint16_t            mFileSystemType;
-    uint16_t            mAccessCapability;
-    uint64_t            mMaxCapacity;
-    uint64_t            mFreeSpaceBytes;
-    uint32_t            mFreeSpaceObjects;
-    char*               mStorageDescription;
-    char*               mVolumeIdentifier;
-
-public:
-                        MtpStorageInfo(MtpStorageID id);
-    virtual             ~MtpStorageInfo();
-
-    void                read(MtpDataPacket& packet);
-
-    void                print();
-};
-
-}; // namespace android
-
-#endif // _MTP_STORAGE_INFO_H
diff --git a/media/mtp/MtpStringBuffer.cpp b/media/mtp/MtpStringBuffer.cpp
deleted file mode 100644
index fe8cf04..0000000
--- a/media/mtp/MtpStringBuffer.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpStringBuffer"
-
-#include <string.h>
-
-#include "MtpDataPacket.h"
-#include "MtpStringBuffer.h"
-
-namespace android {
-
-MtpStringBuffer::MtpStringBuffer()
-    :   mCharCount(0),
-        mByteCount(1)
-{
-    mBuffer[0] = 0;
-}
-
-MtpStringBuffer::MtpStringBuffer(const char* src)
-    :   mCharCount(0),
-        mByteCount(1)
-{
-    set(src);
-}
-
-MtpStringBuffer::MtpStringBuffer(const uint16_t* src)
-    :   mCharCount(0),
-        mByteCount(1)
-{
-    set(src);
-}
-
-MtpStringBuffer::MtpStringBuffer(const MtpStringBuffer& src)
-    :   mCharCount(src.mCharCount),
-        mByteCount(src.mByteCount)
-{
-    memcpy(mBuffer, src.mBuffer, mByteCount);
-}
-
-
-MtpStringBuffer::~MtpStringBuffer() {
-}
-
-void MtpStringBuffer::set(const char* src) {
-    int length = strlen(src);
-    if (length >= sizeof(mBuffer))
-        length = sizeof(mBuffer) - 1;
-    memcpy(mBuffer, src, length);
-
-    // count the characters
-    int count = 0;
-    char ch;
-    while ((ch = *src++) != 0) {
-        if ((ch & 0x80) == 0) {
-            // single byte character
-        } else if ((ch & 0xE0) == 0xC0) {
-            // two byte character
-            if (! *src++) {
-                // last character was truncated, so ignore last byte
-                length--;
-                break;
-            }
-        } else if ((ch & 0xF0) == 0xE0) {
-            // 3 byte char
-            if (! *src++) {
-                // last character was truncated, so ignore last byte
-                length--;
-                break;
-            }
-            if (! *src++) {
-                // last character was truncated, so ignore last two bytes
-                length -= 2;
-                break;
-            }
-        }
-        count++;
-    }
-
-    mByteCount = length + 1;
-    mBuffer[length] = 0;
-    mCharCount = count;
-}
-
-void MtpStringBuffer::set(const uint16_t* src) {
-    int count = 0;
-    uint16_t ch;
-    uint8_t* dest = mBuffer;
-
-    while ((ch = *src++) != 0 && count < 255) {
-        if (ch >= 0x0800) {
-            *dest++ = (uint8_t)(0xE0 | (ch >> 12));
-            *dest++ = (uint8_t)(0x80 | ((ch >> 6) & 0x3F));
-            *dest++ = (uint8_t)(0x80 | (ch & 0x3F));
-        } else if (ch >= 0x80) {
-            *dest++ = (uint8_t)(0xC0 | (ch >> 6));
-            *dest++ = (uint8_t)(0x80 | (ch & 0x3F));
-        } else {
-            *dest++ = ch;
-        }
-        count++;
-    }
-    *dest++ = 0;
-    mCharCount = count;
-    mByteCount = dest - mBuffer;
-}
-
-void MtpStringBuffer::readFromPacket(MtpDataPacket* packet) {
-    int count = packet->getUInt8();
-    uint8_t* dest = mBuffer;
-    for (int i = 0; i < count; i++) {
-        uint16_t ch = packet->getUInt16();
-        if (ch >= 0x0800) {
-            *dest++ = (uint8_t)(0xE0 | (ch >> 12));
-            *dest++ = (uint8_t)(0x80 | ((ch >> 6) & 0x3F));
-            *dest++ = (uint8_t)(0x80 | (ch & 0x3F));
-        } else if (ch >= 0x80) {
-            *dest++ = (uint8_t)(0xC0 | (ch >> 6));
-            *dest++ = (uint8_t)(0x80 | (ch & 0x3F));
-        } else {
-            *dest++ = ch;
-        }
-    }
-    *dest++ = 0;
-    mCharCount = count;
-    mByteCount = dest - mBuffer;
-}
-
-void MtpStringBuffer::writeToPacket(MtpDataPacket* packet) const {
-    int count = mCharCount;
-    const uint8_t* src = mBuffer;
-    packet->putUInt8(count > 0 ? count + 1 : 0);
-
-    // expand utf8 to 16 bit chars
-    for (int i = 0; i < count; i++) {
-        uint16_t ch;
-        uint16_t ch1 = *src++;
-        if ((ch1 & 0x80) == 0) {
-            // single byte character
-            ch = ch1;
-        } else if ((ch1 & 0xE0) == 0xC0) {
-            // two byte character
-            uint16_t ch2 = *src++;
-            ch = ((ch1 & 0x1F) << 6) | (ch2 & 0x3F);
-        } else {
-            // three byte character
-            uint16_t ch2 = *src++;
-            uint16_t ch3 = *src++;
-            ch = ((ch1 & 0x0F) << 12) | ((ch2 & 0x3F) << 6) | (ch3 & 0x3F);
-        }
-        packet->putUInt16(ch);
-    }
-    // only terminate with zero if string is not empty
-    if (count > 0)
-        packet->putUInt16(0);
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpStringBuffer.h b/media/mtp/MtpStringBuffer.h
deleted file mode 100644
index cbc8307..0000000
--- a/media/mtp/MtpStringBuffer.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_STRING_BUFFER_H
-#define _MTP_STRING_BUFFER_H
-
-#include <stdint.h>
-
-namespace android {
-
-class MtpDataPacket;
-
-// Represents a utf8 string, with a maximum of 255 characters
-class MtpStringBuffer {
-
-private:
-    // mBuffer contains string in UTF8 format
-    // maximum 3 bytes/character, with 1 extra for zero termination
-    uint8_t         mBuffer[255 * 3 + 1];
-    int             mCharCount;
-    int             mByteCount;
-
-public:
-                    MtpStringBuffer();
-                    MtpStringBuffer(const char* src);
-                    MtpStringBuffer(const uint16_t* src);
-                    MtpStringBuffer(const MtpStringBuffer& src);
-    virtual         ~MtpStringBuffer();
-
-    void            set(const char* src);
-    void            set(const uint16_t* src);
-
-    void            readFromPacket(MtpDataPacket* packet);
-    void            writeToPacket(MtpDataPacket* packet) const;
-
-    inline int      getCharCount() const { return mCharCount; }
-    inline int      getByteCount() const { return mByteCount; }
-
-	inline operator const char*() const { return (const char *)mBuffer; }
-};
-
-}; // namespace android
-
-#endif // _MTP_STRING_BUFFER_H
diff --git a/media/mtp/MtpTypes.h b/media/mtp/MtpTypes.h
deleted file mode 100644
index 720c854..0000000
--- a/media/mtp/MtpTypes.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_TYPES_H
-#define _MTP_TYPES_H
-
-#include <stdint.h>
-#include "utils/String8.h"
-#include "utils/Vector.h"
-
-namespace android {
-
-typedef int32_t int128_t[4];
-typedef uint32_t uint128_t[4];
-
-typedef uint16_t MtpOperationCode;
-typedef uint16_t MtpResponseCode;
-typedef uint16_t MtpEventCode;
-typedef uint32_t MtpSessionID;
-typedef uint32_t MtpStorageID;
-typedef uint32_t MtpTransactionID;
-typedef uint16_t MtpPropertyCode;
-typedef uint16_t MtpDataType;
-typedef uint16_t MtpObjectFormat;
-typedef MtpPropertyCode MtpDeviceProperty;
-typedef MtpPropertyCode MtpObjectProperty;
-
-// object handles are unique across all storage but only within a single session.
-// object handles cannot be reused after an object is deleted.
-// values 0x00000000 and 0xFFFFFFFF are reserved for special purposes.
-typedef uint32_t MtpObjectHandle;
-
-// Special values
-#define MTP_PARENT_ROOT         0xFFFFFFFF       // parent is root of the storage
-#define kInvalidObjectHandle    0xFFFFFFFF
-
-class MtpStorage;
-class MtpDevice;
-class MtpProperty;
-
-typedef Vector<MtpStorage *> MtpStorageList;
-typedef Vector<MtpDevice*> MtpDeviceList;
-typedef Vector<MtpProperty*> MtpPropertyList;
-
-typedef Vector<uint8_t> UInt8List;
-typedef Vector<uint16_t> UInt16List;
-typedef Vector<uint32_t> UInt32List;
-typedef Vector<uint64_t> UInt64List;
-typedef Vector<int8_t> Int8List;
-typedef Vector<int16_t> Int16List;
-typedef Vector<int32_t> Int32List;
-typedef Vector<int64_t> Int64List;
-
-typedef UInt16List MtpObjectPropertyList;
-typedef UInt16List MtpDevicePropertyList;
-typedef UInt16List MtpObjectFormatList;
-typedef UInt32List MtpObjectHandleList;
-typedef UInt16List MtpObjectPropertyList;
-typedef UInt32List MtpStorageIDList;
-
-typedef String8    MtpString;
-
-}; // namespace android
-
-#endif // _MTP_TYPES_H
diff --git a/media/mtp/MtpUtils.cpp b/media/mtp/MtpUtils.cpp
deleted file mode 100644
index 6ec8876..0000000
--- a/media/mtp/MtpUtils.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "MtpUtils"
-
-#include <stdio.h>
-#include <time.h>
-
-#include <cutils/tztime.h>
-#include "MtpUtils.h"
-
-namespace android {
-
-/*
-DateTime strings follow a compatible subset of the definition found in ISO 8601, and
-take the form of a Unicode string formatted as: "YYYYMMDDThhmmss.s". In this
-representation, YYYY shall be replaced by the year, MM replaced by the month (01-12),
-DD replaced by the day (01-31), T is a constant character 'T' delimiting time from date,
-hh is replaced by the hour (00-23), mm is replaced by the minute (00-59), and ss by the
-second (00-59). The ".s" is optional, and represents tenths of a second.
-*/
-
-bool parseDateTime(const char* dateTime, time_t& outSeconds) {
-    int year, month, day, hour, minute, second;
-    struct tm tm;
-
-    if (sscanf(dateTime, "%04d%02d%02dT%02d%02d%02d",
-            &year, &month, &day, &hour, &minute, &second) != 6)
-        return false;
-    const char* tail = dateTime + 15;
-    // skip optional tenth of second
-    if (tail[0] == '.' && tail[1])
-        tail += 2;
-    //FIXME - support +/-hhmm
-    bool useUTC = (tail[0] == 'Z');
-
-    // hack to compute timezone
-    time_t dummy;
-    localtime_r(&dummy, &tm);
-
-    tm.tm_sec = second;
-    tm.tm_min = minute;
-    tm.tm_hour = hour;
-    tm.tm_mday = day;
-    tm.tm_mon = month - 1;  // mktime uses months in 0 - 11 range
-    tm.tm_year = year - 1900;
-    tm.tm_wday = 0;
-    tm.tm_isdst = -1;
-    if (useUTC)
-        outSeconds = mktime(&tm);
-    else
-        outSeconds = mktime_tz(&tm, tm.tm_zone);
-
-    return true;
-}
-
-void formatDateTime(time_t seconds, char* buffer, int bufferLength) {
-    struct tm tm;
-
-    localtime_r(&seconds, &tm);
-    snprintf(buffer, bufferLength, "%04d%02d%02dT%02d%02d%02d",
-        tm.tm_year + 1900, 
-        tm.tm_mon + 1, // localtime_r uses months in 0 - 11 range
-        tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
-}
-
-}  // namespace android
diff --git a/media/mtp/MtpUtils.h b/media/mtp/MtpUtils.h
deleted file mode 100644
index 61f9055..0000000
--- a/media/mtp/MtpUtils.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_UTILS_H
-#define _MTP_UTILS_H
-
-#include <stdint.h>
-
-namespace android {
-
-bool parseDateTime(const char* dateTime, time_t& outSeconds);
-void formatDateTime(time_t seconds, char* buffer, int bufferLength);
-
-}; // namespace android
-
-#endif // _MTP_UTILS_H
diff --git a/media/mtp/mtp.h b/media/mtp/mtp.h
deleted file mode 100644
index d270df5..0000000
--- a/media/mtp/mtp.h
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MTP_H
-#define _MTP_H
-
-#include <stdint.h>
-#include <stdlib.h>
-
-#define MTP_STANDARD_VERSION            100
-
-// Container Types
-#define MTP_CONTAINER_TYPE_UNDEFINED    0
-#define MTP_CONTAINER_TYPE_COMMAND      1
-#define MTP_CONTAINER_TYPE_DATA         2
-#define MTP_CONTAINER_TYPE_RESPONSE     3
-#define MTP_CONTAINER_TYPE_EVENT        4
-
-// Container Offsets
-#define MTP_CONTAINER_LENGTH_OFFSET             0
-#define MTP_CONTAINER_TYPE_OFFSET               4
-#define MTP_CONTAINER_CODE_OFFSET               6
-#define MTP_CONTAINER_TRANSACTION_ID_OFFSET     8
-#define MTP_CONTAINER_PARAMETER_OFFSET          12
-#define MTP_CONTAINER_HEADER_SIZE               12
-
-// MTP Data Types
-#define MTP_TYPE_UNDEFINED      0x0000          // Undefined
-#define MTP_TYPE_INT8           0x0001          // Signed 8-bit integer
-#define MTP_TYPE_UINT8          0x0002          // Unsigned 8-bit integer
-#define MTP_TYPE_INT16          0x0003          // Signed 16-bit integer
-#define MTP_TYPE_UINT16         0x0004          // Unsigned 16-bit integer
-#define MTP_TYPE_INT32          0x0005          // Signed 32-bit integer
-#define MTP_TYPE_UINT32         0x0006          // Unsigned 32-bit integer
-#define MTP_TYPE_INT64          0x0007          // Signed 64-bit integer
-#define MTP_TYPE_UINT64         0x0008          // Unsigned 64-bit integer
-#define MTP_TYPE_INT128         0x0009          // Signed 128-bit integer
-#define MTP_TYPE_UINT128        0x000A          // Unsigned 128-bit integer
-#define MTP_TYPE_AINT8          0x4001          // Array of signed 8-bit integers
-#define MTP_TYPE_AUINT8         0x4002          // Array of unsigned 8-bit integers
-#define MTP_TYPE_AINT16         0x4003          // Array of signed 16-bit integers
-#define MTP_TYPE_AUINT16        0x4004          // Array of unsigned 16-bit integers
-#define MTP_TYPE_AINT32         0x4005          // Array of signed 32-bit integers
-#define MTP_TYPE_AUINT32        0x4006          // Array of unsigned 32-bit integers
-#define MTP_TYPE_AINT64         0x4007          // Array of signed 64-bit integers
-#define MTP_TYPE_AUINT64        0x4008          // Array of unsigned 64-bit integers
-#define MTP_TYPE_AINT128        0x4009          // Array of signed 128-bit integers
-#define MTP_TYPE_AUINT128       0x400A          // Array of unsigned 128-bit integers
-#define MTP_TYPE_STR            0xFFFF          // Variable-length Unicode string
-
-// MTP Format Codes
-#define MTP_FORMAT_UNDEFINED                            0x3000   // Undefined object
-#define MTP_FORMAT_ASSOCIATION                          0x3001   // Association (for example, a folder)
-#define MTP_FORMAT_SCRIPT                               0x3002   // Device model-specific script
-#define MTP_FORMAT_EXECUTABLE                           0x3003   // Device model-specific binary executable
-#define MTP_FORMAT_TEXT                                 0x3004   // Text file
-#define MTP_FORMAT_HTML                                 0x3005   // Hypertext Markup Language file (text)
-#define MTP_FORMAT_DPOF                                 0x3006   // Digital Print Order Format file (text)
-#define MTP_FORMAT_AIFF                                 0x3007   // Audio clip
-#define MTP_FORMAT_WAV                                  0x3008   // Audio clip
-#define MTP_FORMAT_MP3                                  0x3009   // Audio clip
-#define MTP_FORMAT_AVI                                  0x300A   // Video clip
-#define MTP_FORMAT_MPEG                                 0x300B   // Video clip
-#define MTP_FORMAT_ASF                                  0x300C   // Microsoft Advanced Streaming Format (video)
-#define MTP_FORMAT_DEFINED                              0x3800   // Unknown image object
-#define MTP_FORMAT_EXIF_JPEG                            0x3801   // Exchangeable File Format, JEIDA standard
-#define MTP_FORMAT_TIFF_EP                              0x3802   // Tag Image File Format for Electronic Photography
-#define MTP_FORMAT_FLASHPIX                             0x3803   // Structured Storage Image Format
-#define MTP_FORMAT_BMP                                  0x3804   // Microsoft Windows Bitmap file
-#define MTP_FORMAT_CIFF                                 0x3805   // Canon Camera Image File Format
-#define MTP_FORMAT_GIF                                  0x3807   // Graphics Interchange Format
-#define MTP_FORMAT_JFIF                                 0x3808   // JPEG File Interchange Format
-#define MTP_FORMAT_CD                                   0x3809   // PhotoCD Image Pac
-#define MTP_FORMAT_PICT                                 0x380A   // Quickdraw Image Format
-#define MTP_FORMAT_PNG                                  0x380B   // Portable Network Graphics
-#define MTP_FORMAT_TIFF                                 0x380D   // Tag Image File Format
-#define MTP_FORMAT_TIFF_IT                              0x380E   // Tag Image File Format for Information Technology (graphic arts)
-#define MTP_FORMAT_JP2                                  0x380F   // JPEG2000 Baseline File Format
-#define MTP_FORMAT_JPX                                  0x3810   // JPEG2000 Extended File Format
-#define MTP_FORMAT_UNDEFINED_FIRMWARE                   0xB802
-#define MTP_FORMAT_WINDOWS_IMAGE_FORMAT                 0xB881
-#define MTP_FORMAT_UNDEFINED_AUDIO                      0xB900
-#define MTP_FORMAT_WMA                                  0xB901
-#define MTP_FORMAT_OGG                                  0xB902
-#define MTP_FORMAT_AAC                                  0xB903
-#define MTP_FORMAT_AUDIBLE                              0xB904
-#define MTP_FORMAT_FLAC                                 0xB906
-#define MTP_FORMAT_UNDEFINED_VIDEO                      0xB980
-#define MTP_FORMAT_WMV                                  0xB981
-#define MTP_FORMAT_MP4_CONTAINER                        0xB982  // ISO 14496-1
-#define MTP_FORMAT_MP2                                  0xB983
-#define MTP_FORMAT_3GP_CONTAINER                        0xB984  // 3GPP file format. Details: http://www.3gpp.org/ftp/Specs/html-info/26244.htm (page title - \u201cTransparent end-to-end packet switched streaming service, 3GPP file format\u201d).
-#define MTP_FORMAT_UNDEFINED_COLLECTION                 0xBA00
-#define MTP_FORMAT_ABSTRACT_MULTIMEDIA_ALBUM            0xBA01
-#define MTP_FORMAT_ABSTRACT_IMAGE_ALBUM                 0xBA02
-#define MTP_FORMAT_ABSTRACT_AUDIO_ALBUM                 0xBA03
-#define MTP_FORMAT_ABSTRACT_VIDEO_ALBUM                 0xBA04
-#define MTP_FORMAT_ABSTRACT_AV_PLAYLIST                 0xBA05
-#define MTP_FORMAT_ABSTRACT_CONTACT_GROUP               0xBA06
-#define MTP_FORMAT_ABSTRACT_MESSAGE_FOLDER              0xBA07
-#define MTP_FORMAT_ABSTRACT_CHAPTERED_PRODUCTION        0xBA08
-#define MTP_FORMAT_ABSTRACT_AUDIO_PLAYLIST              0xBA09
-#define MTP_FORMAT_ABSTRACT_VIDEO_PLAYLIST              0xBA0A
-#define MTP_FORMAT_ABSTRACT_MEDIACAST                   0xBA0B // For use with mediacasts; references multimedia enclosures of RSS feeds or episodic content
-#define MTP_FORMAT_WPL_PLAYLIST                         0xBA10
-#define MTP_FORMAT_M3U_PLAYLIST                         0xBA11
-#define MTP_FORMAT_MPL_PLAYLIST                         0xBA12
-#define MTP_FORMAT_ASX_PLAYLIST                         0xBA13
-#define MTP_FORMAT_PLS_PLAYLIST                         0xBA14
-#define MTP_FORMAT_UNDEFINED_DOCUMENT                   0xBA80
-#define MTP_FORMAT_ABSTRACT_DOCUMENT                    0xBA81
-#define MTP_FORMAT_XML_DOCUMENT                         0xBA82
-#define MTP_FORMAT_MS_WORD_DOCUMENT                     0xBA83
-#define MTP_FORMAT_MHT_COMPILED_HTML_DOCUMENT           0xBA84
-#define MTP_FORMAT_MS_EXCEL_SPREADSHEET                 0xBA85
-#define MTP_FORMAT_MS_POWERPOINT_PRESENTATION           0xBA86
-#define MTP_FORMAT_UNDEFINED_MESSAGE                    0xBB00
-#define MTP_FORMAT_ABSTRACT_MESSSAGE                    0xBB01
-#define MTP_FORMAT_UNDEFINED_CONTACT                    0xBB80
-#define MTP_FORMAT_ABSTRACT_CONTACT                     0xBB81
-#define MTP_FORMAT_VCARD_2                              0xBB82
-
-// MTP Object Property Codes
-#define MTP_PROPERTY_STORAGE_ID                             0xDC01
-#define MTP_PROPERTY_OBJECT_FORMAT                          0xDC02
-#define MTP_PROPERTY_PROTECTION_STATUS                      0xDC03
-#define MTP_PROPERTY_OBJECT_SIZE                            0xDC04
-#define MTP_PROPERTY_ASSOCIATION_TYPE                       0xDC05
-#define MTP_PROPERTY_ASSOCIATION_DESC                       0xDC06
-#define MTP_PROPERTY_OBJECT_FILE_NAME                       0xDC07
-#define MTP_PROPERTY_DATE_CREATED                           0xDC08
-#define MTP_PROPERTY_DATE_MODIFIED                          0xDC09
-#define MTP_PROPERTY_KEYWORDS                               0xDC0A
-#define MTP_PROPERTY_PARENT_OBJECT                          0xDC0B
-#define MTP_PROPERTY_ALLOWED_FOLDER_CONTENTS                0xDC0C
-#define MTP_PROPERTY_HIDDEN                                 0xDC0D
-#define MTP_PROPERTY_SYSTEM_OBJECT                          0xDC0E
-#define MTP_PROPERTY_PERSISTENT_UID                         0xDC41
-#define MTP_PROPERTY_SYNC_ID                                0xDC42
-#define MTP_PROPERTY_PROPERTY_BAG                           0xDC43
-#define MTP_PROPERTY_NAME                                   0xDC44
-#define MTP_PROPERTY_CREATED_BY                             0xDC45
-#define MTP_PROPERTY_ARTIST                                 0xDC46
-#define MTP_PROPERTY_DATE_AUTHORED                          0xDC47
-#define MTP_PROPERTY_DESCRIPTION                            0xDC48
-#define MTP_PROPERTY_URL_REFERENCE                          0xDC49
-#define MTP_PROPERTY_LANGUAGE_LOCALE                        0xDC4A
-#define MTP_PROPERTY_COPYRIGHT_INFORMATION                  0xDC4B
-#define MTP_PROPERTY_SOURCE                                 0xDC4C
-#define MTP_PROPERTY_ORIGIN_LOCATION                        0xDC4D
-#define MTP_PROPERTY_DATE_ADDED                             0xDC4E
-#define MTP_PROPERTY_NON_CONSUMABLE                         0xDC4F
-#define MTP_PROPERTY_CORRUPT_UNPLAYABLE                     0xDC50
-#define MTP_PROPERTY_PRODUCER_SERIAL_NUMBER                 0xDC51
-#define MTP_PROPERTY_REPRESENTATIVE_SAMPLE_FORMAT           0xDC81
-#define MTP_PROPERTY_REPRESENTATIVE_SAMPLE_SIZE             0xDC82
-#define MTP_PROPERTY_REPRESENTATIVE_SAMPLE_HEIGHT           0xDC83
-#define MTP_PROPERTY_REPRESENTATIVE_SAMPLE_WIDTH            0xDC84
-#define MTP_PROPERTY_REPRESENTATIVE_SAMPLE_DURATION         0xDC85
-#define MTP_PROPERTY_REPRESENTATIVE_SAMPLE_DATA             0xDC86
-#define MTP_PROPERTY_WIDTH                                  0xDC87
-#define MTP_PROPERTY_HEIGHT                                 0xDC88
-#define MTP_PROPERTY_DURATION                               0xDC89
-#define MTP_PROPERTY_RATING                                 0xDC8A
-#define MTP_PROPERTY_TRACK                                  0xDC8B
-#define MTP_PROPERTY_GENRE                                  0xDC8C
-#define MTP_PROPERTY_CREDITS                                0xDC8D
-#define MTP_PROPERTY_LYRICS                                 0xDC8E
-#define MTP_PROPERTY_SUBSCRIPTION_CONTENT_ID                0xDC8F
-#define MTP_PROPERTY_PRODUCED_BY                            0xDC90
-#define MTP_PROPERTY_USE_COUNT                              0xDC91
-#define MTP_PROPERTY_SKIP_COUNT                             0xDC92
-#define MTP_PROPERTY_LAST_ACCESSED                          0xDC93
-#define MTP_PROPERTY_PARENTAL_RATING                        0xDC94
-#define MTP_PROPERTY_META_GENRE                             0xDC95
-#define MTP_PROPERTY_COMPOSER                               0xDC96
-#define MTP_PROPERTY_EFFECTIVE_RATING                       0xDC97
-#define MTP_PROPERTY_SUBTITLE                               0xDC98
-#define MTP_PROPERTY_ORIGINAL_RELEASE_DATE                  0xDC99
-#define MTP_PROPERTY_ALBUM_NAME                             0xDC9A
-#define MTP_PROPERTY_ALBUM_ARTIST                           0xDC9B
-#define MTP_PROPERTY_MOOD                                   0xDC9C
-#define MTP_PROPERTY_DRM_STATUS                             0xDC9D
-#define MTP_PROPERTY_SUB_DESCRIPTION                        0xDC9E
-#define MTP_PROPERTY_IS_CROPPED                             0xDCD1
-#define MTP_PROPERTY_IS_COLOUR_CORRECTED                    0xDCD2
-#define MTP_PROPERTY_IMAGE_BIT_DEPTH                        0xDCD3
-#define MTP_PROPERTY_F_NUMBER                               0xDCD4
-#define MTP_PROPERTY_EXPOSURE_TIME                          0xDCD5
-#define MTP_PROPERTY_EXPOSURE_INDEX                         0xDCD6
-#define MTP_PROPERTY_TOTAL_BITRATE                          0xDE91
-#define MTP_PROPERTY_BITRATE_TYPE                           0xDE92
-#define MTP_PROPERTY_SAMPLE_RATE                            0xDE93
-#define MTP_PROPERTY_NUMBER_OF_CHANNELS                     0xDE94
-#define MTP_PROPERTY_AUDIO_BIT_DEPTH                        0xDE95
-#define MTP_PROPERTY_SCAN_TYPE                              0xDE97
-#define MTP_PROPERTY_AUDIO_WAVE_CODEC                       0xDE99
-#define MTP_PROPERTY_AUDIO_BITRATE                          0xDE9A
-#define MTP_PROPERTY_VIDEO_FOURCC_CODEC                     0xDE9B
-#define MTP_PROPERTY_VIDEO_BITRATE                          0xDE9C
-#define MTP_PROPERTY_FRAMES_PER_THOUSAND_SECONDS            0xDE9D
-#define MTP_PROPERTY_KEYFRAME_DISTANCE                      0xDE9E
-#define MTP_PROPERTY_BUFFER_SIZE                            0xDE9F
-#define MTP_PROPERTY_ENCODING_QUALITY                       0xDEA0
-#define MTP_PROPERTY_ENCODING_PROFILE                       0xDEA1
-#define MTP_PROPERTY_DISPLAY_NAME                           0xDCE0
-#define MTP_PROPERTY_BODY_TEXT                              0xDCE1
-#define MTP_PROPERTY_SUBJECT                                0xDCE2
-#define MTP_PROPERTY_PRIORITY                               0xDCE3
-#define MTP_PROPERTY_GIVEN_NAME                             0xDD00
-#define MTP_PROPERTY_MIDDLE_NAMES                           0xDD01
-#define MTP_PROPERTY_FAMILY_NAME                            0xDD02
-#define MTP_PROPERTY_PREFIX                                 0xDD03
-#define MTP_PROPERTY_SUFFIX                                 0xDD04
-#define MTP_PROPERTY_PHONETIC_GIVEN_NAME                    0xDD05
-#define MTP_PROPERTY_PHONETIC_FAMILY_NAME                   0xDD06
-#define MTP_PROPERTY_EMAIL_PRIMARY                          0xDD07
-#define MTP_PROPERTY_EMAIL_PERSONAL_1                       0xDD08
-#define MTP_PROPERTY_EMAIL_PERSONAL_2                       0xDD09
-#define MTP_PROPERTY_EMAIL_BUSINESS_1                       0xDD0A
-#define MTP_PROPERTY_EMAIL_BUSINESS_2                       0xDD0B
-#define MTP_PROPERTY_EMAIL_OTHERS                           0xDD0C
-#define MTP_PROPERTY_PHONE_NUMBER_PRIMARY                   0xDD0D
-#define MTP_PROPERTY_PHONE_NUMBER_PERSONAL                  0xDD0E
-#define MTP_PROPERTY_PHONE_NUMBER_PERSONAL_2                0xDD0F
-#define MTP_PROPERTY_PHONE_NUMBER_BUSINESS                  0xDD10
-#define MTP_PROPERTY_PHONE_NUMBER_BUSINESS_2                0xDD11
-#define MTP_PROPERTY_PHONE_NUMBER_MOBILE                    0xDD12
-#define MTP_PROPERTY_PHONE_NUMBER_MOBILE_2                  0xDD13
-#define MTP_PROPERTY_FAX_NUMBER_PRIMARY                     0xDD14
-#define MTP_PROPERTY_FAX_NUMBER_PERSONAL                    0xDD15
-#define MTP_PROPERTY_FAX_NUMBER_BUSINESS                    0xDD16
-#define MTP_PROPERTY_PAGER_NUMBER                           0xDD17
-#define MTP_PROPERTY_PHONE_NUMBER_OTHERS                    0xDD18
-#define MTP_PROPERTY_PRIMARY_WEB_ADDRESS                    0xDD19
-#define MTP_PROPERTY_PERSONAL_WEB_ADDRESS                   0xDD1A
-#define MTP_PROPERTY_BUSINESS_WEB_ADDRESS                   0xDD1B
-#define MTP_PROPERTY_INSTANT_MESSANGER_ADDRESS              0xDD1C
-#define MTP_PROPERTY_INSTANT_MESSANGER_ADDRESS_2            0xDD1D
-#define MTP_PROPERTY_INSTANT_MESSANGER_ADDRESS_3            0xDD1E
-#define MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_FULL           0xDD1F
-#define MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_1         0xDD20
-#define MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_2         0xDD21
-#define MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_CITY           0xDD22
-#define MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_REGION         0xDD23
-#define MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_POSTAL_CODE    0xDD24
-#define MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_COUNTRY        0xDD25
-#define MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_FULL           0xDD26
-#define MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_1         0xDD27
-#define MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_2         0xDD28
-#define MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_CITY           0xDD29
-#define MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_REGION         0xDD2A
-#define MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_POSTAL_CODE    0xDD2B
-#define MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_COUNTRY        0xDD2C
-#define MTP_PROPERTY_POSTAL_ADDRESS_OTHER_FULL              0xDD2D
-#define MTP_PROPERTY_POSTAL_ADDRESS_OTHER_LINE_1            0xDD2E
-#define MTP_PROPERTY_POSTAL_ADDRESS_OTHER_LINE_2            0xDD2F
-#define MTP_PROPERTY_POSTAL_ADDRESS_OTHER_CITY              0xDD30
-#define MTP_PROPERTY_POSTAL_ADDRESS_OTHER_REGION            0xDD31
-#define MTP_PROPERTY_POSTAL_ADDRESS_OTHER_POSTAL_CODE       0xDD32
-#define MTP_PROPERTY_POSTAL_ADDRESS_OTHER_COUNTRY           0xDD33
-#define MTP_PROPERTY_ORGANIZATION_NAME                      0xDD34
-#define MTP_PROPERTY_PHONETIC_ORGANIZATION_NAME             0xDD35
-#define MTP_PROPERTY_ROLE                                   0xDD36
-#define MTP_PROPERTY_BIRTHDATE                              0xDD37
-#define MTP_PROPERTY_MESSAGE_TO                             0xDD40
-#define MTP_PROPERTY_MESSAGE_CC                             0xDD41
-#define MTP_PROPERTY_MESSAGE_BCC                            0xDD42
-#define MTP_PROPERTY_MESSAGE_READ                           0xDD43
-#define MTP_PROPERTY_MESSAGE_RECEIVED_TIME                  0xDD44
-#define MTP_PROPERTY_MESSAGE_SENDER                         0xDD45
-#define MTP_PROPERTY_ACTIVITY_BEGIN_TIME                    0xDD50
-#define MTP_PROPERTY_ACTIVITY_END_TIME                      0xDD51
-#define MTP_PROPERTY_ACTIVITY_LOCATION                      0xDD52
-#define MTP_PROPERTY_ACTIVITY_REQUIRED_ATTENDEES            0xDD54
-#define MTP_PROPERTY_ACTIVITY_OPTIONAL_ATTENDEES            0xDD55
-#define MTP_PROPERTY_ACTIVITY_RESOURCES                     0xDD56
-#define MTP_PROPERTY_ACTIVITY_ACCEPTED                      0xDD57
-#define MTP_PROPERTY_ACTIVITY_TENTATIVE                     0xDD58
-#define MTP_PROPERTY_ACTIVITY_DECLINED                      0xDD59
-#define MTP_PROPERTY_ACTIVITY_REMAINDER_TIME                0xDD5A
-#define MTP_PROPERTY_ACTIVITY_OWNER                         0xDD5B
-#define MTP_PROPERTY_ACTIVITY_STATUS                        0xDD5C
-#define MTP_PROPERTY_OWNER                                  0xDD5D
-#define MTP_PROPERTY_EDITOR                                 0xDD5E
-#define MTP_PROPERTY_WEBMASTER                              0xDD5F
-#define MTP_PROPERTY_URL_SOURCE                             0xDD60
-#define MTP_PROPERTY_URL_DESTINATION                        0xDD61
-#define MTP_PROPERTY_TIME_BOOKMARK                          0xDD62
-#define MTP_PROPERTY_OBJECT_BOOKMARK                        0xDD63
-#define MTP_PROPERTY_BYTE_BOOKMARK                          0xDD64
-#define MTP_PROPERTY_LAST_BUILD_DATE                        0xDD70
-#define MTP_PROPERTY_TIME_TO_LIVE                           0xDD71
-#define MTP_PROPERTY_MEDIA_GUID                             0xDD72
-
-// MTP Device Property Codes
-#define MTP_DEVICE_PROPERTY_UNDEFINED                       0x5000
-#define MTP_DEVICE_PROPERTY_BATTERY_LEVEL                   0x5001
-#define MTP_DEVICE_PROPERTY_FUNCTIONAL_MODE                 0x5002
-#define MTP_DEVICE_PROPERTY_IMAGE_SIZE                      0x5003
-#define MTP_DEVICE_PROPERTY_COMPRESSION_SETTING             0x5004
-#define MTP_DEVICE_PROPERTY_WHITE_BALANCE                   0x5005
-#define MTP_DEVICE_PROPERTY_RGB_GAIN                        0x5006
-#define MTP_DEVICE_PROPERTY_F_NUMBER                        0x5007
-#define MTP_DEVICE_PROPERTY_FOCAL_LENGTH                    0x5008
-#define MTP_DEVICE_PROPERTY_FOCUS_DISTANCE                  0x5009
-#define MTP_DEVICE_PROPERTY_FOCUS_MODE                      0x500A
-#define MTP_DEVICE_PROPERTY_EXPOSURE_METERING_MODE          0x500B
-#define MTP_DEVICE_PROPERTY_FLASH_MODE                      0x500C
-#define MTP_DEVICE_PROPERTY_EXPOSURE_TIME                   0x500D
-#define MTP_DEVICE_PROPERTY_EXPOSURE_PROGRAM_MODE           0x500E
-#define MTP_DEVICE_PROPERTY_EXPOSURE_INDEX                  0x500F
-#define MTP_DEVICE_PROPERTY_EXPOSURE_BIAS_COMPENSATION      0x5010
-#define MTP_DEVICE_PROPERTY_DATETIME                        0x5011
-#define MTP_DEVICE_PROPERTY_CAPTURE_DELAY                   0x5012
-#define MTP_DEVICE_PROPERTY_STILL_CAPTURE_MODE              0x5013
-#define MTP_DEVICE_PROPERTY_CONTRAST                        0x5014
-#define MTP_DEVICE_PROPERTY_SHARPNESS                       0x5015
-#define MTP_DEVICE_PROPERTY_DIGITAL_ZOOM                    0x5016
-#define MTP_DEVICE_PROPERTY_EFFECT_MODE                     0x5017
-#define MTP_DEVICE_PROPERTY_BURST_NUMBER                    0x5018
-#define MTP_DEVICE_PROPERTY_BURST_INTERVAL                  0x5019
-#define MTP_DEVICE_PROPERTY_TIMELAPSE_NUMBER                0x501A
-#define MTP_DEVICE_PROPERTY_TIMELAPSE_INTERVAL              0x501B
-#define MTP_DEVICE_PROPERTY_FOCUS_METERING_MODE             0x501C
-#define MTP_DEVICE_PROPERTY_UPLOAD_URL                      0x501D
-#define MTP_DEVICE_PROPERTY_ARTIST                          0x501E
-#define MTP_DEVICE_PROPERTY_COPYRIGHT_INFO                  0x501F
-#define MTP_DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER         0xD401
-#define MTP_DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME            0xD402
-#define MTP_DEVICE_PROPERTY_VOLUME                          0xD403
-#define MTP_DEVICE_PROPERTY_SUPPORTED_FORMATS_ORDERED       0xD404
-#define MTP_DEVICE_PROPERTY_DEVICE_ICON                     0xD405
-#define MTP_DEVICE_PROPERTY_PLAYBACK_RATE                   0xD410
-#define MTP_DEVICE_PROPERTY_PLAYBACK_OBJECT                 0xD411
-#define MTP_DEVICE_PROPERTY_PLAYBACK_CONTAINER_INDEX        0xD412
-#define MTP_DEVICE_PROPERTY_SESSION_INITIATOR_VERSION_INFO  0xD406
-#define MTP_DEVICE_PROPERTY_PERCEIVED_DEVICE_TYPE           0xD407
-
-// MTP Operation Codes
-#define MTP_OPERATION_GET_DEVICE_INFO                       0x1001
-#define MTP_OPERATION_OPEN_SESSION                          0x1002
-#define MTP_OPERATION_CLOSE_SESSION                         0x1003
-#define MTP_OPERATION_GET_STORAGE_IDS                       0x1004
-#define MTP_OPERATION_GET_STORAGE_INFO                      0x1005
-#define MTP_OPERATION_GET_NUM_OBJECTS                       0x1006
-#define MTP_OPERATION_GET_OBJECT_HANDLES                    0x1007
-#define MTP_OPERATION_GET_OBJECT_INFO                       0x1008
-#define MTP_OPERATION_GET_OBJECT                            0x1009
-#define MTP_OPERATION_GET_THUMB                             0x100A
-#define MTP_OPERATION_DELETE_OBJECT                         0x100B
-#define MTP_OPERATION_SEND_OBJECT_INFO                      0x100C
-#define MTP_OPERATION_SEND_OBJECT                           0x100D
-#define MTP_OPERATION_INITIATE_CAPTURE                      0x100E
-#define MTP_OPERATION_FORMAT_STORE                          0x100F
-#define MTP_OPERATION_RESET_DEVICE                          0x1010
-#define MTP_OPERATION_SELF_TEST                             0x1011
-#define MTP_OPERATION_SET_OBJECT_PROTECTION                 0x1012
-#define MTP_OPERATION_POWER_DOWN                            0x1013
-#define MTP_OPERATION_GET_DEVICE_PROP_DESC                  0x1014
-#define MTP_OPERATION_GET_DEVICE_PROP_VALUE                 0x1015
-#define MTP_OPERATION_SET_DEVICE_PROP_VALUE                 0x1016
-#define MTP_OPERATION_RESET_DEVICE_PROP_VALUE               0x1017
-#define MTP_OPERATION_TERMINATE_OPEN_CAPTURE                0x1018
-#define MTP_OPERATION_MOVE_OBJECT                           0x1019
-#define MTP_OPERATION_COPY_OBJECT                           0x101A
-#define MTP_OPERATION_GET_PARTIAL_OBJECT                    0x101B
-#define MTP_OPERATION_INITIATE_OPEN_CAPTURE                 0x101C
-#define MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED            0x9801
-#define MTP_OPERATION_GET_OBJECT_PROP_DESC                  0x9802
-#define MTP_OPERATION_GET_OBJECT_PROP_VALUE                 0x9803
-#define MTP_OPERATION_SET_OBJECT_PROP_VALUE                 0x9804
-#define MTP_OPERATION_GET_OBJECT_PROP_LIST                  0x9805
-#define MTP_OPERATION_SET_OBJECT_PROP_LIST                  0x9806
-#define MTP_OPERATION_GET_INTERDEPENDENT_PROP_DESC          0x9807
-#define MTP_OPERATION_SEND_OBJECT_PROP_LIST                 0x9808
-#define MTP_OPERATION_GET_OBJECT_REFERENCES                 0x9810
-#define MTP_OPERATION_SET_OBJECT_REFERENCES                 0x9811
-#define MTP_OPERATION_SKIP                                  0x9820
-
-// Android extensions for direct file IO
-
-// Same as GetPartialObject, but with 64 bit offset
-#define MTP_OPERATION_GET_PARTIAL_OBJECT_64                 0x95C1
-// Same as GetPartialObject64, but copying host to device
-#define MTP_OPERATION_SEND_PARTIAL_OBJECT                   0x95C2
-// Truncates file to 64 bit length
-#define MTP_OPERATION_TRUNCATE_OBJECT                       0x95C3
-// Must be called before using SendPartialObject and TruncateObject
-#define MTP_OPERATION_BEGIN_EDIT_OBJECT                     0x95C4
-// Called to commit changes made by SendPartialObject and TruncateObject
-#define MTP_OPERATION_END_EDIT_OBJECT                       0x95C5
-
-// MTP Response Codes
-#define MTP_RESPONSE_UNDEFINED                                  0x2000
-#define MTP_RESPONSE_OK                                         0x2001
-#define MTP_RESPONSE_GENERAL_ERROR                              0x2002
-#define MTP_RESPONSE_SESSION_NOT_OPEN                           0x2003
-#define MTP_RESPONSE_INVALID_TRANSACTION_ID                     0x2004
-#define MTP_RESPONSE_OPERATION_NOT_SUPPORTED                    0x2005
-#define MTP_RESPONSE_PARAMETER_NOT_SUPPORTED                    0x2006
-#define MTP_RESPONSE_INCOMPLETE_TRANSFER                        0x2007
-#define MTP_RESPONSE_INVALID_STORAGE_ID                         0x2008
-#define MTP_RESPONSE_INVALID_OBJECT_HANDLE                      0x2009
-#define MTP_RESPONSE_DEVICE_PROP_NOT_SUPPORTED                  0x200A
-#define MTP_RESPONSE_INVALID_OBJECT_FORMAT_CODE                 0x200B
-#define MTP_RESPONSE_STORAGE_FULL                               0x200C
-#define MTP_RESPONSE_OBJECT_WRITE_PROTECTED                     0x200D
-#define MTP_RESPONSE_STORE_READ_ONLY                            0x200E
-#define MTP_RESPONSE_ACCESS_DENIED                              0x200F
-#define MTP_RESPONSE_NO_THUMBNAIL_PRESENT                       0x2010
-#define MTP_RESPONSE_SELF_TEST_FAILED                           0x2011
-#define MTP_RESPONSE_PARTIAL_DELETION                           0x2012
-#define MTP_RESPONSE_STORE_NOT_AVAILABLE                        0x2013
-#define MTP_RESPONSE_SPECIFICATION_BY_FORMAT_UNSUPPORTED        0x2014
-#define MTP_RESPONSE_NO_VALID_OBJECT_INFO                       0x2015
-#define MTP_RESPONSE_INVALID_CODE_FORMAT                        0x2016
-#define MTP_RESPONSE_UNKNOWN_VENDOR_CODE                        0x2017
-#define MTP_RESPONSE_CAPTURE_ALREADY_TERMINATED                 0x2018
-#define MTP_RESPONSE_DEVICE_BUSY                                0x2019
-#define MTP_RESPONSE_INVALID_PARENT_OBJECT                      0x201A
-#define MTP_RESPONSE_INVALID_DEVICE_PROP_FORMAT                 0x201B
-#define MTP_RESPONSE_INVALID_DEVICE_PROP_VALUE                  0x201C
-#define MTP_RESPONSE_INVALID_PARAMETER                          0x201D
-#define MTP_RESPONSE_SESSION_ALREADY_OPEN                       0x201E
-#define MTP_RESPONSE_TRANSACTION_CANCELLED                      0x201F
-#define MTP_RESPONSE_SPECIFICATION_OF_DESTINATION_UNSUPPORTED   0x2020
-#define MTP_RESPONSE_INVALID_OBJECT_PROP_CODE                   0xA801
-#define MTP_RESPONSE_INVALID_OBJECT_PROP_FORMAT                 0xA802
-#define MTP_RESPONSE_INVALID_OBJECT_PROP_VALUE                  0xA803
-#define MTP_RESPONSE_INVALID_OBJECT_REFERENCE                   0xA804
-#define MTP_RESPONSE_GROUP_NOT_SUPPORTED                        0xA805
-#define MTP_RESPONSE_INVALID_DATASET                            0xA806
-#define MTP_RESPONSE_SPECIFICATION_BY_GROUP_UNSUPPORTED         0xA807
-#define MTP_RESPONSE_SPECIFICATION_BY_DEPTH_UNSUPPORTED         0xA808
-#define MTP_RESPONSE_OBJECT_TOO_LARGE                           0xA809
-#define MTP_RESPONSE_OBJECT_PROP_NOT_SUPPORTED                  0xA80A
-
-// MTP Event Codes
-#define MTP_EVENT_UNDEFINED                         0x4000
-#define MTP_EVENT_CANCEL_TRANSACTION                0x4001
-#define MTP_EVENT_OBJECT_ADDED                      0x4002
-#define MTP_EVENT_OBJECT_REMOVED                    0x4003
-#define MTP_EVENT_STORE_ADDED                       0x4004
-#define MTP_EVENT_STORE_REMOVED                     0x4005
-#define MTP_EVENT_DEVICE_PROP_CHANGED               0x4006
-#define MTP_EVENT_OBJECT_INFO_CHANGED               0x4007
-#define MTP_EVENT_DEVICE_INFO_CHANGED               0x4008
-#define MTP_EVENT_REQUEST_OBJECT_TRANSFER           0x4009
-#define MTP_EVENT_STORE_FULL                        0x400A
-#define MTP_EVENT_DEVICE_RESET                      0x400B
-#define MTP_EVENT_STORAGE_INFO_CHANGED              0x400C
-#define MTP_EVENT_CAPTURE_COMPLETE                  0x400D
-#define MTP_EVENT_UNREPORTED_STATUS                 0x400E
-#define MTP_EVENT_OBJECT_PROP_CHANGED               0xC801
-#define MTP_EVENT_OBJECT_PROP_DESC_CHANGED          0xC802
-#define MTP_EVENT_OBJECT_REFERENCES_CHANGED         0xC803
-
-// Storage Type
-#define MTP_STORAGE_FIXED_ROM                       0x0001
-#define MTP_STORAGE_REMOVABLE_ROM                   0x0002
-#define MTP_STORAGE_FIXED_RAM                       0x0003
-#define MTP_STORAGE_REMOVABLE_RAM                   0x0004
-
-// Storage File System
-#define MTP_STORAGE_FILESYSTEM_FLAT                 0x0001
-#define MTP_STORAGE_FILESYSTEM_HIERARCHICAL         0x0002
-#define MTP_STORAGE_FILESYSTEM_DCF                  0x0003
-
-// Storage Access Capability
-#define MTP_STORAGE_READ_WRITE                      0x0000
-#define MTP_STORAGE_READ_ONLY_WITHOUT_DELETE        0x0001
-#define MTP_STORAGE_READ_ONLY_WITH_DELETE           0x0002
-
-// Association Type
-#define MTP_ASSOCIATION_TYPE_UNDEFINED              0x0000
-#define MTP_ASSOCIATION_TYPE_GENERIC_FOLDER         0x0001
-
-#endif // _MTP_H
-- 
cgit v1.1