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; 269df53fae3afd1c6b5278216be2fd33a255602aefMike Lockwoodclass MtpObjectInfo; 2756118b5b385adad0ff301f67be2cf601432d94baMike Lockwood 288dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwoodclass MtpDatabase { 2956118b5b385adad0ff301f67be2cf601432d94baMike Lockwoodpublic: 302d6c9e9c4e5f261b252962bf8ce04c50000a8e2cMike Lockwood virtual ~MtpDatabase() {} 318dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood 32d815f79766984fce499e147ecbacc01914683f74Mike Lockwood // called from SendObjectInfo to reserve a database entry for the incoming file 33d815f79766984fce499e147ecbacc01914683f74Mike Lockwood virtual MtpObjectHandle beginSendObject(const char* path, 348dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood MtpObjectFormat format, 358dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood MtpObjectHandle parent, 368dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood MtpStorageID storage, 378dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood uint64_t size, 388dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood time_t modified) = 0; 398dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood 40d815f79766984fce499e147ecbacc01914683f74Mike Lockwood // called to report success or failure of the SendObject file transfer 41d815f79766984fce499e147ecbacc01914683f74Mike Lockwood // success should signal a notification of the new object's creation, 42d815f79766984fce499e147ecbacc01914683f74Mike Lockwood // failure should remove the database entry created in beginSendObject 43d815f79766984fce499e147ecbacc01914683f74Mike Lockwood virtual void endSendObject(const char* path, 44d815f79766984fce499e147ecbacc01914683f74Mike Lockwood MtpObjectHandle handle, 45d815f79766984fce499e147ecbacc01914683f74Mike Lockwood MtpObjectFormat format, 46d815f79766984fce499e147ecbacc01914683f74Mike Lockwood bool succeeded) = 0; 47d815f79766984fce499e147ecbacc01914683f74Mike Lockwood 488dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood virtual MtpObjectHandleList* getObjectList(MtpStorageID storageID, 49d815f79766984fce499e147ecbacc01914683f74Mike Lockwood MtpObjectFormat format, 50d815f79766984fce499e147ecbacc01914683f74Mike Lockwood MtpObjectHandle parent) = 0; 5156118b5b385adad0ff301f67be2cf601432d94baMike Lockwood 527a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood virtual int getNumObjects(MtpStorageID storageID, 537a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood MtpObjectFormat format, 547a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood MtpObjectHandle parent) = 0; 557a047c89862febf63ce1bb5873179c7a2ff8d9d3Mike Lockwood 564b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood // callee should delete[] the results from these 574b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood // results can be NULL 584b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood virtual MtpObjectFormatList* getSupportedPlaybackFormats() = 0; 594b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood virtual MtpObjectFormatList* getSupportedCaptureFormats() = 0; 604b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood virtual MtpObjectPropertyList* getSupportedObjectProperties(MtpObjectFormat format) = 0; 614b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood virtual MtpDevicePropertyList* getSupportedDeviceProperties() = 0; 624b322ce4fb86b5a7a6e50633a3a9f498ca8d4706Mike Lockwood 63828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood virtual MtpResponseCode getObjectPropertyValue(MtpObjectHandle handle, 648dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood MtpObjectProperty property, 658dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood MtpDataPacket& packet) = 0; 6656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood 67828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood virtual MtpResponseCode setObjectPropertyValue(MtpObjectHandle handle, 68828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood MtpObjectProperty property, 69828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood MtpDataPacket& packet) = 0; 70828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood 71828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood virtual MtpResponseCode getDevicePropertyValue(MtpDeviceProperty property, 72828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood MtpDataPacket& packet) = 0; 73828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood 74828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood virtual MtpResponseCode setDevicePropertyValue(MtpDeviceProperty property, 75828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood MtpDataPacket& packet) = 0; 76828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood 77828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood virtual MtpResponseCode resetDeviceProperty(MtpDeviceProperty property) = 0; 78828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood 79e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood virtual MtpResponseCode getObjectPropertyList(MtpObjectHandle handle, 807d7fb63071ca370f77ed69055ac30341b8388d15Mike Lockwood uint32_t format, uint32_t property, 81e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood int groupCode, int depth, 82e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood MtpDataPacket& packet) = 0; 83e2ad6ec1718ef0c0e8230f8f62e7cfefcf598b6aMike Lockwood 848dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood virtual MtpResponseCode getObjectInfo(MtpObjectHandle handle, 859df53fae3afd1c6b5278216be2fd33a255602aefMike Lockwood MtpObjectInfo& info) = 0; 8656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood 87c89f22242b955ae748765b3465b819b40f70ee5fMike Lockwood virtual void* getThumbnail(MtpObjectHandle handle, size_t& outThumbSize) = 0; 88c89f22242b955ae748765b3465b819b40f70ee5fMike Lockwood 8959c777a24a2c639dfd84b7bf17e430e6d3424866Mike Lockwood virtual MtpResponseCode getObjectFilePath(MtpObjectHandle handle, 90365e03e4943b2d2f4d1e602409ab0e770ea77d1dMike Lockwood MtpString& outFilePath, 91365e03e4943b2d2f4d1e602409ab0e770ea77d1dMike Lockwood int64_t& outFileLength, 92365e03e4943b2d2f4d1e602409ab0e770ea77d1dMike Lockwood MtpObjectFormat& outFormat) = 0; 939a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood 9459c777a24a2c639dfd84b7bf17e430e6d3424866Mike Lockwood virtual MtpResponseCode deleteFile(MtpObjectHandle handle) = 0; 959a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood 969a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood virtual MtpObjectHandleList* getObjectReferences(MtpObjectHandle handle) = 0; 979a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood 989a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood virtual MtpResponseCode setObjectReferences(MtpObjectHandle handle, 999a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood MtpObjectHandleList* references) = 0; 1009a2046fb5ceeee4d5334274cbff15f1058bb3244Mike Lockwood 101828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood virtual MtpProperty* getObjectPropertyDesc(MtpObjectProperty property, 102828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood MtpObjectFormat format) = 0; 103828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood 104828d19dd96b05fa99abdc517701e5366543c324fMike Lockwood virtual MtpProperty* getDevicePropertyDesc(MtpDeviceProperty property) = 0; 1052837eefc5459427138c080d445bb491c75630163Mike Lockwood 1062837eefc5459427138c080d445bb491c75630163Mike Lockwood virtual void sessionStarted() = 0; 1072837eefc5459427138c080d445bb491c75630163Mike Lockwood 1082837eefc5459427138c080d445bb491c75630163Mike Lockwood virtual void sessionEnded() = 0; 10956118b5b385adad0ff301f67be2cf601432d94baMike Lockwood}; 11056118b5b385adad0ff301f67be2cf601432d94baMike Lockwood 1118d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood}; // namespace android 1128d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood 11356118b5b385adad0ff301f67be2cf601432d94baMike Lockwood#endif // _MTP_DATABASE_H 114