MtpDataPacket.h revision 335dd2be955607f2632eabc25045857f2cc8b674
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_DATA_PACKET_H 1816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#define _MTP_DATA_PACKET_H 1916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 2016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "MtpPacket.h" 2116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#include "mtp.h" 2216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 237850ef999740f214a1990a9c090d3f3865d435aaMike Lockwoodnamespace android { 247850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 2516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodclass MtpDataPacket : public MtpPacket { 2616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodprivate: 2716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // current offset for get/put methods 2816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int mOffset; 2916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwoodpublic: 3116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood MtpDataPacket(); 3216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood virtual ~MtpDataPacket(); 3316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood virtual void reset(); 3516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void setOperationCode(MtpOperationCode code); 3716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void setTransactionID(MtpTransactionID id); 3816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 3916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline uint8_t getUInt8() { return (uint8_t)mBuffer[mOffset++]; } 4016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline int8_t getInt8() { return (int8_t)mBuffer[mOffset++]; } 4116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood uint16_t getUInt16(); 4216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline int16_t getInt16() { return (int16_t)getUInt16(); } 4316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood uint32_t getUInt32(); 4416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline int32_t getInt32() { return (int32_t)getUInt32(); } 4516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood uint64_t getUInt64(); 4616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline int64_t getInt64() { return (int64_t)getUInt64(); } 4716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void getString(MtpStringBuffer& string); 4816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 49335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood Int8List* getAInt8(); 50335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood UInt8List* getAUInt8(); 51335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood Int16List* getAInt16(); 52335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood UInt16List* getAUInt16(); 53335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood Int32List* getAInt32(); 54335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood UInt32List* getAUInt32(); 55335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood Int64List* getAInt64(); 56335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood UInt64List* getAUInt64(); 57335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood 5816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putInt8(int8_t value); 5916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putUInt8(uint8_t value); 6016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putInt16(int16_t value); 6116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putUInt16(uint16_t value); 6216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putInt32(int32_t value); 6316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putUInt32(uint32_t value); 6416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putInt64(int64_t value); 6516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putUInt64(uint64_t value); 6616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 6716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAInt8(const int8_t* values, int count); 6816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAUInt8(const uint8_t* values, int count); 6916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAInt16(const int16_t* values, int count); 7016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAUInt16(const uint16_t* values, int count); 7116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAInt32(const int32_t* values, int count); 7216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAUInt32(const uint32_t* values, int count); 7316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAUInt32(const UInt32List* list); 7416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAInt64(const int64_t* values, int count); 7516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putAUInt64(const uint64_t* values, int count); 7616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putString(const MtpStringBuffer& string); 7716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood void putString(const char* string); 7816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline void putEmptyString() { putUInt16(0); } 7916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline void putEmptyArray() { putUInt32(0); } 8016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 8116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 8216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifdef MTP_DEVICE 8316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // fill our buffer with data from the given file descriptor 8416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int read(int fd); 8516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int readDataHeader(int fd); 8616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 8716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood // write our data to the given file descriptor 8816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int write(int fd); 8916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int writeDataHeader(int fd, uint32_t length); 9016864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif 9116864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 9216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#ifdef MTP_HOST 9316864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int read(struct usb_endpoint *ep); 9416864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood int write(struct usb_endpoint *ep); 9516864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif 9616864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 9716864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood inline bool hasData() const { return mPacketSize > MTP_CONTAINER_HEADER_SIZE; } 9816864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood}; 9916864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood 1007850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood}; // namespace android 1017850ef999740f214a1990a9c090d3f3865d435aaMike Lockwood 10216864bae0f51c32c456da2c43adf7a057c0c4882Mike Lockwood#endif // _MTP_DATA_PACKET_H 103