1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef FRAMEWORKS_SERVICES_MEDIA_MTP_INCLUDE_MTP_CONSTANTS_H_
16 #define FRAMEWORKS_SERVICES_MEDIA_MTP_INCLUDE_MTP_CONSTANTS_H_
17 #include <vector>
18 #include <stdint.h>
19 #include <fcntl.h>
20 
21 struct MtpFileRange {
22     // file descriptor for file to transfer
23     int fd;
24     // offset in file for start of transfer
25     loff_t offset;
26     // number of bytes to transfer
27     int64_t length;
28     /*
29      * MTP command ID for data header,
30      * used only for MTP_SEND_FILE_WITH_HEADER
31      */
32     uint16_t command;
33     /*
34      * MTP transaction ID for data header,
35      * used only for MTP_SEND_FILE_WITH_HEADER
36      */
37     uint32_t transaction_id;
38 };
39 
40 struct EventMtp {
41     // size of the event
42     size_t length;
43     // event data to send
44     std::vector<uint8_t> data;
45 };
46 
47 constexpr uint16_t MTP_STANDARD_VERSION = 100;
48 
49 constexpr int32_t DEFAULT_STORAGE_ID = 1;
50 constexpr uint32_t MTP_ALL_HANDLE_ID = 0xFFFFFFFF;
51 constexpr uint32_t MTP_ALL_DEPTH = 0xFFFFFFFF;
52 
53 // mtp Operations
54 constexpr uint16_t MTP_OPERATION_GET_DEVICE_INFO_CODE = 0x1001;
55 constexpr uint16_t MTP_OPERATION_OPEN_SESSION_CODE = 0x1002;
56 constexpr uint16_t MTP_OPERATION_CLOSE_SESSION_CODE = 0x1003;
57 constexpr uint16_t MTP_OPERATION_GET_STORAGE_IDS_CODE = 0x1004;
58 constexpr uint16_t MTP_OPERATION_GET_STORAGE_INFO_CODE = 0x1005;
59 constexpr uint16_t MTP_OPERATION_GET_NUM_OBJECTS_CODE = 0x1006;
60 constexpr uint16_t MTP_OPERATION_GET_OBJECT_HANDLES_CODE = 0x1007;
61 constexpr uint16_t MTP_OPERATION_GET_OBJECT_INFO_CODE = 0x1008;
62 constexpr uint16_t MTP_OPERATION_GET_OBJECT_CODE = 0x1009;
63 constexpr uint16_t MTP_OPERATION_GET_THUMB_CODE = 0x100A;
64 constexpr uint16_t MTP_OPERATION_DELETE_OBJECT_CODE = 0x100B;
65 constexpr uint16_t MTP_OPERATION_SEND_OBJECT_INFO_CODE = 0x100C;
66 constexpr uint16_t MTP_OPERATION_SEND_OBJECT_CODE = 0x100D;
67 constexpr uint16_t MTP_OPERATION_INITIATE_CAPTURE_CODE = 0x100E;
68 constexpr uint16_t MTP_OPERATION_FORMAT_STORE_CODE = 0x100F;
69 constexpr uint16_t MTP_OPERATION_RESET_DEVICE_CODE = 0x1010;
70 constexpr uint16_t MTP_OPERATION_SELF_TEST_CODE = 0x1011;
71 constexpr uint16_t MTP_OPERATION_SET_OBJECT_PROTECTION_CODE = 0x1012;
72 constexpr uint16_t MTP_OPERATION_POWER_DOWN_CODE = 0x1013;
73 constexpr uint16_t MTP_OPERATION_GET_DEVICE_PROP_DESC_CODE = 0x1014;
74 constexpr uint16_t MTP_OPERATION_GET_DEVICE_PROP_VALUE_CODE = 0x1015;
75 constexpr uint16_t MTP_OPERATION_SET_DEVICE_PROP_VALUE_CODE = 0x1016;
76 constexpr uint16_t MTP_OPERATION_RESET_DEVICE_PROP_VALUE_CODE = 0x1017;
77 constexpr uint16_t MTP_OPERATION_TERMINATE_OPEN_CAPTURE_CODE = 0x1018;
78 constexpr uint16_t MTP_OPERATION_MOVE_OBJECT_CODE = 0x1019;
79 constexpr uint16_t MTP_OPERATION_COPY_OBJECT_CODE = 0x101A;
80 constexpr uint16_t MTP_OPERATION_GET_PARTIAL_OBJECT_CODE = 0x101B;
81 constexpr uint16_t MTP_OPERATION_INITIATE_OPEN_CAPTURE_CODE = 0x101C;
82 constexpr uint16_t MTP_OPERATION_GET_OBJECT_PROPS_SUPPORTED_CODE = 0x9801;
83 constexpr uint16_t MTP_OPERATION_GET_OBJECT_PROP_DESC_CODE = 0x9802;
84 constexpr uint16_t MTP_OPERATION_GET_OBJECT_PROP_VALUE_CODE = 0x9803;
85 constexpr uint16_t MTP_OPERATION_SET_OBJECT_PROP_VALUE_CODE = 0x9804;
86 constexpr uint16_t MTP_OPERATION_GET_OBJECT_PROP_LIST_CODE = 0x9805;
87 constexpr uint16_t MTP_OPERATION_SET_OBJECT_PROP_LIST_CODE = 0x9806;
88 constexpr uint16_t MTP_OPERATION_GET_INTERDEPENDENT_PROPDESC_CODE = 0x9807;
89 constexpr uint16_t MTP_OPERATION_SEND_OBJECT_PROP_LIST_CODE = 0x9808;
90 constexpr uint16_t MTP_OPERATION_GET_OBJECT_REFERENCES_CODE = 0x9810;
91 constexpr uint16_t MTP_OPERATION_SET_OBJECT_REFERENCES_CODE = 0x9811;
92 constexpr uint16_t MTP_OPERATION_SKIP_CODE = 0x9820;
93 
94 // MTP Device Property
95 constexpr uint16_t MTP_DEVICE_PROPERTY_UNDEFINED_CODE = 0x5000;
96 constexpr uint16_t MTP_DEVICE_PROPERTY_BATTERY_LEVEL_CODE = 0x5001;
97 constexpr uint16_t MTP_DEVICE_PROPERTY_FUNCTIONAL_MODE_CODE = 0x5002;
98 constexpr uint16_t MTP_DEVICE_PROPERTY_IMAGE_SIZE_CODE = 0x5003;
99 constexpr uint16_t MTP_DEVICE_PROPERTY_COMPRESSION_SETTING_CODE = 0x5004;
100 constexpr uint16_t MTP_DEVICE_PROPERTY_WHITE_BALANCE_CODE = 0x5005;
101 constexpr uint16_t MTP_DEVICE_PROPERTY_RGB_GAIN_CODE = 0x5006;
102 constexpr uint16_t MTP_DEVICE_PROPERTY_F_NUMBER_CODE = 0x5007;
103 constexpr uint16_t MTP_DEVICE_PROPERTY_FOCAL_LENGTH_CODE = 0x5008;
104 constexpr uint16_t MTP_DEVICE_PROPERTY_FOCUS_DISTANCE_CODE = 0x5009;
105 constexpr uint16_t MTP_DEVICE_PROPERTY_FOCUS_MODE_CODE = 0x500A;
106 constexpr uint16_t MTP_DEVICE_PROPERTY_EXPOSURE_METERING_MODE_CODE = 0x500B;
107 constexpr uint16_t MTP_DEVICE_PROPERTY_FLASH_MODE_CODE = 0x500C;
108 constexpr uint16_t MTP_DEVICE_PROPERTY_EXPOSURE_TIME_CODE = 0x500D;
109 constexpr uint16_t MTP_DEVICE_PROPERTY_EXPOSURE_PROGRAM_MODE_CODE = 0x500E;
110 constexpr uint16_t MTP_DEVICE_PROPERTY_EXPOSURE_INDEX_CODE = 0x500F;
111 constexpr uint16_t MTP_DEVICE_PROPERTY_EXPOSURE_BIAS_COMPENSATION_CODE = 0x5010;
112 constexpr uint16_t MTP_DEVICE_PROPERTY_DATETIME_CODE = 0x5011;
113 constexpr uint16_t MTP_DEVICE_PROPERTY_CAPTURE_DELAY_CODE = 0x5012;
114 constexpr uint16_t MTP_DEVICE_PROPERTY_STILL_CAPTURE_MODE_CODE = 0x5013;
115 constexpr uint16_t MTP_DEVICE_PROPERTY_CONTRAST_CODE = 0x5014;
116 constexpr uint16_t MTP_DEVICE_PROPERTY_SHARPNESS_CODE = 0x5015;
117 constexpr uint16_t MTP_DEVICE_PROPERTY_DIGITAL_ZOOM_CODE = 0x5016;
118 constexpr uint16_t MTP_DEVICE_PROPERTY_EFFECT_MODE_CODE = 0x5017;
119 constexpr uint16_t MTP_DEVICE_PROPERTY_BURST_NUMBER_CODE = 0x5018;
120 constexpr uint16_t MTP_DEVICE_PROPERTY_BURST_INTERVAL_CODE = 0x5019;
121 constexpr uint16_t MTP_DEVICE_PROPERTY_TIMELAPSE_NUMBER_CODE = 0x501A;
122 constexpr uint16_t MTP_DEVICE_PROPERTY_TIMELAPSE_INTERVAL_CODE = 0x501B;
123 constexpr uint16_t MTP_DEVICE_PROPERTY_FOCUS_METERING_MODE_CODE = 0x501C;
124 constexpr uint16_t MTP_DEVICE_PROPERTY_UPLOAD_URL_CODE = 0x501D;
125 constexpr uint16_t MTP_DEVICE_PROPERTY_ARTIST_CODE = 0x501E;
126 constexpr uint16_t MTP_DEVICE_PROPERTY_COPYRIGHT_INFO_CODE = 0x501F;
127 constexpr uint16_t MTP_DEVICE_PROPERTY_SYNCHRONIZATION_PARTNER_CODE = 0xD401;
128 constexpr uint16_t MTP_DEVICE_PROPERTY_DEVICE_FRIENDLY_NAME_CODE = 0xD402;
129 constexpr uint16_t MTP_DEVICE_PROPERTY_VOLUME_CODE = 0xD403;
130 constexpr uint16_t MTP_DEVICE_PROPERTY_SUPPORTED_FORMATS_ORDERED_CODE = 0xD404;
131 constexpr uint16_t MTP_DEVICE_PROPERTY_DEVICE_ICON_CODE = 0xD405;
132 constexpr uint16_t MTP_DEVICE_PROPERTY_PLAYBACK_RATE_CODE = 0xD410;
133 constexpr uint16_t MTP_DEVICE_PROPERTY_PLAYBACK_OBJECT_CODE = 0xD411;
134 constexpr uint16_t MTP_DEVICE_PROPERTY_PLAYBACK_CONTAINER_INDEX_CODE = 0xD412;
135 constexpr uint16_t MTP_DEVICE_PROPERTY_SESSION_INITIATOR_VERSION_INFO_CODE = 0xD406;
136 constexpr uint16_t MTP_DEVICE_PROPERTY_PERCEIVED_DEVICE_TYPE_CODE = 0xD407;
137 
138 // MTP Object Format
139 constexpr uint16_t MTP_FORMAT_UNDEFINED_CODE = 0x3000; // Undefined
140 constexpr uint16_t MTP_FORMAT_ASSOCIATION_CODE = 0x3001; // associations (folders and directories)
141 constexpr uint16_t MTP_FORMAT_SCRIPT_CODE = 0x3002; // script files
142 constexpr uint16_t MTP_FORMAT_EXECUTABLE_CODE = 0x3003; // executable files
143 constexpr uint16_t MTP_FORMAT_TEXT_CODE = 0x3004; // text files
144 constexpr uint16_t MTP_FORMAT_HTML_CODE = 0x3005; // HTML files
145 constexpr uint16_t MTP_FORMAT_DPOF_CODE = 0x3006; // DPOF files
146 constexpr uint16_t MTP_FORMAT_AIFF_CODE = 0x3007; // AIFF audio files
147 constexpr uint16_t MTP_FORMAT_WAV_CODE = 0x3008; // WAV audio files
148 constexpr uint16_t MTP_FORMAT_MP3_CODE = 0x3009; // MP3 audio files
149 constexpr uint16_t MTP_FORMAT_AVI_CODE = 0x300A; // AVI video files
150 constexpr uint16_t MTP_FORMAT_MPEG_CODE = 0x300B; // MPEG video files
151 constexpr uint16_t MTP_FORMAT_ASF_CODE = 0x300C; // ASF files
152 // Unknown image files which are not specified in PTP specification
153 constexpr uint16_t MTP_FORMAT_DEFINED_CODE = 0x3800; // Unknown image files
154 constexpr uint16_t MTP_FORMAT_EXIF_JPEG_CODE = 0x3801; // JPEG image files
155 constexpr uint16_t MTP_FORMAT_TIFF_EP_CODE = 0x3802; // TIFF EP image files
156 constexpr uint16_t MTP_FORMAT_FLASHPIX_CODE = 0x3803;
157 constexpr uint16_t MTP_FORMAT_BMP_CODE = 0x3804; // BMP image files
158 constexpr uint16_t MTP_FORMAT_CIFF_CODE = 0x3805;
159 constexpr uint16_t MTP_FORMAT_GIF_CODE = 0x3807; // GIF image files
160 constexpr uint16_t MTP_FORMAT_JFIF_CODE = 0x3808; // JFIF image files
161 constexpr uint16_t MTP_FORMAT_CD_CODE = 0x3809;
162 constexpr uint16_t MTP_FORMAT_PICT_CODE = 0x380A; // PICT image files
163 constexpr uint16_t MTP_FORMAT_PNG_CODE = 0x380B; // PNG image files
164 constexpr uint16_t MTP_FORMAT_TIFF_CODE = 0x380D; // TIFF image files
165 constexpr uint16_t MTP_FORMAT_TIFF_IT_CODE = 0x380E;
166 constexpr uint16_t MTP_FORMAT_JP2_CODE = 0x380F; // JP2 files
167 constexpr uint16_t MTP_FORMAT_JPX_CODE = 0x3810; // JPX files
168 constexpr uint16_t MTP_FORMAT_DNG_CODE = 0x3811; // DNG files
169 constexpr uint16_t MTP_FORMAT_HEIF_CODE = 0x3812; // HEIF files
170 constexpr uint16_t MTP_FORMAT_UNDEFINED_FIRMWARE_CODE = 0xB802; // firmware files
171 constexpr uint16_t MTP_FORMAT_WINDOWS_IMAGE_FORMAT_CODE = 0xB881; // Windows image files
172 constexpr uint16_t MTP_FORMAT_UNDEFINED_AUDIO_CODE = 0xB900; // undefined audio files files
173 constexpr uint16_t MTP_FORMAT_WMA_CODE = 0xB901; // WMA audio files
174 constexpr uint16_t MTP_FORMAT_OGG_CODE = 0xB902; // OGG audio files
175 constexpr uint16_t MTP_FORMAT_AAC_CODE = 0xB903; // AAC audio files
176 constexpr uint16_t MTP_FORMAT_AUDIBLE_CODE = 0xB904; // Audible audio files
177 constexpr uint16_t MTP_FORMAT_FLAC_CODE = 0xB906; // FLAC audio files
178 constexpr uint16_t MTP_FORMAT_UNDEFINED_VIDEO_CODE = 0xB980; // undefined video files
179 constexpr uint16_t MTP_FORMAT_WMV_CODE = 0xB981; // WMV video files
180 constexpr uint16_t MTP_FORMAT_MP4_CONTAINER_CODE = 0xB982; // MP4 files
181 constexpr uint16_t MTP_FORMAT_MP2_CODE = 0xB983; // MP2 files
182 constexpr uint16_t MTP_FORMAT_3GP_CONTAINER_CODE = 0xB984; // 3GP files
183 
184 constexpr uint16_t MTP_FORMAT_UNDEFINED_COLLECTION_CODE = 0xBA00; // undefined collections
185 constexpr uint16_t MTP_FORMAT_ABSTRACT_MULTIMEDIA_ALBUM_CODE = 0xBA01; // multimedia albums
186 constexpr uint16_t MTP_FORMAT_ABSTRACT_IMAGE_ALBUM_CODE = 0xBA02; // image albums
187 constexpr uint16_t MTP_FORMAT_ABSTRACT_AUDIO_ALBUM_CODE = 0xBA03; // audio albums
188 constexpr uint16_t MTP_FORMAT_ABSTRACT_VIDEO_ALBUM_CODE = 0xBA04; // video albums
189 constexpr uint16_t MTP_FORMAT_ABSTRACT_AUDIO_VIDEO_PLAYLIST_CODE = 0xBA05; // abstract AV playlists
190 constexpr uint16_t MTP_FORMAT_ABSTRACT_CONTACT_GROUP_CODE = 0xBA06;
191 constexpr uint16_t MTP_FORMAT_ABSTRACT_MESSAGE_FOLDER_CODE = 0xBA07;
192 constexpr uint16_t MTP_FORMAT_ABSTRACT_CHAPTERED_PRODUCTION_CODE = 0xBA08;
193 constexpr uint16_t MTP_FORMAT_ABSTRACT_AUDIO_PLAYLIST_CODE = 0xBA09; // abstract audio playlists
194 constexpr uint16_t MTP_FORMAT_ABSTRACT_VIDEO_PLAYLIST_CODE = 0xBA0A; // abstract video playlists
195 constexpr uint16_t MTP_FORMAT_ABSTRACT_MEDIACAST_CODE = 0xBA0B; // abstract mediacasts
196 constexpr uint16_t MTP_FORMAT_WPL_PLAYLIST_CODE = 0xBA10; // WPL playlist files
197 constexpr uint16_t MTP_FORMAT_M3U_PLAYLIST_CODE = 0xBA11; // M3u playlist files
198 constexpr uint16_t MTP_FORMAT_MPL_PLAYLIST_CODE = 0xBA12; // MPL playlist files
199 constexpr uint16_t MTP_FORMAT_ASX_PLAYLIST_CODE = 0xBA13; // ASX playlist files
200 constexpr uint16_t MTP_FORMAT_PLS_PLAYLIST_CODE = 0xBA14; // PLS playlist files
201 constexpr uint16_t MTP_FORMAT_UNDEFINED_DOCUMENT_CODE = 0xBA80; // undefined document files
202 constexpr uint16_t MTP_FORMAT_ABSTRACT_DOCUMENT_CODE = 0xBA81; // abstract documents
203 constexpr uint16_t MTP_FORMAT_XML_DOCUMENT_CODE = 0xBA82; // XML documents
204 constexpr uint16_t MTP_FORMAT_MICROSOFT_WORD_DOCUMENT_CODE = 0xBA83; // MS Word documents
205 constexpr uint16_t MTP_FORMAT_MHT_COMPILED_HTML_DOCUMENT_CODE = 0xBA84;
206 constexpr uint16_t MTP_FORMAT_MICROSOFT_EXCEL_SPREADSHEET_CODE = 0xBA85; // MS Excel spreadsheets
207 constexpr uint16_t MTP_FORMAT_MICROSOFT_POWERPOINT_PRESENTATION_CODE = 0xBA86; // MS PowerPoint presentatiosn
208 constexpr uint16_t MTP_FORMAT_UNDEFINED_MESSAGE_CODE = 0xBB00;
209 constexpr uint16_t MTP_FORMAT_ABSTRACT_MESSAGE_CODE = 0xBB01;
210 constexpr uint16_t MTP_FORMAT_UNDEFINED_CONTACT_CODE = 0xBB80;
211 constexpr uint16_t MTP_FORMAT_ABSTRACT_CONTACT_CODE = 0xBB81;
212 constexpr uint16_t MTP_FORMAT_VCARD_2_CODE = 0xBB82;
213 
214 // MTP Object Property
215 constexpr uint32_t MTP_PROPERTY_ALL_CODE = 0xFFFFFFFF;
216 constexpr uint16_t MTP_PROPERTY_STORAGE_ID_CODE = 0xDC01;
217 constexpr uint16_t MTP_PROPERTY_OBJECT_FORMAT_CODE = 0xDC02;
218 constexpr uint16_t MTP_PROPERTY_PROTECTION_STATUS_CODE = 0xDC03;
219 constexpr uint16_t MTP_PROPERTY_OBJECT_SIZE_CODE = 0xDC04;
220 constexpr uint16_t MTP_PROPERTY_ASSOCIATION_TYPE_CODE = 0xDC05;
221 constexpr uint16_t MTP_PROPERTY_ASSOCIATION_DESC_CODE = 0xDC06;
222 constexpr uint16_t MTP_PROPERTY_OBJECT_FILE_NAME_CODE = 0xDC07;
223 constexpr uint16_t MTP_PROPERTY_DATE_CREATED_CODE = 0xDC08;
224 constexpr uint16_t MTP_PROPERTY_DATE_MODIFIED_CODE = 0xDC09;
225 constexpr uint16_t MTP_PROPERTY_KEYWORDS_CODE = 0xDC0A;
226 constexpr uint16_t MTP_PROPERTY_PARENT_OBJECT_CODE = 0xDC0B;
227 constexpr uint16_t MTP_PROPERTY_ALLOWED_FOLDER_CONTENTS_CODE = 0xDC0C;
228 constexpr uint16_t MTP_PROPERTY_HIDDEN_CODE = 0xDC0D;
229 constexpr uint16_t MTP_PROPERTY_SYSTEM_OBJECT_CODE = 0xDC0E;
230 constexpr uint16_t MTP_PROPERTY_PERSISTENT_UID_CODE = 0xDC41;
231 constexpr uint16_t MTP_PROPERTY_SYNCID_CODE = 0xDC42;
232 constexpr uint16_t MTP_PROPERTY_PROPERTY_BAG_CODE = 0xDC43;
233 constexpr uint16_t MTP_PROPERTY_NAME_CODE = 0xDC44;
234 constexpr uint16_t MTP_PROPERTY_CREATED_BY_CODE = 0xDC45;
235 constexpr uint16_t MTP_PROPERTY_ARTIST_CODE = 0xDC46;
236 constexpr uint16_t MTP_PROPERTY_DATE_AUTHORED_CODE = 0xDC47;
237 constexpr uint16_t MTP_PROPERTY_DESCRIPTION_CODE = 0xDC48;
238 constexpr uint16_t MTP_PROPERTY_URL_REFERENCE_CODE = 0xDC49;
239 constexpr uint16_t MTP_PROPERTY_LANGUAG_LOCALE_CODE = 0xDC4A;
240 constexpr uint16_t MTP_PROPERTY_COPYRIGHT_INFORMATION_CODE = 0xDC4B;
241 constexpr uint16_t MTP_PROPERTY_SOURCE_CODE = 0xDC4C;
242 constexpr uint16_t MTP_PROPERTY_ORIGIN_LOCATION_CODE = 0xDC4D;
243 constexpr uint16_t MTP_PROPERTY_DATE_ADDED_CODE = 0xDC4E;
244 constexpr uint16_t MTP_PROPERTY_NO_CONSUMABLE_CODE = 0xDC4F;
245 constexpr uint16_t MTP_PROPERTY_CORRUP_UNPLAYABLE_CODE = 0xDC50;
246 constexpr uint16_t MTP_PROPERTY_PRODUCERSERIALNUMBER_CODE = 0xDC51;
247 constexpr uint16_t MTP_PROPERTY_REPRESENTATIVE_SAMPLE_FORMAT_CODE = 0xDC81;
248 constexpr uint16_t MTP_PROPERTY_REPRESENTATIVE_SAMPLE_SIZE_CODE = 0xDC82;
249 constexpr uint16_t MTP_PROPERTY_REPRESENTATIVE_SAMPLE_HEIGHT_CODE = 0xDC83;
250 constexpr uint16_t MTP_PROPERTY_REPRESENTATIVE_SAMPLE_WIDTH_CODE = 0xDC84;
251 constexpr uint16_t MTP_PROPERTY_REPRESENTATIVE_SAMPLE_DURATION_CODE = 0xDC85;
252 constexpr uint16_t MTP_PROPERTY_REPRESENTATIVE_SAMPLE_DATA_CODE = 0xDC86;
253 constexpr uint16_t MTP_PROPERTY_WIDTH_CODE = 0xDC87;
254 constexpr uint16_t MTP_PROPERTY_HEIGHT_CODE = 0xDC88;
255 constexpr uint16_t MTP_PROPERTY_DURATION_CODE = 0xDC89;
256 constexpr uint16_t MTP_PROPERTY_RATING_CODE = 0xDC8A;
257 constexpr uint16_t MTP_PROPERTY_TRACK_CODE = 0xDC8B;
258 constexpr uint16_t MTP_PROPERTY_GENRE_CODE = 0xDC8C;
259 constexpr uint16_t MTP_PROPERTY_CREDITS_CODE = 0xDC8D;
260 constexpr uint16_t MTP_PROPERTY_LYRICS_CODE = 0xDC8E;
261 constexpr uint16_t MTP_PROPERTY_SUBSCRIPTION_CONTENT_ID_CODE = 0xDC8F;
262 constexpr uint16_t MTP_PROPERTY_PRODUCED_BY_CODE = 0xDC90;
263 constexpr uint16_t MTP_PROPERTY_USE_COUNT_CODE = 0xDC91;
264 constexpr uint16_t MTP_PROPERTY_SKIP_COUNT_CODE = 0xDC92;
265 constexpr uint16_t MTP_PROPERTY_LAST_ACCESSED_CODE = 0xDC93;
266 constexpr uint16_t MTP_PROPERTY_PARENTAL_RATING_CODE = 0xDC94;
267 constexpr uint16_t MTP_PROPERTY_META_GENRE_CODE = 0xDC95;
268 constexpr uint16_t MTP_PROPERTY_COMPOSER_CODE = 0xDC96;
269 constexpr uint16_t MTP_PROPERTY_EFFECTIVE_RATING_CODE = 0xDC97;
270 constexpr uint16_t MTP_PROPERTY_SUBTITLE_CODE = 0xDC98;
271 constexpr uint16_t MTP_PROPERTY_ORIGINAL_RELEASE_DATE_CODE = 0xDC99;
272 constexpr uint16_t MTP_PROPERTY_ALBUM_NAME_CODE = 0xDC9A;
273 constexpr uint16_t MTP_PROPERTY_ALBUM_ARTIST_CODE = 0xDC9B;
274 constexpr uint16_t MTP_PROPERTY_MOOD_CODE = 0xDC9C;
275 constexpr uint16_t MTP_PROPERTY_DRM_STATUS_CODE = 0xDC9D;
276 constexpr uint16_t MTP_PROPERTY_SUB_DESCRIPTION_CODE = 0xDC9E;
277 constexpr uint16_t MTP_PROPERTY_IS_CROPPED_CODE = 0xDCD1;
278 constexpr uint16_t MTP_PROPERTY_IS_COLOUR_CORRECTED_CODE = 0xDCD2;
279 constexpr uint16_t MTP_PROPERTY_IMAGE_BIT_DEPTH_CODE = 0xDCD3;
280 constexpr uint16_t MTP_PROPERTY_FNUMBER_CODE = 0xDCD4;
281 constexpr uint16_t MTP_PROPERTY_EXPOSURE_TIME_CODE = 0xDCD5;
282 constexpr uint16_t MTP_PROPERTY_EXPOSURE_INDEX_CODE = 0xDCD6;
283 constexpr uint16_t MTP_PROPERTY_TOTAL_BITRATE_CODE = 0xDE91;
284 constexpr uint16_t MTP_PROPERTY_BITRATE_TYPE_CODE = 0xDE92;
285 constexpr uint16_t MTP_PROPERTY_SAMPLE_RATE_CODE = 0xDE93;
286 constexpr uint16_t MTP_PROPERTY_NUMBER_OF_CHANNELS_CODE = 0xDE94;
287 constexpr uint16_t MTP_PROPERTY_AUDIO_BITDEPTH_CODE = 0xDE95;
288 constexpr uint16_t MTP_PROPERTY_SCAN_TYPE_CODE = 0xDE97;
289 constexpr uint16_t MTP_PROPERTY_AUDIO_WAVE_CODEC_CODE = 0xDE99;
290 constexpr uint16_t MTP_PROPERTY_AUDIO_BITRATE_CODE = 0xDE9A;
291 constexpr uint16_t MTP_PROPERTY_VIDEO_FOURCC_CODEC_CODE = 0xDE9B;
292 constexpr uint16_t MTP_PROPERTY_VIDEO_BITRATE_CODE = 0xDE9C;
293 constexpr uint16_t MTP_PROPERTY_FRAMES_PER_THOUSAND_SECONDS_CODE = 0xDE9D;
294 constexpr uint16_t MTP_PROPERTY_KEYFRAME_DISTANCE_CODE = 0xDE9E;
295 constexpr uint16_t MTP_PROPERTY_BUFFER_SIZE_CODE = 0xDE9F;
296 constexpr uint16_t MTP_PROPERTY_ENCODING_QUALITY_CODE = 0xDEA0;
297 constexpr uint16_t MTP_PROPERTY_ENCODING_PROFILE_CODE = 0xDEA1;
298 constexpr uint16_t MTP_PROPERTY_DISPLAY_NAME_CODE = 0xDCE0;
299 constexpr uint16_t MTP_PROPERTY_BODY_TEXT_CODE = 0xDCE1;
300 constexpr uint16_t MTP_PROPERTY_SUBJECT_CODE = 0xDCE2;
301 constexpr uint16_t MTP_PROPERTY_PRIORITY_CODE = 0xDCE3;
302 constexpr uint16_t MTP_PROPERTY_GIVEN_NAME_CODE = 0xDD00;
303 constexpr uint16_t MTP_PROPERTY_MIDDLE_NAMES_CODE = 0xDD01;
304 constexpr uint16_t MTP_PROPERTY_FAMILY_NAME_CODE = 0xDD02;
305 constexpr uint16_t MTP_PROPERTY_PREFIX_CODE = 0xDD03;
306 constexpr uint16_t MTP_PROPERTY_SUFFIX_CODE = 0xDD04;
307 constexpr uint16_t MTP_PROPERTY_PHONETIC_GIVEN_NAME_CODE = 0xDD05;
308 constexpr uint16_t MTP_PROPERTY_PHONETIC_FAMILY_NAME_CODE = 0xDD06;
309 constexpr uint16_t MTP_PROPERTY_EMAIL_PRIMARY_CODE = 0xDD07;
310 constexpr uint16_t MTP_PROPERTY_EMAIL_PERSONAL_1_CODE = 0xDD08;
311 constexpr uint16_t MTP_PROPERTY_EMAIL_PERSONAL_2_CODE = 0xDD09;
312 constexpr uint16_t MTP_PROPERTY_EMAIL_BUSINESS_1_CODE = 0xDD0A;
313 constexpr uint16_t MTP_PROPERTY_EMAIL_BUSINESS_2_CODE = 0xDD0B;
314 constexpr uint16_t MTP_PROPERTY_EMAIL_OTHERS_CODE = 0xDD0C;
315 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_PRIMARY_CODE = 0xDD0D;
316 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_PERSONAL_CODE = 0xDD0E;
317 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_PERSONAL_2_CODE = 0xDD0F;
318 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_BUSINESS_CODE = 0xDD10;
319 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_BUSINESS_2_CODE = 0xDD11;
320 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_MOBILE_CODE = 0xDD12;
321 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_MOBILE_2_CODE = 0xDD13;
322 constexpr uint16_t MTP_PROPERTY_FAX_NUMBER_PRIMARY_CODE = 0xDD14;
323 constexpr uint16_t MTP_PROPERTY_FAX_NUMBER_PERSONAL_CODE = 0xDD15;
324 constexpr uint16_t MTP_PROPERTY_FAX_NUMBER_BUSINESS_CODE = 0xDD16;
325 constexpr uint16_t MTP_PROPERTY_PAGER_NUMBER_CODE = 0xDD17;
326 constexpr uint16_t MTP_PROPERTY_PHONE_NUMBER_OTHERS_CODE = 0xDD18;
327 constexpr uint16_t MTP_PROPERTY_PRIMARY_WEB_ADDRESS_CODE = 0xDD19;
328 constexpr uint16_t MTP_PROPERTY_PERSONAL_WEB_ADDRESS_CODE = 0xDD1A;
329 constexpr uint16_t MTP_PROPERTY_BUSINESS_WEB_ADDRESS_CODE = 0xDD1B;
330 constexpr uint16_t MTP_PROPERTY_INSTANT_MESSENGER_ADDRESS_CODE = 0xDD1C;
331 constexpr uint16_t MTP_PROPERTY_INSTANT_MESSENGER_ADDRESS_2_CODE = 0xDD1D;
332 constexpr uint16_t MTP_PROPERTY_INSTANT_MESSENGER_ADDRESS_3_CODE = 0xDD1E;
333 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_FULL_CODE = 0xDD1F;
334 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_1_CODE = 0xDD20;
335 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_LINE_2_CODE = 0xDD21;
336 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_CITY_CODE = 0xDD22;
337 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_REGION_CODE = 0xDD23;
338 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_POSTAL_CODE_CODE = 0xDD24;
339 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_PERSONAL_COUNTRY_CODE = 0xDD25;
340 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_FULL_CODE = 0xDD26;
341 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_1_CODE = 0xDD27;
342 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_LINE_2_CODE = 0xDD28;
343 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_CITY_CODE = 0xDD29;
344 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_REGION_CODE = 0xDD2A;
345 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_POSTAL_CODE_CODE = 0xDD2B;
346 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_BUSINESS_COUNTRY_CODE = 0xDD2C;
347 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_OTHER_FULL_CODE = 0xDD2D;
348 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_OTHER_LINE_1_CODE = 0xDD2E;
349 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_OTHER_LINE_2_CODE = 0xDD2F;
350 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_OTHER_CITY_CODE = 0xDD30;
351 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_OTHER_REGION_CODE = 0xDD31;
352 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_OTHER_POSTAL_CODE_CODE = 0xDD32;
353 constexpr uint16_t MTP_PROPERTY_POSTAL_ADDRESS_OTHER_COUNTRY_CODE = 0xDD33;
354 constexpr uint16_t MTP_PROPERTY_ORGANIZATION_NAME_CODE = 0xDD34;
355 constexpr uint16_t MTP_PROPERTY_PHONETIC_ORGANIZATION_NAME_CODE = 0xDD35;
356 constexpr uint16_t MTP_PROPERTY_ROLE_CODE = 0xDD36;
357 constexpr uint16_t MTP_PROPERTY_BIRTHDATE_CODE = 0xDD37;
358 constexpr uint16_t MTP_PROPERTY_MESSAGE_TO_CODE = 0xDD40;
359 constexpr uint16_t MTP_PROPERTY_MESSAGE_CC_CODE = 0xDD41;
360 constexpr uint16_t MTP_PROPERTY_MESSAGE_BCC_CODE = 0xDD42;
361 constexpr uint16_t MTP_PROPERTY_MESSAGE_READ_CODE = 0xDD43;
362 constexpr uint16_t MTP_PROPERTY_MESSAGE_RECEIVED_TIME_CODE = 0xDD44;
363 constexpr uint16_t MTP_PROPERTY_MESSAGE_SENDER_CODE = 0xDD45;
364 constexpr uint16_t MTP_PROPERTY_ACTIVITY_BEGIN_TIME_CODE = 0xDD50;
365 constexpr uint16_t MTP_PROPERTY_ACTIVITY_END_TIME_CODE = 0xDD51;
366 constexpr uint16_t MTP_PROPERTY_ACTIVITY_LOCATION_CODE = 0xDD52;
367 constexpr uint16_t MTP_PROPERTY_ACTIVITY_REQUIRED_ATTENDEES_CODE = 0xDD54;
368 constexpr uint16_t MTP_PROPERTY_ACTIVITY_OPTIONAL_ATTENDEES_CODE = 0xDD55;
369 constexpr uint16_t MTP_PROPERTY_ACTIVITY_RESOURCES_CODE = 0xDD56;
370 constexpr uint16_t MTP_PROPERTY_ACTIVITY_ACCEPTED_CODE = 0xDD57;
371 constexpr uint16_t MTP_PROPERTY_ACTIVITY_TENTATIVE_CODE = 0xDD58;
372 constexpr uint16_t MTP_PROPERTY_ACTIVITY_DECLINED_CODE = 0xDD59;
373 constexpr uint16_t MTP_PROPERTY_ACTIVITY_REMINDER_TIME_CODE = 0xDD5A;
374 constexpr uint16_t MTP_PROPERTY_ACTIVITY_OWNER_CODE = 0xDD5B;
375 constexpr uint16_t MTP_PROPERTY_ACTIVITY_STATUS_CODE = 0xDD5C;
376 constexpr uint16_t MTP_PROPERTY_OWNER_CODE = 0xDD5D;
377 constexpr uint16_t MTP_PROPERTY_EDITOR_CODE = 0xDD5E;
378 constexpr uint16_t MTP_PROPERTY_WEBMASTER_CODE = 0xDD5F;
379 constexpr uint16_t MTP_PROPERTY_URL_SOURCE_CODE = 0xDD60;
380 constexpr uint16_t MTP_PROPERTY_URL_DESTINATION_CODE = 0xDD61;
381 constexpr uint16_t MTP_PROPERTY_TIME_BOOKMARK_CODE = 0xDD62;
382 constexpr uint16_t MTP_PROPERTY_OBJECT_BOOKMARK_CODE = 0xDD63;
383 constexpr uint16_t MTP_PROPERTY_BYTE_BOOKMARK_CODE = 0xDD64;
384 constexpr uint16_t MTP_PROPERTY_LAST_BUILD_DATE_CODE = 0xDD70;
385 constexpr uint16_t MTP_PROPERTY_TIME_TO_LIVE_CODE = 0xDD71;
386 constexpr uint16_t MTP_PROPERTY_MEDIA_GUID_CODE = 0xDD72;
387 
388 // MTP Event
389 constexpr int32_t E_SUCCESS = 0;
390 constexpr int32_t MTP_SEND_ADD = 500000;
391 constexpr int32_t MTP_SEND_ADD_TIMES = 3;
392 constexpr uint16_t MTP_EVENT_UNDEFINED_CODE = 0x4000;
393 constexpr uint16_t MTP_EVENT_CANCEL_TRANSACTION_CODE = 0x4001;
394 constexpr uint16_t MTP_EVENT_OBJECT_ADDED_CODE = 0x4002;
395 constexpr uint16_t MTP_EVENT_OBJECT_REMOVED_CODE = 0x4003;
396 constexpr uint16_t MTP_EVENT_STORE_ADDED_CODE = 0x4004;
397 constexpr uint16_t MTP_EVENT_STORE_REMOVED_CODE = 0x4005;
398 constexpr uint16_t MTP_EVENT_DEVICE_PROP_CHANGED_CODE = 0x4006;
399 constexpr uint16_t MTP_EVENT_OBJECT_INFO_CHANGED_CODE = 0x4007;
400 constexpr uint16_t MTP_EVENT_DEVICE_INFO_CHANGED_CODE = 0x4008;
401 constexpr uint16_t MTP_EVENT_REQUEST_OBJECT_TRANSFER_CODE = 0x4009;
402 constexpr uint16_t MTP_EVENT_STORE_FULL_CODE = 0x400A;
403 constexpr uint16_t MTP_EVENT_DEVICE_RESET_CODE = 0x400B;
404 constexpr uint16_t MTP_EVENT_STORAGE_INFO_CHANGED_CODE = 0x400C;
405 constexpr uint16_t MTP_EVENT_CAPTURE_COMPLETE_CODE = 0x400D;
406 constexpr uint16_t MTP_EVENT_UNREPORTED_STATUS_CODE = 0x400E;
407 constexpr uint16_t MTP_EVENT_OBJECT_PROP_CHANGED_CODE = 0xC801;
408 constexpr uint16_t MTP_EVENT_OBJECT_PROP_DESC_CHANGED_CODE = 0xC802;
409 constexpr uint16_t MTP_EVENT_OBJECT_REFERENCES_CHANGED_CODE = 0xC803;
410 
411 // MTP Response
412 constexpr uint16_t MTP_UNDEFINED_CODE = 0x2000;
413 constexpr uint16_t MTP_OK_CODE = 0x2001;
414 constexpr uint16_t MTP_GENERAL_ERROR_CODE = 0x2002;
415 constexpr uint16_t MTP_SESSION_NOT_OPEN_CODE = 0x2003;
416 constexpr uint16_t MTP_INVALID_TRANSACTIONID_CODE = 0x2004;
417 constexpr uint16_t MTP_OPERATION_NOT_SUPPORTED_CODE = 0x2005;
418 constexpr uint16_t MTP_PARAMETER_NOT_SUPPORTED_CODE = 0x2006;
419 constexpr uint16_t MTP_INCOMPLETE_TRANSFER_CODE = 0x2007;
420 constexpr uint16_t MTP_INVALID_STORAGEID_CODE = 0x2008;
421 constexpr uint16_t MTP_INVALID_OBJECTHANDLE_CODE = 0x2009;
422 constexpr uint16_t MTP_DEVICEPROP_NOT_SUPPORTED_CODE = 0x200A;
423 constexpr uint16_t MTP_INVALID_OBJECTFORMATCODE_CODE = 0x200B;
424 constexpr uint16_t MTP_STORE_FULL_CODE = 0x200C;
425 constexpr uint16_t MTP_OBJECT_WRITEPROTECTED_CODE = 0x200D;
426 constexpr uint16_t MTP_STORE_READ_ONLY_CODE = 0x200E;
427 constexpr uint16_t MTP_ACCESS_DENIED_CODE = 0x200F;
428 constexpr uint16_t MTP_NO_THUMBNAIL_PRESENT_CODE = 0x2010;
429 constexpr uint16_t MTP_SELFTEST_FAILED_CODE = 0x2011;
430 constexpr uint16_t MTP_PARTIAL_DELETION_CODE = 0x2012;
431 constexpr uint16_t MTP_STORE_NOT_AVAILABLE_CODE = 0x2013;
432 constexpr uint16_t MTP_SPECIFICATION_BY_FORMAT_UNSUPPORTED_CODE = 0x2014;
433 constexpr uint16_t MTP_NO_VALID_OBJECTINFO_CODE = 0x2015;
434 constexpr uint16_t MTP_INVALID_CODE_FORMAT_CODE = 0x2016;
435 constexpr uint16_t MTP_UNKNOWN_VENDOR_CODE_CODE = 0x2017;
436 constexpr uint16_t MTP_CAPTURE_ALREADY_TERMINATED_CODE = 0x2018;
437 constexpr uint16_t MTP_DEVICE_BUSY_CODE = 0x2019;
438 constexpr uint16_t MTP_INVALID_PARENTOBJECT_CODE = 0x201A;
439 constexpr uint16_t MTP_INVALID_DEVICEPROP_FORMAT_CODE = 0x201B;
440 constexpr uint16_t MTP_INVALID_DEVICEPROP_VALUE_CODE = 0x201C;
441 constexpr uint16_t MTP_INVALID_PARAMETER_CODE = 0x201D;
442 constexpr uint16_t MTP_SESSION_ALREADY_OPEN_CODE = 0x201E;
443 constexpr uint16_t MTP_TRANSACTION_CANCELLED_CODE = 0x201F;
444 constexpr uint16_t MTP_SPECIFICATION_OF_DESTINATION_UNSUPPORTED_CODE = 0x2020;
445 constexpr uint16_t MTP_INVALID_OBJECTPROPCODE_CODE = 0xA801;
446 constexpr uint16_t MTP_INVALID_OBJECTPROP_FORMAT_CODE = 0xA802;
447 constexpr uint16_t MTP_INVALID_OBJECTPROP_VALUE_CODE = 0xA803;
448 constexpr uint16_t MTP_INVALID_OBJECTREFERENCE_CODE = 0xA804;
449 constexpr uint16_t MTP_GROUP_NOT_SUPPORTED_CODE = 0xA805;
450 constexpr uint16_t MTP_INVALID_DATASET_CODE = 0xA806;
451 constexpr uint16_t MTP_SPECIFICATION_BY_GROUP_UNSUPPORTED_CODE = 0xA807;
452 constexpr uint16_t MTP_SPECIFICATION_BY_DEPTH_UNSUPPORTED_CODE = 0xA808;
453 constexpr uint16_t MTP_OBJECT_TOO_LARGE_CODE = 0xA809;
454 constexpr uint16_t MTP_OBJECTPROP_NOT_SUPPORTED_CODE = 0xA80A;
455 
456 // MTP Data Types
457 constexpr int MTP_TYPE_UNDEFINED_CODE = 0x0000;
458 constexpr int MTP_TYPE_INT8_CODE = 0x0001;
459 constexpr int MTP_TYPE_UINT8_CODE = 0x0002;
460 constexpr int MTP_TYPE_INT16_CODE = 0x0003;
461 constexpr int MTP_TYPE_UINT16_CODE = 0x0004;
462 constexpr int MTP_TYPE_INT32_CODE = 0x0005;
463 constexpr int MTP_TYPE_UINT32_CODE = 0x0006;
464 constexpr int MTP_TYPE_INT64_CODE = 0x0007;
465 constexpr int MTP_TYPE_UINT64_CODE = 0x0008;
466 constexpr int MTP_TYPE_INT128_CODE = 0x0009;
467 constexpr int MTP_TYPE_UINT128_CODE = 0x000A;
468 constexpr int MTP_TYPE_AINT8_CODE = 0x4001;
469 constexpr int MTP_TYPE_AUINT8_CODE = 0x4002;
470 constexpr int MTP_TYPE_AINT16_CODE = 0x4003;
471 constexpr int MTP_TYPE_AUINT16_CODE = 0x4004;
472 constexpr int MTP_TYPE_AINT32_CODE = 0x4005;
473 constexpr int MTP_TYPE_AUINT32_CODE = 0x4006;
474 constexpr int MTP_TYPE_AINT64_CODE = 0x4007;
475 constexpr int MTP_TYPE_AUINT64_CODE = 0x4008;
476 constexpr int MTP_TYPE_AINT128_CODE = 0x4009;
477 constexpr int MTP_TYPE_AUINT128_CODE = 0x400A;
478 constexpr int MTP_TYPE_STRING_CODE = 0xFFFF;
479 
480 // MTP Container Offsets
481 constexpr int MTP_CONTAINER_LENGTH_OFFSET = 0;
482 constexpr int MTP_CONTAINER_TYPE_OFFSET = 4;
483 constexpr int MTP_CONTAINER_CODE_OFFSET = 6;
484 constexpr int MTP_CONTAINER_TRANSACTION_ID_OFFSET = 8;
485 constexpr int MTP_CONTAINER_PARAMETER_OFFSET = 12;
486 constexpr int32_t MTP_CONTAINER_HEADER_SIZE = 12;
487 constexpr int32_t MTP_PARAMETER_SIZE = 4;
488 
489 // Association Type
490 constexpr int MTP_ASSOCIATION_TYPE_UNDEFINED_CODE = 0x0000;
491 constexpr int MTP_ASSOCIATION_TYPE_GENERIC_FOLDER_CODE = 0x0001;
492 
493 constexpr int MTP_STORAGE_UNDEFINED = 0x0000;
494 constexpr int MTP_STORAGE_FIXEDROM = 0x0001;
495 constexpr int MTP_STORAGE_REMOVABLEROM = 0x0002;
496 constexpr int MTP_STORAGE_FIXEDRAM = 0x0003;
497 constexpr int MTP_STORAGE_REMOVABLERAM = 0x0004;
498 // Filesystem Type
499 constexpr int MTP_FILESYSTEM_UNDEFINED = 0x0000;
500 constexpr int MTP_FILESYSTEM_GENERICFLAT = 0x0001;
501 constexpr int MTP_FILESYSTEM_GENERICHIERARCHICAL = 0x0002;
502 constexpr int MTP_FILESYSTEM_DCF = 0x0003;
503 // Access Capability
504 constexpr int MTP_ACCESS_READ_WRITE = 0x0000;
505 constexpr int MTP_ACCESS_READ_ONLY_WITHOUT_OBJECT_DELETION = 0x0001;
506 constexpr int MTP_ACCESS_READ_ONLY_WITH_OBJECT_DELETION = 0x0002;
507 
508 // storage
509 constexpr uint32_t MTP_STORAGE_ID_ALL = 0xFFFFFFFF; // all storage
510 constexpr uint32_t MTP_STORAGE_ID_ALL2 = 0; // all storage
511 
512 // perceived device type
513 constexpr uint32_t MTP_PERCEIVED_DEVICE_TYPE_GENERIC = 0x00000000;
514 constexpr uint32_t MTP_PERCEIVED_DEVICE_TYPE_STILL_IMAGE_VIDEO_CAMERA = 0x00000001;
515 constexpr uint32_t MTP_PERCEIVED_DEVICE_TYPE_MEDIA_PLAYER = 0x00000002;
516 constexpr uint32_t MTP_PERCEIVED_DEVICE_TYPE_MOBILE_HANDSET = 0x00000003;
517 constexpr uint32_t MTP_PERCEIVED_DEVICE_TYPE_VIDEO_PLAYER = 0x00000004;
518 constexpr uint32_t MTP_PERCEIVED_DEVICE_TYPE_PERSONAL = 0x00000005;
519 constexpr uint32_t MTP_PERCEIVED_DEVICE_TYPE_AUDIO_RECORDER = 0x00000005;
520 
521 using int128_t = int32_t[4];
522 using uint128_t = uint32_t[4];
523 using UInt8List = std::vector<uint8_t>;
524 using UInt16List = std::vector<uint16_t>;
525 using UInt32List = std::vector<uint32_t>;
526 using UInt64List = std::vector<uint64_t>;
527 using Int8List = std::vector<int8_t>;
528 using Int16List = std::vector<int16_t>;
529 using Int32List = std::vector<int32_t>;
530 using Int64List = std::vector<int64_t>;
531 
532 // MTP Data Types
533 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_UNDEFINED = 0x0000;          // Undefined
534 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_INT8 = 0x0001;          // Signed 8-bit integer
535 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_UINT8 = 0x0002;          // Unsigned 8-bit integer
536 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_INT16 = 0x0003;          // Signed 16-bit integer
537 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_UINT16 = 0x0004;          // Unsigned 16-bit integer
538 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_INT32 = 0x0005;          // Signed 32-bit integer
539 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_UINT32 = 0x0006;          // Unsigned 32-bit integer
540 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_INT64 = 0x0007;          // Signed 64-bit integer
541 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_UINT64 = 0x0008;          // Unsigned 64-bit integer
542 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_INT128 = 0x0009;          // Signed 128-bit integer
543 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_UINT128 = 0x000A;          // Unsigned 128-bit integer
544 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AINT8 = 0x4001;          // Array of signed 8-bit integers
545 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AUINT8 = 0x4002;          // Array of unsigned 8-bit integers
546 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AINT16 = 0x4003;          // Array of signed 16-bit integers
547 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AUINT16 = 0x4004;          // Array of unsigned 16-bit integers
548 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AINT32 = 0x4005;          // Array of signed 32-bit integers
549 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AUINT32 = 0x4006;          // Array of unsigned 32-bit integers
550 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AINT64 = 0x4007;          // Array of signed 64-bit integers
551 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AUINT64 = 0x4008;          // Array of unsigned 64-bit integers
552 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AINT128 = 0x4009;          // Array of signed 128-bit integers
553 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_AUINT128 = 0x400A;          // Array of unsigned 128-bit integers
554 constexpr uint16_t  MTP_DEVICE_PROP_DESC_TYPE_STR = 0xFFFF;          // Variable-length Unicode string
555 
556 // Form_Flag
557 constexpr uint8_t MTP_DEVICE_PROP_DESC_Form_FLAG_NONE = 0x00;
558 constexpr uint8_t MTP_DEVICE_PROP_DESC_Form_FLAG_RANGE = 0x01;
559 constexpr uint8_t MTP_DEVICE_PROP_DESC_Form_FLAG_ENUMERATION = 0x02;
560 
561 constexpr int BATTERY_LEVEL_MIN = 0;
562 constexpr int BATTERY_LEVEL_MAX = 100;
563 constexpr int BATTERY_LEVEL_STEP = 1;
564 
565 #endif  // FRAMEWORKS_SERVICES_MEDIA_MTP_INCLUDE_MTP_CONSTANTS_H_
566