MtpObjectInfo.cpp revision a6c490b8b2d96ebaab632286029463f932ae3b6b
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();
67e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood    mCompressedSize = 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);
95e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood}
96e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood
97e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood}  // namespace android
98