1335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood/*
2335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * Copyright (C) 2010 The Android Open Source Project
3335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *
4335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
5335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * you may not use this file except in compliance with the License.
6335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * You may obtain a copy of the License at
7335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *
8335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
9335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *
10335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * Unless required by applicable law or agreed to in writing, software
11335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
12335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * See the License for the specific language governing permissions and
14335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * limitations under the License.
15335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood */
16335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
17a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwood#define LOG_TAG "MtpDeviceInfo"
18335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
19b14e588bec4d5e39e61b020b5b575f2ce555d316Mike Lockwood#include "MtpDebug.h"
20335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#include "MtpDataPacket.h"
21335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#include "MtpDeviceInfo.h"
22335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#include "MtpStringBuffer.h"
23335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
24335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodnamespace android {
25335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
26335dd2be955607f2632eabc25045857f2cc8b674Mike LockwoodMtpDeviceInfo::MtpDeviceInfo()
27335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    :   mStandardVersion(0),
28335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mVendorExtensionID(0),
29335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mVendorExtensionVersion(0),
30335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mVendorExtensionDesc(NULL),
31335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mFunctionalCode(0),
32335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mOperations(NULL),
33335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mEvents(NULL),
34335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mDeviceProperties(NULL),
35335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mCaptureFormats(NULL),
36335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mPlaybackFormats(NULL),
37335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mManufacturer(NULL),
38335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mModel(NULL),
39335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mVersion(NULL),
40335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        mSerial(NULL)
41335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood{
42335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood}
43335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
44335dd2be955607f2632eabc25045857f2cc8b674Mike LockwoodMtpDeviceInfo::~MtpDeviceInfo() {
45335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    if (mVendorExtensionDesc)
46335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        free(mVendorExtensionDesc);
47335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    delete mOperations;
48335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    delete mEvents;
49335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    delete mDeviceProperties;
50335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    delete mCaptureFormats;
51335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    delete mPlaybackFormats;
52335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    if (mManufacturer)
53335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        free(mManufacturer);
54335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    if (mModel)
55335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        free(mModel);
56335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    if (mVersion)
57335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        free(mVersion);
58335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    if (mSerial)
59335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood        free(mSerial);
60335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood}
61335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
62335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodvoid MtpDeviceInfo::read(MtpDataPacket& packet) {
63335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    MtpStringBuffer string;
64335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
65335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    // read the device info
66335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mStandardVersion = packet.getUInt16();
67335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mVendorExtensionID = packet.getUInt32();
68335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mVendorExtensionVersion = packet.getUInt16();
69335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
70335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    packet.getString(string);
71335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mVendorExtensionDesc = strdup((const char *)string);
72335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
73335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mFunctionalCode = packet.getUInt16();
74335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mOperations = packet.getAUInt16();
75335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mEvents = packet.getAUInt16();
76335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mDeviceProperties = packet.getAUInt16();
77335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mCaptureFormats = packet.getAUInt16();
78335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mPlaybackFormats = packet.getAUInt16();
79335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
80335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    packet.getString(string);
81335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mManufacturer = strdup((const char *)string);
82335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    packet.getString(string);
83335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mModel = strdup((const char *)string);
84335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    packet.getString(string);
85335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mVersion = strdup((const char *)string);
86335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    packet.getString(string);
87335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood    mSerial = strdup((const char *)string);
88335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood}
89335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
90335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodvoid MtpDeviceInfo::print() {
913856b090cd04ba5dd4a59a12430ed724d5995909Steve Block    ALOGV("Device Info:\n\tmStandardVersion: %d\n\tmVendorExtensionID: %d\n\tmVendorExtensionVersiony: %d\n",
92335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood            mStandardVersion, mVendorExtensionID, mVendorExtensionVersion);
933856b090cd04ba5dd4a59a12430ed724d5995909Steve Block    ALOGV("\tmVendorExtensionDesc: %s\n\tmFunctionalCode: %d\n\tmManufacturer: %s\n\tmModel: %s\n\tmVersion: %s\n\tmSerial: %s\n",
94335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood            mVendorExtensionDesc, mFunctionalCode, mManufacturer, mModel, mVersion, mSerial);
95335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood}
96335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
97335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood}  // namespace android
98