MtpObjectInfo.cpp revision 0ef2bf5df731114fce7307dc881b69d198b6d933
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" 18a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwood#include "utils/Log.h" 19e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 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 58e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwoodvoid MtpObjectInfo::read(MtpDataPacket& packet) { 59e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood MtpStringBuffer string; 60e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood time_t time; 61e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 62e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mStorageID = packet.getUInt32(); 63e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mFormat = packet.getUInt16(); 64e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mProtectionStatus = packet.getUInt16(); 65e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mCompressedSize = packet.getUInt32(); 66e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbFormat = packet.getUInt16(); 670ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mThumbCompressedSize = packet.getUInt32(); 68e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixWidth = packet.getUInt32(); 69e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixHeight = packet.getUInt32(); 70e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixWidth = packet.getUInt32(); 71e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixHeight = packet.getUInt32(); 72e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixDepth = packet.getUInt32(); 73e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mParent = packet.getUInt32(); 74e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationType = packet.getUInt16(); 75e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationDesc = packet.getUInt32(); 76e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mSequenceNumber = packet.getUInt32(); 77e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 78e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 79e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mName = strdup((const char *)string); 80e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 81e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 82e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (parseDateTime((const char*)string, time)) 83e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateCreated = time; 84e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 85e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 86e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (parseDateTime((const char*)string, time)) 87e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateModified = time; 88e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 89e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 90e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mKeywords = strdup((const char *)string); 91e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 92e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 93e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwoodvoid MtpObjectInfo::print() { 94a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwood LOGD("MtpObject Info %08X: %s\n", mHandle, mName); 950ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood LOGD(" mStorageID: %08X mFormat: %04X mProtectionStatus: %d\n", 960ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mStorageID, mFormat, mProtectionStatus); 970ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood LOGD(" mCompressedSize: %d mThumbFormat: %04X mThumbCompressedSize: %d\n", 980ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mCompressedSize, mFormat, mThumbCompressedSize); 990ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood LOGD(" mThumbPixWidth: %d mThumbPixHeight: %d\n", mThumbPixWidth, mThumbPixHeight); 1000ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood LOGD(" mImagePixWidth: %d mImagePixHeight: %d mImagePixDepth: %d\n", 1010ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mImagePixWidth, mImagePixHeight, mImagePixDepth); 1020ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood LOGD(" mParent: %08X mAssociationType: %04X mAssociationDesc: %04X\n", 1030ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mParent, mAssociationType, mAssociationDesc); 1040ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood LOGD(" mSequenceNumber: %d mDateCreated: %d mDateModified: %d mKeywords: %s\n", 1050ef2bf5df731114fce7307dc881b69d198b6d933Mike Lockwood mSequenceNumber, mDateCreated, mDateModified, mKeywords); 106e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 107e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 108e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} // namespace android 109