Home | History | Annotate | Download | only in mtp
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef _MTP_TYPES_H
     18 #define _MTP_TYPES_H
     19 
     20 #include <stdint.h>
     21 #include <vector>
     22 
     23 namespace android {
     24 
     25 typedef int32_t int128_t[4];
     26 typedef uint32_t uint128_t[4];
     27 
     28 typedef uint16_t MtpOperationCode;
     29 typedef uint16_t MtpResponseCode;
     30 typedef uint16_t MtpEventCode;
     31 typedef uint32_t MtpSessionID;
     32 typedef uint32_t MtpStorageID;
     33 typedef uint32_t MtpTransactionID;
     34 typedef uint16_t MtpPropertyCode;
     35 typedef uint16_t MtpDataType;
     36 typedef uint16_t MtpObjectFormat;
     37 typedef MtpPropertyCode MtpDeviceProperty;
     38 typedef MtpPropertyCode MtpObjectProperty;
     39 
     40 // object handles are unique across all storage but only within a single session.
     41 // object handles cannot be reused after an object is deleted.
     42 // values 0x00000000 and 0xFFFFFFFF are reserved for special purposes.
     43 typedef uint32_t MtpObjectHandle;
     44 
     45 // Special values
     46 #define MTP_PARENT_ROOT         0xFFFFFFFF       // parent is root of the storage
     47 #define kInvalidObjectHandle    0xFFFFFFFF
     48 
     49 class MtpStorage;
     50 class MtpDevice;
     51 class MtpProperty;
     52 
     53 typedef std::vector<MtpStorage *> MtpStorageList;
     54 typedef std::vector<MtpDevice*> MtpDeviceList;
     55 typedef std::vector<MtpProperty*> MtpPropertyList;
     56 
     57 typedef std::vector<uint8_t> UInt8List;
     58 typedef std::vector<uint16_t> UInt16List;
     59 typedef std::vector<uint32_t> UInt32List;
     60 typedef std::vector<uint64_t> UInt64List;
     61 typedef std::vector<int8_t> Int8List;
     62 typedef std::vector<int16_t> Int16List;
     63 typedef std::vector<int32_t> Int32List;
     64 typedef std::vector<int64_t> Int64List;
     65 
     66 typedef UInt16List MtpObjectPropertyList;
     67 typedef UInt16List MtpDevicePropertyList;
     68 typedef UInt16List MtpObjectFormatList;
     69 typedef UInt32List MtpObjectHandleList;
     70 typedef UInt16List MtpObjectPropertyList;
     71 typedef UInt32List MtpStorageIDList;
     72 
     73 enum UrbPacketDivisionMode {
     74     // First packet only contains a header.
     75     FIRST_PACKET_ONLY_HEADER,
     76     // First packet contains payload much as possible.
     77     FIRST_PACKET_HAS_PAYLOAD
     78 };
     79 
     80 }; // namespace android
     81 
     82 #endif // _MTP_TYPES_H
     83