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