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_REQUEST_PACKET_H
1816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#define _MTP_REQUEST_PACKET_H
1916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
2016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpPacket.h"
2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "mtp.h"
2216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
23487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhangclass IMtpHandle;
2442d0b79a787814d42e4c6f9dfe14f13cc0f6a758Mike Lockwoodstruct usb_request;
2542d0b79a787814d42e4c6f9dfe14f13cc0f6a758Mike Lockwood
267850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android {
277850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood
2816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpRequestPacket : public MtpPacket {
2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
3016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic:
3116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood                        MtpRequestPacket();
3216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    virtual             ~MtpRequestPacket();
3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
3416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifdef MTP_DEVICE
35487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang    // fill our buffer with data from the given usb handle
36487be61fb0a38873aec1d12da92437fba5e728f2Jerry Zhang    int                 read(IMtpHandle *h);
3716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif
3816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
3916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifdef MTP_HOST
4016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    // write our buffer to the given endpoint
4142d0b79a787814d42e4c6f9dfe14f13cc0f6a758Mike Lockwood    int                 write(struct usb_request *request);
4216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif
4316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
4416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    inline MtpOperationCode    getOperationCode() const { return getContainerCode(); }
4516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    inline void                setOperationCode(MtpOperationCode code)
4616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood                                                    { return setContainerCode(code); }
47ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood    inline int                  getParameterCount() const { return mParameterCount; }
48ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood
49ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwoodprivate:
50ab063847e6e893740749029a04cce1f6b7345ed5Mike Lockwood    int     mParameterCount;
5116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood};
5216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
537850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android
547850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood
5516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_REQUEST_PACKET_H
56