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