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_DATABASE_H 1816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#define _MTP_DATABASE_H 1916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 20335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#include "MtpTypes.h" 2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 227850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android { 237850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 2416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpDataPacket; 258277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwoodclass MtpProperty; 267d77dcfadd7fb637ed2c3aef5bb3990dd0a67dc0Mike Lockwoodclass MtpObjectInfo; 2716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 280250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwoodclass MtpDatabase { 2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic: 30dda7e2b7378755637f188cca7c5ae854427a28f7Mike Lockwood virtual ~MtpDatabase() {} 310250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood 324714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood // called from SendObjectInfo to reserve a database entry for the incoming file 334714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood virtual MtpObjectHandle beginSendObject(const char* path, 340250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood MtpObjectFormat format, 350250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood MtpObjectHandle parent, 360250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood MtpStorageID storage, 370250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood uint64_t size, 380250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood time_t modified) = 0; 390250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood 404714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood // called to report success or failure of the SendObject file transfer 414714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood // success should signal a notification of the new object's creation, 424714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood // failure should remove the database entry created in beginSendObject 434714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood virtual void endSendObject(const char* path, 444714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood MtpObjectHandle handle, 454714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood MtpObjectFormat format, 464714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood bool succeeded) = 0; 474714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood 480250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood virtual MtpObjectHandleList* getObjectList(MtpStorageID storageID, 494714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood MtpObjectFormat format, 504714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood MtpObjectHandle parent) = 0; 5116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 52343af4ef512869695456a91519e73ed3c3d82101Mike Lockwood virtual int getNumObjects(MtpStorageID storageID, 53343af4ef512869695456a91519e73ed3c3d82101Mike Lockwood MtpObjectFormat format, 54343af4ef512869695456a91519e73ed3c3d82101Mike Lockwood MtpObjectHandle parent) = 0; 55343af4ef512869695456a91519e73ed3c3d82101Mike Lockwood 56782aef17c9921a3bf401a0432878df5031f2328bMike Lockwood // callee should delete[] the results from these 57782aef17c9921a3bf401a0432878df5031f2328bMike Lockwood // results can be NULL 58782aef17c9921a3bf401a0432878df5031f2328bMike Lockwood virtual MtpObjectFormatList* getSupportedPlaybackFormats() = 0; 59782aef17c9921a3bf401a0432878df5031f2328bMike Lockwood virtual MtpObjectFormatList* getSupportedCaptureFormats() = 0; 60782aef17c9921a3bf401a0432878df5031f2328bMike Lockwood virtual MtpObjectPropertyList* getSupportedObjectProperties(MtpObjectFormat format) = 0; 61782aef17c9921a3bf401a0432878df5031f2328bMike Lockwood virtual MtpDevicePropertyList* getSupportedDeviceProperties() = 0; 62782aef17c9921a3bf401a0432878df5031f2328bMike Lockwood 638277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood virtual MtpResponseCode getObjectPropertyValue(MtpObjectHandle handle, 640250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood MtpObjectProperty property, 650250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood MtpDataPacket& packet) = 0; 6616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 678277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood virtual MtpResponseCode setObjectPropertyValue(MtpObjectHandle handle, 688277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpObjectProperty property, 698277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpDataPacket& packet) = 0; 708277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood 718277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood virtual MtpResponseCode getDevicePropertyValue(MtpDeviceProperty property, 728277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpDataPacket& packet) = 0; 738277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood 748277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood virtual MtpResponseCode setDevicePropertyValue(MtpDeviceProperty property, 758277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpDataPacket& packet) = 0; 768277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood 778277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood virtual MtpResponseCode resetDeviceProperty(MtpDeviceProperty property) = 0; 788277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood 79b6da06e9dfb916da4b88e09e8a83e22ddae445b5Mike Lockwood virtual MtpResponseCode getObjectPropertyList(MtpObjectHandle handle, 8040ce1f262cc4edbc8b7c470830325466263acaecMike Lockwood uint32_t format, uint32_t property, 81b6da06e9dfb916da4b88e09e8a83e22ddae445b5Mike Lockwood int groupCode, int depth, 82b6da06e9dfb916da4b88e09e8a83e22ddae445b5Mike Lockwood MtpDataPacket& packet) = 0; 83b6da06e9dfb916da4b88e09e8a83e22ddae445b5Mike Lockwood 840250361b110267a139cc0865ff7d2f13b4d63bdfMike Lockwood virtual MtpResponseCode getObjectInfo(MtpObjectHandle handle, 857d77dcfadd7fb637ed2c3aef5bb3990dd0a67dc0Mike Lockwood MtpObjectInfo& info) = 0; 8616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 8764000788211f4c7e78c80a4a155390d1316e1176Mike Lockwood virtual void* getThumbnail(MtpObjectHandle handle, size_t& outThumbSize) = 0; 8864000788211f4c7e78c80a4a155390d1316e1176Mike Lockwood 899c04c4cc038f924d9cb98798e1c07fe6017e85d0Mike Lockwood virtual MtpResponseCode getObjectFilePath(MtpObjectHandle handle, 90fd34626771a63d3a835863e1b4bf71dcb26e28d8Mike Lockwood MtpString& outFilePath, 91fd34626771a63d3a835863e1b4bf71dcb26e28d8Mike Lockwood int64_t& outFileLength, 92fd34626771a63d3a835863e1b4bf71dcb26e28d8Mike Lockwood MtpObjectFormat& outFormat) = 0; 93438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood 949c04c4cc038f924d9cb98798e1c07fe6017e85d0Mike Lockwood virtual MtpResponseCode deleteFile(MtpObjectHandle handle) = 0; 95438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood 96438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood virtual MtpObjectHandleList* getObjectReferences(MtpObjectHandle handle) = 0; 97438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood 98438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood virtual MtpResponseCode setObjectReferences(MtpObjectHandle handle, 99438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood MtpObjectHandleList* references) = 0; 100438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood 1018277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood virtual MtpProperty* getObjectPropertyDesc(MtpObjectProperty property, 1028277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpObjectFormat format) = 0; 1038277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood 1048277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood virtual MtpProperty* getDevicePropertyDesc(MtpDeviceProperty property) = 0; 1056b3a9d15c8a2282c03f1df7d72a55b6800d4ececMike Lockwood 1066b3a9d15c8a2282c03f1df7d72a55b6800d4ececMike Lockwood virtual void sessionStarted() = 0; 1076b3a9d15c8a2282c03f1df7d72a55b6800d4ececMike Lockwood 1086b3a9d15c8a2282c03f1df7d72a55b6800d4ececMike Lockwood virtual void sessionEnded() = 0; 10916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}; 11016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 1117850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android 1127850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 11316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_DATABASE_H 114