1 /*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #ifndef FRAMEWORKS_SERVICES_MEDIA_MTP_INCLUDE_MTP_DRIVER_H_
16 #define FRAMEWORKS_SERVICES_MEDIA_MTP_INCLUDE_MTP_DRIVER_H_
17 #include <memory>
18 #include <stdint.h>
19 #include <vector>
20 #include "mtp_constants.h"
21 #include "v1_0/iusbfn_mtp_interface.h"
22 namespace OHOS {
23 namespace Media {
24 class MtpDriver {
25 public:
26     MtpDriver();
27     ~MtpDriver();
28     int OpenDriver();
29     int CloseDriver();
30 
31     int Read(std::vector<uint8_t> &outBuffer, uint32_t &outReadSize);
32     void Write(std::vector<uint8_t> &buffer, uint32_t &bufferSize);
33 
34     int ReceiveObj(MtpFileRange &mfr);
35     int SendObj(MtpFileRange &mfr);
36     int WriteEvent(EventMtp &em);
37 private:
38     bool usbOpenFlag {false};
39     sptr<OHOS::HDI::Usb::Gadget::Mtp::V1_0::IUsbfnMtpInterface> usbfnMtpInterface = nullptr;
40 };
41 } // namespace Media
42 } // namespace OHOS
43 #endif  // FRAMEWORKS_SERVICES_MEDIA_MTP_INCLUDE_MTP_DRIVER_H_
44