1e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood/* 2e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Copyright (C) 2010 The Android Open Source Project 3e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * 4e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * you may not use this file except in compliance with the License. 6e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * You may obtain a copy of the License at 7e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * 8e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * 10e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Unless required by applicable law or agreed to in writing, software 11e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * See the License for the specific language governing permissions and 14e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * limitations under the License. 15e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood */ 16e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 170cd0136d440cf6ad9d5fab430269116786e671ecMike Lockwoodpackage android.mtp; 18e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 19e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood/** 20e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * Encapsulates the ObjectPropList dataset used by the GetObjectPropList command. 21e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood * The fields of this class are read by JNI code in android_media_MtpDatabase.cpp 22e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood */ 23e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 247d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwoodclass MtpPropertyList { 25e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 26e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // number of results returned 277d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood private int mCount; 287d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood // maximum number of results 297d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood private final int mMaxCount; 30e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // result code for GetObjectPropList 31e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood public int mResult; 32e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of object handles (first field in quadruplet) 33e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood public final int[] mObjectHandles; 34e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of object propery codes (second field in quadruplet) 35e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood public final int[] mPropertyCodes; 36e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of data type codes (third field in quadruplet) 37e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood public final int[] mDataTypes; 38e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of long int property values (fourth field in quadruplet, when value is integer type) 39e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood public long[] mLongValues; 40e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // list of long int property values (fourth field in quadruplet, when value is string type) 41e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood public String[] mStringValues; 42e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 43e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // constructor only called from MtpDatabase 447d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood public MtpPropertyList(int maxCount, int result) { 457d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood mMaxCount = maxCount; 46e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mResult = result; 477d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood mObjectHandles = new int[maxCount]; 487d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood mPropertyCodes = new int[maxCount]; 497d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood mDataTypes = new int[maxCount]; 50e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood // mLongValues and mStringValues are created lazily since both might not be necessary 51e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 52e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 537d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood public void append(int handle, int property, int type, long value) { 547d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood int index = mCount++; 55e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood if (mLongValues == null) { 567d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood mLongValues = new long[mMaxCount]; 57e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 58e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mObjectHandles[index] = handle; 59e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mPropertyCodes[index] = property; 60e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mDataTypes[index] = type; 61e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mLongValues[index] = value; 62e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 63e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 647d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood public void append(int handle, int property, String value) { 657d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood int index = mCount++; 66e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood if (mStringValues == null) { 677d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood mStringValues = new String[mMaxCount]; 68e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 69e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mObjectHandles[index] = handle; 70e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mPropertyCodes[index] = property; 71e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mDataTypes[index] = MtpConstants.TYPE_STR; 72e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mStringValues[index] = value; 73e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 74e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 75e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood public void setResult(int result) { 76e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood mResult = result; 77e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood } 78e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood} 79