13743365114cc31d29e54354518a631a01461513eMike Lockwood/* 23743365114cc31d29e54354518a631a01461513eMike Lockwood * Copyright (C) 2010 The Android Open Source Project 33743365114cc31d29e54354518a631a01461513eMike Lockwood * 43743365114cc31d29e54354518a631a01461513eMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 53743365114cc31d29e54354518a631a01461513eMike Lockwood * you may not use this file except in compliance with the License. 63743365114cc31d29e54354518a631a01461513eMike Lockwood * You may obtain a copy of the License at 73743365114cc31d29e54354518a631a01461513eMike Lockwood * 83743365114cc31d29e54354518a631a01461513eMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 93743365114cc31d29e54354518a631a01461513eMike Lockwood * 103743365114cc31d29e54354518a631a01461513eMike Lockwood * Unless required by applicable law or agreed to in writing, software 113743365114cc31d29e54354518a631a01461513eMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 123743365114cc31d29e54354518a631a01461513eMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133743365114cc31d29e54354518a631a01461513eMike Lockwood * See the License for the specific language governing permissions and 143743365114cc31d29e54354518a631a01461513eMike Lockwood * limitations under the License. 153743365114cc31d29e54354518a631a01461513eMike Lockwood */ 163743365114cc31d29e54354518a631a01461513eMike Lockwood 1790f4873446b08980102e3bc8893a220dec5ebf2eMike Lockwood#define LOG_TAG "MtpObjectInfo" 183743365114cc31d29e54354518a631a01461513eMike Lockwood 193e6616dd3dc4d8b4a8a5c832d5a66965c19648d3Mike Lockwood#include "MtpDebug.h" 203743365114cc31d29e54354518a631a01461513eMike Lockwood#include "MtpDataPacket.h" 213743365114cc31d29e54354518a631a01461513eMike Lockwood#include "MtpObjectInfo.h" 223743365114cc31d29e54354518a631a01461513eMike Lockwood#include "MtpStringBuffer.h" 233743365114cc31d29e54354518a631a01461513eMike Lockwood#include "MtpUtils.h" 243743365114cc31d29e54354518a631a01461513eMike Lockwood 253743365114cc31d29e54354518a631a01461513eMike Lockwoodnamespace android { 263743365114cc31d29e54354518a631a01461513eMike Lockwood 273743365114cc31d29e54354518a631a01461513eMike LockwoodMtpObjectInfo::MtpObjectInfo(MtpObjectHandle handle) 283743365114cc31d29e54354518a631a01461513eMike Lockwood : mHandle(handle), 293743365114cc31d29e54354518a631a01461513eMike Lockwood mStorageID(0), 303743365114cc31d29e54354518a631a01461513eMike Lockwood mFormat(0), 313743365114cc31d29e54354518a631a01461513eMike Lockwood mProtectionStatus(0), 323743365114cc31d29e54354518a631a01461513eMike Lockwood mCompressedSize(0), 333743365114cc31d29e54354518a631a01461513eMike Lockwood mThumbFormat(0), 343743365114cc31d29e54354518a631a01461513eMike Lockwood mThumbCompressedSize(0), 353743365114cc31d29e54354518a631a01461513eMike Lockwood mThumbPixWidth(0), 363743365114cc31d29e54354518a631a01461513eMike Lockwood mThumbPixHeight(0), 373743365114cc31d29e54354518a631a01461513eMike Lockwood mImagePixWidth(0), 383743365114cc31d29e54354518a631a01461513eMike Lockwood mImagePixHeight(0), 393743365114cc31d29e54354518a631a01461513eMike Lockwood mImagePixDepth(0), 403743365114cc31d29e54354518a631a01461513eMike Lockwood mParent(0), 413743365114cc31d29e54354518a631a01461513eMike Lockwood mAssociationType(0), 423743365114cc31d29e54354518a631a01461513eMike Lockwood mAssociationDesc(0), 433743365114cc31d29e54354518a631a01461513eMike Lockwood mSequenceNumber(0), 443743365114cc31d29e54354518a631a01461513eMike Lockwood mName(NULL), 453743365114cc31d29e54354518a631a01461513eMike Lockwood mDateCreated(0), 463743365114cc31d29e54354518a631a01461513eMike Lockwood mDateModified(0), 473743365114cc31d29e54354518a631a01461513eMike Lockwood mKeywords(NULL) 483743365114cc31d29e54354518a631a01461513eMike Lockwood{ 493743365114cc31d29e54354518a631a01461513eMike Lockwood} 503743365114cc31d29e54354518a631a01461513eMike Lockwood 513743365114cc31d29e54354518a631a01461513eMike LockwoodMtpObjectInfo::~MtpObjectInfo() { 523743365114cc31d29e54354518a631a01461513eMike Lockwood if (mName) 533743365114cc31d29e54354518a631a01461513eMike Lockwood free(mName); 543743365114cc31d29e54354518a631a01461513eMike Lockwood if (mKeywords) 553743365114cc31d29e54354518a631a01461513eMike Lockwood free(mKeywords); 563743365114cc31d29e54354518a631a01461513eMike Lockwood} 573743365114cc31d29e54354518a631a01461513eMike Lockwood 583743365114cc31d29e54354518a631a01461513eMike Lockwoodvoid MtpObjectInfo::read(MtpDataPacket& packet) { 593743365114cc31d29e54354518a631a01461513eMike Lockwood MtpStringBuffer string; 603743365114cc31d29e54354518a631a01461513eMike Lockwood time_t time; 613743365114cc31d29e54354518a631a01461513eMike Lockwood 623743365114cc31d29e54354518a631a01461513eMike Lockwood mStorageID = packet.getUInt32(); 633743365114cc31d29e54354518a631a01461513eMike Lockwood mFormat = packet.getUInt16(); 643743365114cc31d29e54354518a631a01461513eMike Lockwood mProtectionStatus = packet.getUInt16(); 653743365114cc31d29e54354518a631a01461513eMike Lockwood mCompressedSize = packet.getUInt32(); 663743365114cc31d29e54354518a631a01461513eMike Lockwood mThumbFormat = packet.getUInt16(); 67f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood mThumbCompressedSize = packet.getUInt32(); 683743365114cc31d29e54354518a631a01461513eMike Lockwood mThumbPixWidth = packet.getUInt32(); 693743365114cc31d29e54354518a631a01461513eMike Lockwood mThumbPixHeight = packet.getUInt32(); 703743365114cc31d29e54354518a631a01461513eMike Lockwood mImagePixWidth = packet.getUInt32(); 713743365114cc31d29e54354518a631a01461513eMike Lockwood mImagePixHeight = packet.getUInt32(); 723743365114cc31d29e54354518a631a01461513eMike Lockwood mImagePixDepth = packet.getUInt32(); 733743365114cc31d29e54354518a631a01461513eMike Lockwood mParent = packet.getUInt32(); 743743365114cc31d29e54354518a631a01461513eMike Lockwood mAssociationType = packet.getUInt16(); 753743365114cc31d29e54354518a631a01461513eMike Lockwood mAssociationDesc = packet.getUInt32(); 763743365114cc31d29e54354518a631a01461513eMike Lockwood mSequenceNumber = packet.getUInt32(); 773743365114cc31d29e54354518a631a01461513eMike Lockwood 783743365114cc31d29e54354518a631a01461513eMike Lockwood packet.getString(string); 793743365114cc31d29e54354518a631a01461513eMike Lockwood mName = strdup((const char *)string); 803743365114cc31d29e54354518a631a01461513eMike Lockwood 813743365114cc31d29e54354518a631a01461513eMike Lockwood packet.getString(string); 823743365114cc31d29e54354518a631a01461513eMike Lockwood if (parseDateTime((const char*)string, time)) 833743365114cc31d29e54354518a631a01461513eMike Lockwood mDateCreated = time; 843743365114cc31d29e54354518a631a01461513eMike Lockwood 853743365114cc31d29e54354518a631a01461513eMike Lockwood packet.getString(string); 863743365114cc31d29e54354518a631a01461513eMike Lockwood if (parseDateTime((const char*)string, time)) 873743365114cc31d29e54354518a631a01461513eMike Lockwood mDateModified = time; 883743365114cc31d29e54354518a631a01461513eMike Lockwood 893743365114cc31d29e54354518a631a01461513eMike Lockwood packet.getString(string); 903743365114cc31d29e54354518a631a01461513eMike Lockwood mKeywords = strdup((const char *)string); 913743365114cc31d29e54354518a631a01461513eMike Lockwood} 923743365114cc31d29e54354518a631a01461513eMike Lockwood 933743365114cc31d29e54354518a631a01461513eMike Lockwoodvoid MtpObjectInfo::print() { 9490f4873446b08980102e3bc8893a220dec5ebf2eMike Lockwood LOGD("MtpObject Info %08X: %s\n", mHandle, mName); 95f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood LOGD(" mStorageID: %08X mFormat: %04X mProtectionStatus: %d\n", 96f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood mStorageID, mFormat, mProtectionStatus); 97f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood LOGD(" mCompressedSize: %d mThumbFormat: %04X mThumbCompressedSize: %d\n", 98f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood mCompressedSize, mFormat, mThumbCompressedSize); 99f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood LOGD(" mThumbPixWidth: %d mThumbPixHeight: %d\n", mThumbPixWidth, mThumbPixHeight); 100f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood LOGD(" mImagePixWidth: %d mImagePixHeight: %d mImagePixDepth: %d\n", 101f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood mImagePixWidth, mImagePixHeight, mImagePixDepth); 102f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood LOGD(" mParent: %08X mAssociationType: %04X mAssociationDesc: %04X\n", 103f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood mParent, mAssociationType, mAssociationDesc); 104ac745c1c6b625ab4254086bf7e763575e3482e6dMike Lockwood LOGD(" mSequenceNumber: %d mDateCreated: %ld mDateModified: %ld mKeywords: %s\n", 105f724eed5669762fdb0071e11ab3b38de77dd5c33Mike Lockwood mSequenceNumber, mDateCreated, mDateModified, mKeywords); 1063743365114cc31d29e54354518a631a01461513eMike Lockwood} 1073743365114cc31d29e54354518a631a01461513eMike Lockwood 1083743365114cc31d29e54354518a631a01461513eMike Lockwood} // namespace android 109