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