MtpStorage.java revision 51690544aaeee82b1c50232cd57d50038b77f0c4
17ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood/* 27ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Copyright (C) 2011 The Android Open Source Project 37ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 47ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 57ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * you may not use this file except in compliance with the License. 67ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * You may obtain a copy of the License at 77ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 87ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 97ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 107ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Unless required by applicable law or agreed to in writing, software 117ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 127ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * See the License for the specific language governing permissions and 147ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * limitations under the License. 157ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 167ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 177ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwoodpackage android.mtp; 187ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 197ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood/** 207ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * This class represents a storage unit on an MTP device. 217ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Used only for MTP support in USB responder mode. 227ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * MtpStorageInfo is used in MTP host mode 237ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 247ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @hide 257ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 267ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwoodpublic class MtpStorage { 277ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 287ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final int mStorageId; 297ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final String mPath; 307ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final String mDescription; 317ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final long mReserveSpace; 3251690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood private final boolean mRemovable; 337ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 3451690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood public MtpStorage(int id, String path, String description, 3551690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood long reserveSpace, boolean removable) { 367ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood mStorageId = id; 377ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood mPath = path; 387ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood mDescription = description; 397ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood mReserveSpace = reserveSpace; 4051690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood mRemovable = removable; 417ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 427ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 437ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 447ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the storage ID for the storage unit 457ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 467ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage ID 477ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 487ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final int getStorageId() { 497ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mStorageId; 507ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 517ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 527ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 537ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Generates a storage ID for storage of given index. 547ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Index 0 is for primary external storage 557ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 567ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage ID 577ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 587ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public static int getStorageId(int index) { 597ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood // storage ID is 0x00010001 for primary storage, 607ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood // then 0x00020001, 0x00030001, etc. for secondary storages 617ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return ((index + 1) << 16) + 1; 627ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 637ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 647ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 657ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the file path for the storage unit's storage in the file system 667ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 677ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage file path 687ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 697ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final String getPath() { 707ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mPath; 717ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 727ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 737ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 747ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the description string for the storage unit 757ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 767ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage unit description 777ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 787ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final String getDescription() { 797ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mDescription; 807ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 817ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 827ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 837ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the amount of space to reserve on the storage file system. 847ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * This can be set to a non-zero value to prevent MTP from filling up the entire storage. 857ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 867ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage unit description 877ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 887ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final long getReserveSpace() { 897ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mReserveSpace; 907ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 917ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 9251690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood /** 9351690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood * Returns true if the storage is removable. 9451690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood * 9551690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood * @return is removable 9651690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood */ 9751690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood public final boolean isRemovable() { 9851690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood return mRemovable; 9951690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood } 1007ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood} 101