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