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 1913fe2a5330a5df662d7b1b136e7b08fe34c94a42Fabrice Di Meglioimport android.content.Context; 20fbfe55512596fd00c1fb51caa851e17dae60fd43Mike Lockwoodimport android.os.storage.StorageVolume; 21fbfe55512596fd00c1fb51caa851e17dae60fd43Mike Lockwood 227ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood/** 237ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * This class represents a storage unit on an MTP device. 247ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Used only for MTP support in USB responder mode. 257ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * MtpStorageInfo is used in MTP host mode 267ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 277ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @hide 287ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 297ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwoodpublic class MtpStorage { 307ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 317ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final int mStorageId; 327ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final String mPath; 337ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final String mDescription; 347ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood private final long mReserveSpace; 3551690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood private final boolean mRemovable; 367a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood private final long mMaxFileSize; 377ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 3813fe2a5330a5df662d7b1b136e7b08fe34c94a42Fabrice Di Meglio public MtpStorage(StorageVolume volume, Context context) { 39fbfe55512596fd00c1fb51caa851e17dae60fd43Mike Lockwood mStorageId = volume.getStorageId(); 40fbfe55512596fd00c1fb51caa851e17dae60fd43Mike Lockwood mPath = volume.getPath(); 411b8ef7e3165ff9aa52a4905dafc8d0f83e7403f9Jeff Sharkey mDescription = volume.getDescription(context); 426393b07134f99ee827ebac2d339b0f5449addb0bHenrik Engström mReserveSpace = volume.getMtpReserveSpace() * 1024L * 1024L; 43fbfe55512596fd00c1fb51caa851e17dae60fd43Mike Lockwood mRemovable = volume.isRemovable(); 447a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood mMaxFileSize = volume.getMaxFileSize(); 457ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 467ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 477ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 487ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the storage ID for the storage unit 497ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 507ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage ID 517ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 527ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final int getStorageId() { 537ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mStorageId; 547ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 557ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 567ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 577ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the file path for the storage unit's storage in the file system 587ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 597ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage file path 607ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 617ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final String getPath() { 627ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mPath; 637ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 647ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 657ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 667ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the description string for the storage unit 677ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 687ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * @return the storage unit description 697ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 707ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final String getDescription() { 717ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mDescription; 727ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 737ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 747ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood /** 757ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * Returns the amount of space to reserve on the storage file system. 767ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * This can be set to a non-zero value to prevent MTP from filling up the entire storage. 777ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood * 783b60dacb4e1871d1c7b410ac55fd3e5fd6bfacfbbo huang * @return reserved space in bytes. 797ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood */ 807ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood public final long getReserveSpace() { 817ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood return mReserveSpace; 827ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood } 837ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood 8451690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood /** 8551690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood * Returns true if the storage is removable. 8651690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood * 8751690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood * @return is removable 8851690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood */ 8951690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood public final boolean isRemovable() { 9051690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood return mRemovable; 9151690544aaeee82b1c50232cd57d50038b77f0c4Mike Lockwood } 927a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood 937a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood /** 947a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood * Returns maximum file size for the storage, or zero if it is unbounded. 957a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood * 967a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood * @return maximum file size 977a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood */ 987a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood public long getMaxFileSize() { 997a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood return mMaxFileSize; 1007a59dd2ce33b46cbc73eef964ddb4272ea1da8d1Mike Lockwood } 1017ae938be1b4fb8938f0f438cfd611cd9ed0da513Mike Lockwood} 102