1e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood/* 2e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * Copyright (C) 2010 The Android Open Source Project 3e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * 4e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * you may not use this file except in compliance with the License. 6e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * You may obtain a copy of the License at 7e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * 8e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * 10e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * Unless required by applicable law or agreed to in writing, software 11e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * See the License for the specific language governing permissions and 14e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood * limitations under the License. 15e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood */ 16e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 17a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwood#define LOG_TAG "MtpObjectInfo" 18e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 19b14e588bec4d5e39e61b020b5b575f2ce555d316Mike Lockwood#include "MtpDebug.h" 20e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpDataPacket.h" 21e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpObjectInfo.h" 22e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpStringBuffer.h" 23e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpUtils.h" 24e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 25e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwoodnamespace android { 26e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 27e13401bf532c7e4bf9ab82c7e9b13642838a927dMike LockwoodMtpObjectInfo::MtpObjectInfo(MtpObjectHandle handle) 28e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood : mHandle(handle), 29e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mStorageID(0), 30e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mFormat(0), 31e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mProtectionStatus(0), 32e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mCompressedSize(0), 33e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbFormat(0), 34e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbCompressedSize(0), 35e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixWidth(0), 36e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixHeight(0), 37e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixWidth(0), 38e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixHeight(0), 39e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixDepth(0), 40e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mParent(0), 41e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationType(0), 42e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationDesc(0), 43e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mSequenceNumber(0), 44e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mName(NULL), 45e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateCreated(0), 46e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateModified(0), 47e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mKeywords(NULL) 48e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood{ 49e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 50e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 51e13401bf532c7e4bf9ab82c7e9b13642838a927dMike LockwoodMtpObjectInfo::~MtpObjectInfo() { 52e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (mName) 53e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood free(mName); 54e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (mKeywords) 55e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood free(mKeywords); 56e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 57e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 58ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwoodbool MtpObjectInfo::read(MtpDataPacket& packet) { 59e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood MtpStringBuffer string; 60e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood time_t time; 61e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 62ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mStorageID)) return false; 63ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt16(mFormat)) return false; 64ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt16(mProtectionStatus)) return false; 65ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mCompressedSize)) return false; 66ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt16(mThumbFormat)) return false; 67ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mThumbCompressedSize)) return false; 68ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mThumbPixWidth)) return false; 69ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mThumbPixHeight)) return false; 70ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mImagePixWidth)) return false; 71ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mImagePixHeight)) return false; 72ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mImagePixDepth)) return false; 73ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mParent)) return false; 74ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt16(mAssociationType)) return false; 75ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mAssociationDesc)) return false; 76ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getUInt32(mSequenceNumber)) return false; 77e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 78ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getString(string)) return false; 79e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mName = strdup((const char *)string); 80e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 81ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getString(string)) return false; 82e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (parseDateTime((const char*)string, time)) 83e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateCreated = time; 84e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 85ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getString(string)) return false; 86e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (parseDateTime((const char*)string, time)) 87e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateModified = time; 88e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 89ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood if (!packet.getString(string)) return false; 90e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mKeywords = strdup((const char *)string); 91ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood 92ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood return true; 93e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 94e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 95e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwoodvoid MtpObjectInfo::print() { 96b8a805261bf0282e992d3608035e47d05a898710Steve Block ALOGD("MtpObject Info %08X: %s\n", mHandle, mName); 97b8a805261bf0282e992d3608035e47d05a898710Steve Block ALOGD(" mStorageID: %08X mFormat: %04X mProtectionStatus: %d\n", 980ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mStorageID, mFormat, mProtectionStatus); 99b8a805261bf0282e992d3608035e47d05a898710Steve Block ALOGD(" mCompressedSize: %d mThumbFormat: %04X mThumbCompressedSize: %d\n", 1000ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mCompressedSize, mFormat, mThumbCompressedSize); 101b8a805261bf0282e992d3608035e47d05a898710Steve Block ALOGD(" mThumbPixWidth: %d mThumbPixHeight: %d\n", mThumbPixWidth, mThumbPixHeight); 102b8a805261bf0282e992d3608035e47d05a898710Steve Block ALOGD(" mImagePixWidth: %d mImagePixHeight: %d mImagePixDepth: %d\n", 1030ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mImagePixWidth, mImagePixHeight, mImagePixDepth); 104b8a805261bf0282e992d3608035e47d05a898710Steve Block ALOGD(" mParent: %08X mAssociationType: %04X mAssociationDesc: %04X\n", 1050ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mParent, mAssociationType, mAssociationDesc); 106b8a805261bf0282e992d3608035e47d05a898710Steve Block ALOGD(" mSequenceNumber: %d mDateCreated: %ld mDateModified: %ld mKeywords: %s\n", 1070ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mSequenceNumber, mDateCreated, mDateModified, mKeywords); 108e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 109e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 110e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} // namespace android 111