1df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang/*
2df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * Copyright (C) 2017 The Android Open Source Project
3df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang *
4df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * Licensed under the Apache License, Version 2.0 (the "License");
5df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * you may not use this file except in compliance with the License.
6df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * You may obtain a copy of the License at
7df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang *
8df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang *      http://www.apache.org/licenses/LICENSE-2.0
9df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang *
10df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * Unless required by applicable law or agreed to in writing, software
11df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * distributed under the License is distributed on an "AS IS" BASIS,
12df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * See the License for the specific language governing permissions and
14df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang * limitations under the License.
15df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang */
16df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
17df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang#ifndef _MTP_DEV_HANDLE_H
18df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang#define _MTP_DEV_HANDLE_H
19df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
20df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang#include <android-base/unique_fd.h>
21df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang#include "IMtpHandle.h"
22df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
23df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhangnamespace android {
24df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
25df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhangclass MtpDevHandle : public IMtpHandle {
26df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhangprivate:
27df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    android::base::unique_fd mFd;
28df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
29df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhangpublic:
30df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    MtpDevHandle();
31df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    ~MtpDevHandle();
32df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    int read(void *data, size_t len);
33df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    int write(const void *data, size_t len);
34df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
35df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    int receiveFile(mtp_file_range mfr, bool);
36df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    int sendFile(mtp_file_range mfr);
37df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    int sendEvent(mtp_event me);
38df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
3963dac45aa868b9048c028967e9865c90a9ba544dJerry Zhang    int start(bool ptp);
40df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang    void close();
41df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang};
42df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
43df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang} // namespace android
44df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang
45df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2Jerry Zhang#endif // _MTP_FFS_HANDLE_H
46