1487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang/* 2487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * Copyright (C) 2016 The Android Open Source Project 3487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * 4487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * you may not use this file except in compliance with the License. 6487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * You may obtain a copy of the License at 7487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * 8487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * http://www.apache.org/licenses/LICENSE-2.0 9487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * 10487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * Unless required by applicable law or agreed to in writing, software 11487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * See the License for the specific language governing permissions and 14487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang * limitations under the License. 15487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang */ 16487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang#ifndef _IMTP_HANDLE_H 17487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang#define _IMTP_HANDLE_H 18487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 19487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang#include <linux/usb/f_mtp.h> 20487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 21487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhangconstexpr char FFS_MTP_EP0[] = "/dev/usb-ffs/mtp/ep0"; 22487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 23487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhangclass IMtpHandle { 24487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhangpublic: 25487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang // Return number of bytes read/written, or -1 and errno is set 26487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual int read(void *data, int len) = 0; 27487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual int write(const void *data, int len) = 0; 28487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 29487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang // Return 0 if send/receive is successful, or -1 and errno is set 305410756e75fb7567540f13d3813f42f4ac3838a0Jerry Zhang virtual int receiveFile(mtp_file_range mfr, bool zero_packet) = 0; 31487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual int sendFile(mtp_file_range mfr) = 0; 32487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual int sendEvent(mtp_event me) = 0; 33487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 34487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang // Return 0 if operation is successful, or -1 else 35487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual int start() = 0; 36487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual int configure(bool ptp) = 0; 37487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 38487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual void close() = 0; 39487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 40487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang virtual ~IMtpHandle() {} 41487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang}; 42487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 43487be61fb0a38873aec1d12da92437fba5e728f2Jerry ZhangIMtpHandle *get_ffs_handle(); 44487be61fb0a38873aec1d12da92437fba5e728f2Jerry ZhangIMtpHandle *get_mtp_handle(); 45487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 46487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang#endif // _IMTP_HANDLE_H 47487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang 48