1335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood/*
2335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * Copyright (C) 2010 The Android Open Source Project
3335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *
4335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
5335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * you may not use this file except in compliance with the License.
6335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * You may obtain a copy of the License at
7335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *
8335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
9335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood *
10335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * Unless required by applicable law or agreed to in writing, software
11335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
12335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * See the License for the specific language governing permissions and
14335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood * limitations under the License.
15335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood */
16335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
17335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#ifndef _MTP_TYPES_H
18335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#define _MTP_TYPES_H
19335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
20335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#include <stdint.h>
21335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#include "utils/String8.h"
22335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#include "utils/Vector.h"
23335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
24335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodnamespace android {
25335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
26a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef int32_t int128_t[4];
27a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef uint32_t uint128_t[4];
28a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwood
29335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef uint16_t MtpOperationCode;
30335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef uint16_t MtpResponseCode;
31873871f3e75831bcda6c3f75bb4d53355ca5c53aMike Lockwoodtypedef uint16_t MtpEventCode;
32335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef uint32_t MtpSessionID;
33335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef uint32_t MtpStorageID;
34335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef uint32_t MtpTransactionID;
35a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef uint16_t MtpPropertyCode;
36a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef uint16_t MtpDataType;
37335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef uint16_t MtpObjectFormat;
38a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef MtpPropertyCode MtpDeviceProperty;
39a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef MtpPropertyCode MtpObjectProperty;
40335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
41335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood// object handles are unique across all storage but only within a single session.
42335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood// object handles cannot be reused after an object is deleted.
43335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood// values 0x00000000 and 0xFFFFFFFF are reserved for special purposes.
44335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef uint32_t MtpObjectHandle;
45335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
46e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood// Special values
47e13401bf532c7e4bf9ab82c7e9b13642838a927dMike Lockwood#define MTP_PARENT_ROOT         0xFFFFFFFF       // parent is root of the storage
48335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#define kInvalidObjectHandle    0xFFFFFFFF
49335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
50335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodclass MtpStorage;
515ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodclass MtpDevice;
52a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodclass MtpProperty;
53335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
545ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<MtpStorage *> MtpStorageList;
555ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<MtpDevice*> MtpDeviceList;
56a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef Vector<MtpProperty*> MtpPropertyList;
57335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
585ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<uint8_t> UInt8List;
59a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef Vector<uint16_t> UInt16List;
605ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<uint32_t> UInt32List;
615ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<uint64_t> UInt64List;
625ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<int8_t> Int8List;
63a6c490b8b2d96ebaab632286029463f932ae3b6bMike Lockwoodtypedef Vector<int16_t> Int16List;
645ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<int32_t> Int32List;
655ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef Vector<int64_t> Int64List;
66335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
67782aef17c9921a3bf401a0432878df5031f2328bMike Lockwoodtypedef UInt16List MtpObjectPropertyList;
68335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef UInt16List MtpDevicePropertyList;
69335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef UInt16List MtpObjectFormatList;
70335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef UInt32List MtpObjectHandleList;
71335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef UInt16List MtpObjectPropertyList;
72335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwoodtypedef UInt32List MtpStorageIDList;
73335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
745ed68d29a140e14c8d46980fa844548eb33b1e87Mike Lockwoodtypedef String8    MtpString;
75335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
76335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood}; // namespace android
77335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood
78335dd2be955607f2632eabc25045857f2cc8b674Mike Lockwood#endif // _MTP_TYPES_H
79