MtpResponsePacket.cpp revision 16864bae0f51c32c456da2c43adf7a057c0c4882
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#include <stdio.h>
1816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include <sys/types.h>
1916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include <fcntl.h>
2016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpResponsePacket.h"
2216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
2316864bae0f51c32c456da2c43adf7a057c0c4882Mike LockwoodMtpResponsePacket::MtpResponsePacket()
2416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    :   MtpPacket(512)
2516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood{
2616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}
2716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
2816864bae0f51c32c456da2c43adf7a057c0c4882Mike LockwoodMtpResponsePacket::~MtpResponsePacket() {
2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}
3016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
3116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifdef MTP_DEVICE
3216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodint MtpResponsePacket::write(int fd) {
3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
3416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_RESPONSE);
3516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    int ret = ::write(fd, mBuffer, mPacketSize);
3616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    return (ret < 0 ? ret : 0);
3716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}
3816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif
3916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
4016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifdef MTP_HOST
4116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    // read our buffer from the given endpoint
4216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodint MtpResponsePacket::read(struct usb_endpoint *ep) {
4316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    int ret = transfer(ep, mBuffer, mBufferSize);
4416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood     if (ret >= 0)
4516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood        mPacketSize = ret;
4616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    else
4716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood        mPacketSize = 0;
4816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood    return ret;
4916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}
5016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif
5116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
5216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood
53