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