MtpDatabase.h revision 828d19dd96b05fa99abdc517701e5366543c324f
156118b5b385adad0ff301f67be2cf601432d94baMike Lockwood/*
256118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * Copyright (C) 2010 The Android Open Source Project
356118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *
456118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
556118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * you may not use this file except in compliance with the License.
656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * You may obtain a copy of the License at
756118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *
856118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
956118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *
1056118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * Unless required by applicable law or agreed to in writing, software
1156118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
1256118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1356118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * See the License for the specific language governing permissions and
1456118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * limitations under the License.
1556118b5b385adad0ff301f67be2cf601432d94baMike Lockwood */
1656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
1756118b5b385adad0ff301f67be2cf601432d94baMike Lockwood#ifndef _MTP_DATABASE_H
1856118b5b385adad0ff301f67be2cf601432d94baMike Lockwood#define _MTP_DATABASE_H
1956118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
205bae7f615b6375820f61b28f6792cb2d01aab54bMike Lockwood#include "MtpTypes.h"
2156118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
228d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwoodnamespace android {
238d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood
2456118b5b385adad0ff301f67be2cf601432d94baMike Lockwoodclass MtpDataPacket;
25828d19dd96b05fa99abdc517701e5366543c324fMike Lockwoodclass MtpProperty;
2656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
278dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwoodclass MtpDatabase {
2856118b5b385adad0ff301f67be2cf601432d94baMike Lockwoodpublic:
292d6c9e9c4e5f261b252962bf8ce04c50000a8e2cMike Lockwood    virtual ~MtpDatabase() {}
308dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood
31d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // called from SendObjectInfo to reserve a database entry for the incoming file
32d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    virtual MtpObjectHandle         beginSendObject(const char* path,
338dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpObjectFormat format,
348dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpObjectHandle parent,
358dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpStorageID storage,
368dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            uint64_t size,
378dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            time_t modified) = 0;
388dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood
39d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // called to report success or failure of the SendObject file transfer
40d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // success should signal a notification of the new object's creation,
41d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // failure should remove the database entry created in beginSendObject
42d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    virtual void                    endSendObject(const char* path,
43d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectHandle handle,
44d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectFormat format,
45d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            bool succeeded) = 0;
46d815f79766984fce499e147ecbacc01914683f74Mike Lockwood
478dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual MtpObjectHandleList*    getObjectList(MtpStorageID storageID,
48d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectFormat format,
49d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectHandle parent) = 0;
5056118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
517a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood    virtual int                     getNumObjects(MtpStorageID storageID,
527a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood                                            MtpObjectFormat format,
537a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood                                            MtpObjectHandle parent) = 0;
547a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood
554b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood    // callee should delete[] the results from these
564b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood    // results can be NULL
574b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood    virtual MtpObjectFormatList*    getSupportedPlaybackFormats() = 0;
584b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood    virtual MtpObjectFormatList*    getSupportedCaptureFormats() = 0;
594b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood    virtual MtpObjectPropertyList*  getSupportedObjectProperties(MtpObjectFormat format) = 0;
604b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood    virtual MtpDevicePropertyList*  getSupportedDeviceProperties() = 0;
614b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood
62828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood    virtual MtpResponseCode         getObjectPropertyValue(MtpObjectHandle handle,
638dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpObjectProperty property,
648dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpDataPacket& packet) = 0;
6556118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
66828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood    virtual MtpResponseCode         setObjectPropertyValue(MtpObjectHandle handle,
67828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood                                            MtpObjectProperty property,
68828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood                                            MtpDataPacket& packet) = 0;
69828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood
70828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood    virtual MtpResponseCode         getDevicePropertyValue(MtpDeviceProperty property,
71828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood                                            MtpDataPacket& packet) = 0;
72828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood
73828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood    virtual MtpResponseCode         setDevicePropertyValue(MtpDeviceProperty property,
74828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood                                            MtpDataPacket& packet) = 0;
75828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood
76828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood    virtual MtpResponseCode         resetDeviceProperty(MtpDeviceProperty property) = 0;
77828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood
788dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual MtpResponseCode         getObjectInfo(MtpObjectHandle handle,
798dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpDataPacket& packet) = 0;
8056118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
8159c777a24a2c639dfd84b7bf17e430e6d3424866Mike Lockwood    virtual MtpResponseCode         getObjectFilePath(MtpObjectHandle handle,
828dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpString& filePath,
838dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            int64_t& fileLength) = 0;
849a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood
8559c777a24a2c639dfd84b7bf17e430e6d3424866Mike Lockwood    virtual MtpResponseCode         deleteFile(MtpObjectHandle handle) = 0;
869a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood
879a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood    virtual MtpObjectHandleList*    getObjectReferences(MtpObjectHandle handle) = 0;
889a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood
899a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood    virtual MtpResponseCode         setObjectReferences(MtpObjectHandle handle,
909a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood                                            MtpObjectHandleList* references) = 0;
919a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood
92828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood    virtual MtpProperty*            getObjectPropertyDesc(MtpObjectProperty property,
93828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood                                            MtpObjectFormat format) = 0;
94828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood
95828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood    virtual MtpProperty*            getDevicePropertyDesc(MtpDeviceProperty property) = 0;
9656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood};
9756118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
988d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood}; // namespace android
998d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood
10056118b5b385adad0ff301f67be2cf601432d94baMike Lockwood#endif // _MTP_DATABASE_H
101