MtpServer.h revision 8277cec96ffa55082962591bca1c55abbeec8c26
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" 23873871f3e75831bcda6c3f75bb4d53355ca5c53aMike Lockwood#include "MtpEventPacket.h" 2416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "mtp.h" 2516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 2616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpUtils.h" 2716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 287850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android { 297850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 301865a5ddcfe7b0e8dc211419aea1094b1491a5fdMike Lockwoodclass MtpDatabase; 311865a5ddcfe7b0e8dc211419aea1094b1491a5fdMike Lockwoodclass MtpStorage; 3216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpServer { 3416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate: 3616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // file descriptor for MTP kernel driver 3716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int mFD; 3816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 391865a5ddcfe7b0e8dc211419aea1094b1491a5fdMike Lockwood MtpDatabase* mDatabase; 4016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 418e2a280ab7f98bf00ff2651f1f93c8f8bd46c08dMike Lockwood // group to own new files and folders 428e2a280ab7f98bf00ff2651f1f93c8f8bd46c08dMike Lockwood int mFileGroup; 438e2a280ab7f98bf00ff2651f1f93c8f8bd46c08dMike Lockwood // permissions for new files and directories 448e2a280ab7f98bf00ff2651f1f93c8f8bd46c08dMike Lockwood int mFilePermission; 458e2a280ab7f98bf00ff2651f1f93c8f8bd46c08dMike Lockwood int mDirectoryPermission; 468e2a280ab7f98bf00ff2651f1f93c8f8bd46c08dMike Lockwood 4716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // current session ID 4816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpSessionID mSessionID; 4916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // true if we have an open session and mSessionID is valid 5016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood bool mSessionOpen; 5116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 5216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpRequestPacket mRequest; 5316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpDataPacket mData; 5416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponsePacket mResponse; 55873871f3e75831bcda6c3f75bb4d53355ca5c53aMike Lockwood MtpEventPacket mEvent; 5616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 5716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStorageList mStorages; 5816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 5916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // handle for new object, set by SendObjectInfo and used by SendObject 6016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpObjectHandle mSendObjectHandle; 614714b0766ecf48f09f39b4781a5c4deafc092d49Mike Lockwood MtpObjectFormat mSendObjectFormat; 6216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpString mSendObjectFilePath; 6316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood size_t mSendObjectFileSize; 6416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 6516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic: 661865a5ddcfe7b0e8dc211419aea1094b1491a5fdMike Lockwood MtpServer(int fd, MtpDatabase* database, 678e2a280ab7f98bf00ff2651f1f93c8f8bd46c08dMike Lockwood int fileGroup, int filePerm, int directoryPerm); 6816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood virtual ~MtpServer(); 6916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 7016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void addStorage(const char* filePath); 7116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline void addStorage(MtpStorage* storage) { mStorages.push(storage); } 7216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpStorage* getStorage(MtpStorageID id); 7316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void run(); 7416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 75873871f3e75831bcda6c3f75bb4d53355ca5c53aMike Lockwood void sendObjectAdded(MtpObjectHandle handle); 76873871f3e75831bcda6c3f75bb4d53355ca5c53aMike Lockwood void sendObjectRemoved(MtpObjectHandle handle); 77873871f3e75831bcda6c3f75bb4d53355ca5c53aMike Lockwood 7816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate: 79916076c6d84dac9b104fbdf94af5dcd7bce669fdMike Lockwood bool handleRequest(); 8016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 8116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetDeviceInfo(); 8216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doOpenSession(); 8316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doCloseSession(); 8416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetStorageIDs(); 8516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetStorageInfo(); 8616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectPropsSupported(); 8716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectHandles(); 88343af4ef512869695456a91519e73ed3c3d82101Mike Lockwood MtpResponseCode doGetNumObjects(); 89438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood MtpResponseCode doGetObjectReferences(); 90438344fba74ddd6b931ac733fa48643f27b63de3Mike Lockwood MtpResponseCode doSetObjectReferences(); 9116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectPropValue(); 928277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpResponseCode doSetObjectPropValue(); 938277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpResponseCode doGetDevicePropValue(); 948277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpResponseCode doSetDevicePropValue(); 958277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpResponseCode doResetDevicePropValue(); 9616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectInfo(); 9716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObject(); 9816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doSendObjectInfo(); 9916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doSendObject(); 10016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doDeleteObject(); 10116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpResponseCode doGetObjectPropDesc(); 1028277cec96ffa55082962591bca1c55abbeec8c26Mike Lockwood MtpResponseCode doGetDevicePropDesc(); 10316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}; 10416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 1057850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android 1067850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 10716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_SERVER_H 108