blob: 86bd599e442cb06124e7ed8cf5894b3133261e7b [file] [log] [blame]
Mike Lockwood8182e722010-12-30 15:38:45 -05001/*
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
17package android.mtp;
18
19/**
20 * This class encapsulates information about an MTP device.
21 * This corresponds to the DeviceInfo Dataset described in
22 * section 5.1.1 of the MTP specification.
Mike Lockwood8182e722010-12-30 15:38:45 -050023 */
24public class MtpDeviceInfo {
25
26 private String mManufacturer;
27 private String mModel;
28 private String mVersion;
29 private String mSerialNumber;
Daichi Hirono1d4779c2016-01-06 16:43:32 +090030 private int[] mOperationsSupported;
Daichi Hirono148954a2016-01-21 19:55:45 +090031 private int[] mEventsSupported;
Mike Lockwood8182e722010-12-30 15:38:45 -050032
33 // only instantiated via JNI
34 private MtpDeviceInfo() {
35 }
36
37 /**
38 * Returns the manufacturer's name for the MTP device
39 *
40 * @return the manufacturer name
41 */
42 public final String getManufacturer() {
43 return mManufacturer;
44 }
45
46 /**
47 * Returns the model name for the MTP device
48 *
49 * @return the model name
50 */
51 public final String getModel() {
52 return mModel;
53 }
54
55 /**
56 * Returns the version string the MTP device
57 *
58 * @return the device version
59 */
60 public final String getVersion() {
61 return mVersion;
62 }
63
64 /**
65 * Returns the unique serial number for the MTP device
66 *
67 * @return the serial number
68 */
69 public final String getSerialNumber() {
70 return mSerialNumber;
71 }
Daichi Hirono1d4779c2016-01-06 16:43:32 +090072
73 /**
74 * Returns operation code supported by the device.
75 *
Daichi Hirono148954a2016-01-21 19:55:45 +090076 * @return supported operation code. Can be null if device does not provide the property.
77 * @see MtpConstants#OPERATION_GET_DEVICE_INFO
78 * @see MtpConstants#OPERATION_OPEN_SESSION
79 * @see MtpConstants#OPERATION_CLOSE_SESSION
80 * @see MtpConstants#OPERATION_GET_STORAGE_I_DS
81 * @see MtpConstants#OPERATION_GET_STORAGE_INFO
82 * @see MtpConstants#OPERATION_GET_NUM_OBJECTS
83 * @see MtpConstants#OPERATION_GET_OBJECT_HANDLES
84 * @see MtpConstants#OPERATION_GET_OBJECT_INFO
85 * @see MtpConstants#OPERATION_GET_OBJECT
86 * @see MtpConstants#OPERATION_GET_THUMB
87 * @see MtpConstants#OPERATION_DELETE_OBJECT
88 * @see MtpConstants#OPERATION_SEND_OBJECT_INFO
89 * @see MtpConstants#OPERATION_SEND_OBJECT
90 * @see MtpConstants#OPERATION_INITIATE_CAPTURE
91 * @see MtpConstants#OPERATION_FORMAT_STORE
92 * @see MtpConstants#OPERATION_RESET_DEVICE
93 * @see MtpConstants#OPERATION_SELF_TEST
94 * @see MtpConstants#OPERATION_SET_OBJECT_PROTECTION
95 * @see MtpConstants#OPERATION_POWER_DOWN
96 * @see MtpConstants#OPERATION_GET_DEVICE_PROP_DESC
97 * @see MtpConstants#OPERATION_GET_DEVICE_PROP_VALUE
98 * @see MtpConstants#OPERATION_SET_DEVICE_PROP_VALUE
99 * @see MtpConstants#OPERATION_RESET_DEVICE_PROP_VALUE
100 * @see MtpConstants#OPERATION_TERMINATE_OPEN_CAPTURE
101 * @see MtpConstants#OPERATION_MOVE_OBJECT
102 * @see MtpConstants#OPERATION_COPY_OBJECT
103 * @see MtpConstants#OPERATION_GET_PARTIAL_OBJECT
104 * @see MtpConstants#OPERATION_INITIATE_OPEN_CAPTURE
105 * @see MtpConstants#OPERATION_GET_OBJECT_PROPS_SUPPORTED
106 * @see MtpConstants#OPERATION_GET_OBJECT_PROP_DESC
107 * @see MtpConstants#OPERATION_GET_OBJECT_PROP_VALUE
108 * @see MtpConstants#OPERATION_SET_OBJECT_PROP_VALUE
109 * @see MtpConstants#OPERATION_GET_OBJECT_REFERENCES
110 * @see MtpConstants#OPERATION_SET_OBJECT_REFERENCES
111 * @see MtpConstants#OPERATION_SKIP
Daichi Hirono1d4779c2016-01-06 16:43:32 +0900112 */
Daichi Hirono399df702016-04-13 11:07:44 +0900113 public final int[] getOperationsSupported() {
Daichi Hirono1d4779c2016-01-06 16:43:32 +0900114 return mOperationsSupported;
115 }
Daichi Hirono148954a2016-01-21 19:55:45 +0900116
117 /**
118 * Returns event code supported by the device.
119 *
120 * @return supported event code. Can be null if device does not provide the property.
Daichi Hirono399df702016-04-13 11:07:44 +0900121 * @see MtpEvent#EVENT_UNDEFINED
122 * @see MtpEvent#EVENT_CANCEL_TRANSACTION
123 * @see MtpEvent#EVENT_OBJECT_ADDED
124 * @see MtpEvent#EVENT_OBJECT_REMOVED
125 * @see MtpEvent#EVENT_STORE_ADDED
126 * @see MtpEvent#EVENT_STORE_REMOVED
127 * @see MtpEvent#EVENT_DEVICE_PROP_CHANGED
128 * @see MtpEvent#EVENT_OBJECT_INFO_CHANGED
129 * @see MtpEvent#EVENT_DEVICE_INFO_CHANGED
130 * @see MtpEvent#EVENT_REQUEST_OBJECT_TRANSFER
131 * @see MtpEvent#EVENT_STORE_FULL
132 * @see MtpEvent#EVENT_DEVICE_RESET
133 * @see MtpEvent#EVENT_STORAGE_INFO_CHANGED
134 * @see MtpEvent#EVENT_CAPTURE_COMPLETE
135 * @see MtpEvent#EVENT_UNREPORTED_STATUS
136 * @see MtpEvent#EVENT_OBJECT_PROP_CHANGED
137 * @see MtpEvent#EVENT_OBJECT_PROP_DESC_CHANGED
138 * @see MtpEvent#EVENT_OBJECT_REFERENCES_CHANGED
Daichi Hirono148954a2016-01-21 19:55:45 +0900139 */
Daichi Hirono399df702016-04-13 11:07:44 +0900140 public final int[] getEventsSupported() {
Daichi Hirono148954a2016-01-21 19:55:45 +0900141 return mEventsSupported;
142 }
Daichi Hirono399df702016-04-13 11:07:44 +0900143
144 /**
145 * Returns if the given operation is supported by the device or not.
146 * @param code Operation code.
147 * @return If the given operation is supported by the device or not.
148 */
149 public boolean isOperationSupported(int code) {
150 return isSupported(mOperationsSupported, code);
151 }
152
153 /**
154 * Returns if the given event is supported by the device or not.
155 * @param code Event code.
156 * @return If the given event is supported by the device or not.
157 */
158 public boolean isEventSupported(int code) {
159 return isSupported(mEventsSupported, code);
160 }
161
162 /**
163 * Returns if the code set contains code.
164 * @hide
165 */
166 private static boolean isSupported(int[] set, int code) {
167 for (final int element : set) {
168 if (element == code) {
169 return true;
170 }
171 }
172 return false;
173 }
Daichi Hirono1d4779c2016-01-06 16:43:32 +0900174}