Home | History | Annotate | Download | only in mtp
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef _MTP_DATABASE_H
     18 #define _MTP_DATABASE_H
     19 
     20 #include "MtpTypes.h"
     21 
     22 namespace android {
     23 
     24 class MtpDataPacket;
     25 class MtpProperty;
     26 class MtpObjectInfo;
     27 
     28 class MtpDatabase {
     29 public:
     30     virtual ~MtpDatabase() {}
     31 
     32     // called from SendObjectInfo to reserve a database entry for the incoming file
     33     virtual MtpObjectHandle         beginSendObject(const char* path,
     34                                             MtpObjectFormat format,
     35                                             MtpObjectHandle parent,
     36                                             MtpStorageID storage,
     37                                             uint64_t size,
     38                                             time_t modified) = 0;
     39 
     40     // called to report success or failure of the SendObject file transfer
     41     // success should signal a notification of the new object's creation,
     42     // failure should remove the database entry created in beginSendObject
     43     virtual void                    endSendObject(const char* path,
     44                                             MtpObjectHandle handle,
     45                                             MtpObjectFormat format,
     46                                             bool succeeded) = 0;
     47 
     48     virtual MtpObjectHandleList*    getObjectList(MtpStorageID storageID,
     49                                             MtpObjectFormat format,
     50                                             MtpObjectHandle parent) = 0;
     51 
     52     virtual int                     getNumObjects(MtpStorageID storageID,
     53                                             MtpObjectFormat format,
     54                                             MtpObjectHandle parent) = 0;
     55 
     56     // callee should delete[] the results from these
     57     // results can be NULL
     58     virtual MtpObjectFormatList*    getSupportedPlaybackFormats() = 0;
     59     virtual MtpObjectFormatList*    getSupportedCaptureFormats() = 0;
     60     virtual MtpObjectPropertyList*  getSupportedObjectProperties(MtpObjectFormat format) = 0;
     61     virtual MtpDevicePropertyList*  getSupportedDeviceProperties() = 0;
     62 
     63     virtual MtpResponseCode         getObjectPropertyValue(MtpObjectHandle handle,
     64                                             MtpObjectProperty property,
     65                                             MtpDataPacket& packet) = 0;
     66 
     67     virtual MtpResponseCode         setObjectPropertyValue(MtpObjectHandle handle,
     68                                             MtpObjectProperty property,
     69                                             MtpDataPacket& packet) = 0;
     70 
     71     virtual MtpResponseCode         getDevicePropertyValue(MtpDeviceProperty property,
     72                                             MtpDataPacket& packet) = 0;
     73 
     74     virtual MtpResponseCode         setDevicePropertyValue(MtpDeviceProperty property,
     75                                             MtpDataPacket& packet) = 0;
     76 
     77     virtual MtpResponseCode         resetDeviceProperty(MtpDeviceProperty property) = 0;
     78 
     79     virtual MtpResponseCode         getObjectPropertyList(MtpObjectHandle handle,
     80                                             uint32_t format, uint32_t property,
     81                                             int groupCode, int depth,
     82                                             MtpDataPacket& packet) = 0;
     83 
     84     virtual MtpResponseCode         getObjectInfo(MtpObjectHandle handle,
     85                                             MtpObjectInfo& info) = 0;
     86 
     87     virtual void*                   getThumbnail(MtpObjectHandle handle, size_t& outThumbSize) = 0;
     88 
     89     virtual MtpResponseCode         getObjectFilePath(MtpObjectHandle handle,
     90                                             MtpString& outFilePath,
     91                                             int64_t& outFileLength,
     92                                             MtpObjectFormat& outFormat) = 0;
     93 
     94     virtual MtpResponseCode         deleteFile(MtpObjectHandle handle) = 0;
     95 
     96     virtual MtpObjectHandleList*    getObjectReferences(MtpObjectHandle handle) = 0;
     97 
     98     virtual MtpResponseCode         setObjectReferences(MtpObjectHandle handle,
     99                                             MtpObjectHandleList* references) = 0;
    100 
    101     virtual MtpProperty*            getObjectPropertyDesc(MtpObjectProperty property,
    102                                             MtpObjectFormat format) = 0;
    103 
    104     virtual MtpProperty*            getDevicePropertyDesc(MtpDeviceProperty property) = 0;
    105 
    106     virtual void                    sessionStarted() = 0;
    107 
    108     virtual void                    sessionEnded() = 0;
    109 };
    110 
    111 }; // namespace android
    112 
    113 #endif // _MTP_DATABASE_H
    114