116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood/*
216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * Copyright (C) 2010 The Android Open Source Project
316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood *
416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * you may not use this file except in compliance with the License.
616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * You may obtain a copy of the License at
716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood *
816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood *
1016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * Unless required by applicable law or agreed to in writing, software
1116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
1216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * See the License for the specific language governing permissions and
1416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood * limitations under the License.
1516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood */
1616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
1716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifndef _MTP_STORAGE_H
1816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#define _MTP_STORAGE_H
1916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
20a849440ca96e93f700d62c6e41d48905b4d405b6Mike Lockwood#include "MtpTypes.h"
2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "mtp.h"
2216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
237850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android {
247850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood
2516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpDatabase;
2616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
2716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpStorage {
2816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate:
3016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    MtpStorageID            mStorageID;
31a849440ca96e93f700d62c6e41d48905b4d405b6Mike Lockwood    MtpString               mFilePath;
320241cacb85dbac20b28036bbb8025dfd513e3753Mike Lockwood    MtpString               mDescription;
3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    uint64_t                mMaxCapacity;
349b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958Mike Lockwood    uint64_t                mMaxFileSize;
3520c3be0e0394e1340c036685eb1edb8f6ef5a2acMike Lockwood    // amount of free space to leave unallocated
3620c3be0e0394e1340c036685eb1edb8f6ef5a2acMike Lockwood    uint64_t                mReserveSpace;
377efab4282a7179b2f53a3dbccee3e70d7fce6a7fMike Lockwood    bool                    mRemovable;
3816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
3916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic:
4020c3be0e0394e1340c036685eb1edb8f6ef5a2acMike Lockwood                            MtpStorage(MtpStorageID id, const char* filePath,
417efab4282a7179b2f53a3dbccee3e70d7fce6a7fMike Lockwood                                    const char* description, uint64_t reserveSpace,
429b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958Mike Lockwood                                    bool removable, uint64_t maxFileSize);
4316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    virtual                 ~MtpStorage();
4416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
4516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    inline MtpStorageID     getStorageID() const { return mStorageID; }
4616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    int                     getType() const;
4716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    int                     getFileSystemType() const;
4816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    int                     getAccessCapability() const;
4916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    uint64_t                getMaxCapacity();
5016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    uint64_t                getFreeSpace();
5116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    const char*             getDescription() const;
52a849440ca96e93f700d62c6e41d48905b4d405b6Mike Lockwood    inline const char*      getPath() const { return (const char *)mFilePath; }
537efab4282a7179b2f53a3dbccee3e70d7fce6a7fMike Lockwood    inline bool             isRemovable() const { return mRemovable; }
549b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958Mike Lockwood    inline uint64_t         getMaxFileSize() const { return mMaxFileSize; }
5516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood};
5616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
577850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android
587850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood
5916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_STORAGE_H
60