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