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