[go: nahoru, domu]

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
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.
23 */
24public class MtpDeviceInfo {
25
26    private String mManufacturer;
27    private String mModel;
28    private String mVersion;
29    private String mSerialNumber;
30    private int[] mOperationsSupported;
31    private int[] mEventsSupported;
32
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    }
72
73    /**
74     * Returns operation code supported by the device.
75     *
76     * @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
112     */
113    public final int[] getOperationsSupported() {
114        return mOperationsSupported;
115    }
116
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.
121     * @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
139     */
140    public final int[] getEventsSupported() {
141        return mEventsSupported;
142    }
143
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    }
174}
175