From af32bb9c4f4f06e92de3435ed2db3153c0701094 Mon Sep 17 00:00:00 2001 From: bigbiff bigbiff Date: Tue, 18 Dec 2018 18:39:53 -0500 Subject: MTP FFS updates: This update splits old MTP code and new MTP code from Google into two trees, legacy and ffs. Depending on the SDK level, the build system will select the correct version. The reason for separating the versions out are due to older android trees not supporting the updated MTP code from Google. Most MTP code is from Google, with additions needed from implementing the Java functions in C++ for TWRP and FFS. We assume if you are in android-9.0 or above, your kernel has support for FFS over MTP. Verify that your init.rc is mounting the MTP FFS driver to the proper location. Change-Id: I4b107b239bd9bc5699527f9c8c77d9079f264a7e --- mtp/MtpServer.h | 155 -------------------------------------------------------- 1 file changed, 155 deletions(-) delete mode 100644 mtp/MtpServer.h (limited to 'mtp/MtpServer.h') diff --git a/mtp/MtpServer.h b/mtp/MtpServer.h deleted file mode 100644 index 944331134..000000000 --- a/mtp/MtpServer.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Copyright (C) 2014 TeamWin - bigbiff and Dees_Troy mtp database conversion to C++ - */ - -#ifndef _MTP_SERVER_H -#define _MTP_SERVER_H - -#include -#include -#include "MtpRequestPacket.h" -#include "MtpDatabase.h" -#include "MtpDataPacket.h" -#include "MtpResponsePacket.h" -#include "MtpEventPacket.h" -#include "mtp.h" -#include "MtpUtils.h" - - -class MtpDatabase; -class MtpStorage; - -class MtpServer { - -private: - // file descriptor for MTP kernel driver - int mFD; - android::Mutex mMutex; - MtpDatabase* mDatabase; - - // appear as a PTP device - bool mPtp; - - // group to own new files and folders - int mFileGroup; - // permissions for new files and directories - int mFilePermission; - int mDirectoryPermission; - - // current session ID - MtpSessionID mSessionID; - // true if we have an open session and mSessionID is valid - bool mSessionOpen; - - MtpRequestPacket mRequest; - MtpDataPacket mData; - MtpResponsePacket mResponse; - MtpEventPacket mEvent; - - MtpStorageList mStorages; - - // handle for new object, set by SendObjectInfo and used by SendObject - MtpObjectHandle mSendObjectHandle; - MtpObjectFormat mSendObjectFormat; - MtpString mSendObjectFilePath; - size_t mSendObjectFileSize; - - pthread_mutex_t mtpMutex; - - // represents an MTP object that is being edited using the android extensions - // for direct editing (BeginEditObject, SendPartialObject, TruncateObject and EndEditObject) - class ObjectEdit { - public: - MtpObjectHandle mHandle; - MtpString mPath; - uint64_t mSize; - MtpObjectFormat mFormat; - int mFD; - - ObjectEdit(MtpObjectHandle handle, const char* path, uint64_t size, - MtpObjectFormat format, int fd) - : mHandle(handle), mPath(path), mSize(size), mFormat(format), mFD(fd) { - } - - virtual ~ObjectEdit() { - close(mFD); - } - }; - android::Vector mObjectEditList; - -public: - MtpServer(MtpDatabase* database, bool ptp, - int fileGroup, int filePerm, int directoryPerm); - virtual ~MtpServer(); - - MtpStorage* getStorage(MtpStorageID id); - inline bool hasStorage() { return mStorages.size() > 0; } - bool hasStorage(MtpStorageID id); - void addStorage(MtpStorage* storage); - void removeStorage(MtpStorage* storage); - - void run(int fd); - - void sendObjectAdded(MtpObjectHandle handle); - void sendObjectRemoved(MtpObjectHandle handle); - void sendObjectUpdated(MtpObjectHandle handle); - -private: - void sendStoreAdded(MtpStorageID id); - void sendStoreRemoved(MtpStorageID id); - void sendEvent(MtpEventCode code, uint32_t param1); - - void addEditObject(MtpObjectHandle handle, MtpString& path, - uint64_t size, MtpObjectFormat format, int fd); - ObjectEdit* getEditObject(MtpObjectHandle handle); - void removeEditObject(MtpObjectHandle handle); - void commitEdit(ObjectEdit* edit); - - bool handleRequest(); - - MtpResponseCode doGetDeviceInfo(); - MtpResponseCode doOpenSession(); - MtpResponseCode doCloseSession(); - MtpResponseCode doGetStorageIDs(); - MtpResponseCode doGetStorageInfo(); - MtpResponseCode doGetObjectPropsSupported(); - MtpResponseCode doGetObjectHandles(); - MtpResponseCode doGetNumObjects(); - MtpResponseCode doGetObjectReferences(); - MtpResponseCode doSetObjectReferences(); - MtpResponseCode doGetObjectPropValue(); - MtpResponseCode doSetObjectPropValue(); - MtpResponseCode doGetDevicePropValue(); - MtpResponseCode doSetDevicePropValue(); - MtpResponseCode doResetDevicePropValue(); - MtpResponseCode doGetObjectPropList(); - MtpResponseCode doGetObjectInfo(); - MtpResponseCode doGetObject(); - MtpResponseCode doGetThumb(); - MtpResponseCode doGetPartialObject(MtpOperationCode operation); - MtpResponseCode doSendObjectInfo(); - MtpResponseCode doSendObject(); - MtpResponseCode doDeleteObject(); - MtpResponseCode doGetObjectPropDesc(); - MtpResponseCode doGetDevicePropDesc(); - MtpResponseCode doSendPartialObject(); - MtpResponseCode doTruncateObject(); - MtpResponseCode doBeginEditObject(); - MtpResponseCode doEndEditObject(); -}; - -#endif // _MTP_SERVER_H -- cgit v1.2.3