MtpObjectInfo.cpp revision e13401bf532c7e4bf9ab82c7e9b13642838a927d
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 17e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include <stdlib.h> 18e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 19e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpDataPacket.h" 20e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpObjectInfo.h" 21e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpStringBuffer.h" 22e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#include "MtpUtils.h" 23e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 24e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwoodnamespace android { 25e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 26e13401bf532c7e4bf9ab82c7e9b13642838a927dMike LockwoodMtpObjectInfo::MtpObjectInfo(MtpObjectHandle handle) 27e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood : mHandle(handle), 28e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mStorageID(0), 29e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mFormat(0), 30e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mProtectionStatus(0), 31e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mCompressedSize(0), 32e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbFormat(0), 33e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbCompressedSize(0), 34e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixWidth(0), 35e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixHeight(0), 36e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixWidth(0), 37e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixHeight(0), 38e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixDepth(0), 39e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mParent(0), 40e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationType(0), 41e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationDesc(0), 42e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mSequenceNumber(0), 43e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mName(NULL), 44e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateCreated(0), 45e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateModified(0), 46e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mKeywords(NULL) 47e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood{ 48e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 49e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 50e13401bf532c7e4bf9ab82c7e9b13642838a927dMike LockwoodMtpObjectInfo::~MtpObjectInfo() { 51e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (mName) 52e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood free(mName); 53e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (mKeywords) 54e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood free(mKeywords); 55e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 56e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 57e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwoodvoid MtpObjectInfo::read(MtpDataPacket& packet) { 58e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood MtpStringBuffer string; 59e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood time_t time; 60e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 61e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mStorageID = packet.getUInt32(); 62e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mFormat = packet.getUInt16(); 63e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mProtectionStatus = packet.getUInt16(); 64e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mCompressedSize = packet.getUInt32(); 65e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbFormat = packet.getUInt16(); 66e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mCompressedSize = packet.getUInt32(); 67e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixWidth = packet.getUInt32(); 68e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mThumbPixHeight = packet.getUInt32(); 69e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixWidth = packet.getUInt32(); 70e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixHeight = packet.getUInt32(); 71e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mImagePixDepth = packet.getUInt32(); 72e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mParent = packet.getUInt32(); 73e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationType = packet.getUInt16(); 74e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mAssociationDesc = packet.getUInt32(); 75e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mSequenceNumber = packet.getUInt32(); 76e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 77e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 78e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mName = strdup((const char *)string); 79e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 80e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 81e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (parseDateTime((const char*)string, time)) 82e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateCreated = time; 83e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 84e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 85e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood if (parseDateTime((const char*)string, time)) 86e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mDateModified = time; 87e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 88e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood packet.getString(string); 89e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood mKeywords = strdup((const char *)string); 90e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 91e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 92e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwoodvoid MtpObjectInfo::print() { 93e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood printf("MtpObject Info %08X: %s\n", mHandle, mName); 94e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} 95e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood 96e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood} // namespace android 97