MtpServer.h revision 916076c6d84dac9b104fbdf94af5dcd7bce669fd
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_SERVER_H 1816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#define _MTP_SERVER_H 1916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 2016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpRequestPacket.h" 2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpDataPacket.h" 2216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpResponsePacket.h" 2316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "mtp.h" 2416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 2516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpUtils.h" 2616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 277850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android { 287850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpStorage; 3016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpDatabase; 3116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpServer { 3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate: 3516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // file descriptor for MTP kernel driver 3616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int mFD; 3716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // path to our sqlite3 database 3916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood const char* mDatabasePath; 4016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 4116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpDatabase* mDatabase; 4216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 4316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // current session ID 4416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpSessionID mSessionID; 4516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // true if we have an open session and mSessionID is valid 4616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood bool mSessionOpen; 4716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 4816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpRequestPacket mRequest; 4916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpDataPacket mData; 5016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponsePacket mResponse; 5116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 5216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStorageList mStorages; 5316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 5416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // handle for new object, set by SendObjectInfo and used by SendObject 5516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpObjectHandle mSendObjectHandle; 5616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpString mSendObjectFilePath; 5716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood size_t mSendObjectFileSize; 5816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 5916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic: 6016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpServer(int fd, const char* databasePath); 6116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood virtual ~MtpServer(); 6216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 6316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void addStorage(const char* filePath); 6416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline void addStorage(MtpStorage* storage) { mStorages.push(storage); } 6516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStorage* getStorage(MtpStorageID id); 6616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void scanStorage(); 6716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void run(); 6816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 6916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate: 70916076c6d84dac9b104fbdf94af5dcd7bce669fdMike Lockwood bool handleRequest(); 7116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 7216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetDeviceInfo(); 7316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doOpenSession(); 7416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doCloseSession(); 7516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetStorageIDs(); 7616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetStorageInfo(); 7716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectPropsSupported(); 7816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectHandles(); 7916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectPropValue(); 8016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectInfo(); 8116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObject(); 8216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doSendObjectInfo(); 8316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doSendObject(); 8416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doDeleteObject(); 8516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectPropDesc(); 8616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}; 8716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 887850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android 897850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 9016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_SERVER_H 91