VirtualBox

source: vbox/trunk/src/VBox/Main/USBDeviceImpl.cpp@ 5658

Last change on this file since 5658 was 5528, checked in by vboxsync, 17 years ago

Added PortVersion and Version attributes for obtaining the major USB version of the port and the device respectively.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.1 KB
Line 
1/** @file
2 *
3 * VirtualBox COM class implementation
4 */
5
6/*
7 * Copyright (C) 2006-2007 innotek GmbH
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License as published by the Free Software Foundation,
13 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
14 * distribution. VirtualBox OSE is distributed in the hope that it will
15 * be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#include "USBDeviceImpl.h"
19
20
21// constructor / destructor
22/////////////////////////////////////////////////////////////////////////////
23
24OUSBDevice::OUSBDevice()
25{
26 mVendorId = 0;
27 mProductId = 0;
28 mRevision = 0;
29
30 mPort = 0;
31 mVersion = mPortVersion = 1;
32 mRemote = FALSE;
33}
34
35OUSBDevice::~OUSBDevice()
36{
37}
38
39
40// public initializer/uninitializer for internal purposes only
41/////////////////////////////////////////////////////////////////////////////
42
43/**
44 * Initializes the USB device object.
45 *
46 * @returns COM result indicator
47 * @param aUSBDevice The USB device (interface) to clone.
48 */
49HRESULT OUSBDevice::init(IUSBDevice *aUSBDevice)
50{
51 AutoLock lock(this);
52 AssertReturn (!isReady(), E_UNEXPECTED);
53
54 HRESULT hrc = aUSBDevice->COMGETTER(VendorId)(&mVendorId);
55 ComAssertComRCRet (hrc, hrc);
56 ComAssertRet (mVendorId, E_INVALIDARG);
57
58 hrc = aUSBDevice->COMGETTER(ProductId)(&mProductId);
59 ComAssertComRCRet (hrc, hrc);
60 ComAssertRet (mProductId, E_INVALIDARG);
61
62 hrc = aUSBDevice->COMGETTER(Revision)(&mRevision);
63 ComAssertComRCRet (hrc, hrc);
64
65 hrc = aUSBDevice->COMGETTER(Manufacturer)(mManufacturer.asOutParam());
66 ComAssertComRCRet (hrc, hrc);
67
68 hrc = aUSBDevice->COMGETTER(Product)(mProduct.asOutParam());
69 ComAssertComRCRet (hrc, hrc);
70
71 hrc = aUSBDevice->COMGETTER(SerialNumber)(mSerialNumber.asOutParam());
72 ComAssertComRCRet (hrc, hrc);
73
74 hrc = aUSBDevice->COMGETTER(Address)(mAddress.asOutParam());
75 ComAssertComRCRet (hrc, hrc);
76
77 hrc = aUSBDevice->COMGETTER(Port)(&mPort);
78 ComAssertComRCRet (hrc, hrc);
79
80 hrc = aUSBDevice->COMGETTER(Port)(&mVersion);
81 ComAssertComRCRet (hrc, hrc);
82
83 hrc = aUSBDevice->COMGETTER(Port)(&mPortVersion);
84 ComAssertComRCRet (hrc, hrc);
85
86 hrc = aUSBDevice->COMGETTER(Remote)(&mRemote);
87 ComAssertComRCRet (hrc, hrc);
88
89 hrc = aUSBDevice->COMGETTER(Id)(mId.asOutParam());
90 ComAssertComRCRet (hrc, hrc);
91
92 setReady(true);
93 return S_OK;
94}
95
96
97// IUSBDevice properties
98/////////////////////////////////////////////////////////////////////////////
99
100/**
101 * Returns the GUID.
102 *
103 * @returns COM status code
104 * @param aId Address of result variable.
105 */
106STDMETHODIMP OUSBDevice::COMGETTER(Id)(GUIDPARAMOUT aId)
107{
108 if (!aId)
109 return E_POINTER;
110
111 AutoLock lock(this);
112 CHECK_READY();
113
114 mId.cloneTo(aId);
115 return S_OK;
116}
117
118
119/**
120 * Returns the vendor Id.
121 *
122 * @returns COM status code
123 * @param aVendorId Where to store the vendor id.
124 */
125STDMETHODIMP OUSBDevice::COMGETTER(VendorId)(USHORT *aVendorId)
126{
127 if (!aVendorId)
128 return E_POINTER;
129
130 AutoLock lock(this);
131 CHECK_READY();
132
133 *aVendorId = mVendorId;
134 return S_OK;
135}
136
137
138/**
139 * Returns the product Id.
140 *
141 * @returns COM status code
142 * @param aProductId Where to store the product id.
143 */
144STDMETHODIMP OUSBDevice::COMGETTER(ProductId)(USHORT *aProductId)
145{
146 if (!aProductId)
147 return E_POINTER;
148
149 AutoLock lock(this);
150 CHECK_READY();
151
152 *aProductId = mProductId;
153 return S_OK;
154}
155
156
157/**
158 * Returns the revision BCD.
159 *
160 * @returns COM status code
161 * @param aRevision Where to store the revision BCD.
162 */
163STDMETHODIMP OUSBDevice::COMGETTER(Revision)(USHORT *aRevision)
164{
165 if (!aRevision)
166 return E_POINTER;
167
168 AutoLock lock(this);
169 CHECK_READY();
170
171 *aRevision = mRevision;
172 return S_OK;
173}
174
175/**
176 * Returns the manufacturer string.
177 *
178 * @returns COM status code
179 * @param aManufacturer Where to put the return string.
180 */
181STDMETHODIMP OUSBDevice::COMGETTER(Manufacturer)(BSTR *aManufacturer)
182{
183 if (!aManufacturer)
184 return E_POINTER;
185
186 AutoLock lock(this);
187 CHECK_READY();
188
189 mManufacturer.cloneTo(aManufacturer);
190 return S_OK;
191}
192
193
194/**
195 * Returns the product string.
196 *
197 * @returns COM status code
198 * @param aProduct Where to put the return string.
199 */
200STDMETHODIMP OUSBDevice::COMGETTER(Product)(BSTR *aProduct)
201{
202 if (!aProduct)
203 return E_POINTER;
204
205 AutoLock lock(this);
206 CHECK_READY();
207
208 mProduct.cloneTo(aProduct);
209 return S_OK;
210}
211
212
213/**
214 * Returns the serial number string.
215 *
216 * @returns COM status code
217 * @param aSerialNumber Where to put the return string.
218 */
219STDMETHODIMP OUSBDevice::COMGETTER(SerialNumber)(BSTR *aSerialNumber)
220{
221 if (!aSerialNumber)
222 return E_POINTER;
223
224 AutoLock lock(this);
225 CHECK_READY();
226
227 mSerialNumber.cloneTo(aSerialNumber);
228 return S_OK;
229}
230
231
232/**
233 * Returns the host specific device address.
234 *
235 * @returns COM status code
236 * @param aAddress Where to put the return string.
237 */
238STDMETHODIMP OUSBDevice::COMGETTER(Address)(BSTR *aAddress)
239{
240 if (!aAddress)
241 return E_POINTER;
242
243 AutoLock lock(this);
244 CHECK_READY();
245
246 mAddress.cloneTo(aAddress);
247 return S_OK;
248}
249
250STDMETHODIMP OUSBDevice::COMGETTER(Port)(USHORT *aPort)
251{
252 if (!aPort)
253 return E_POINTER;
254
255 AutoLock lock(this);
256 CHECK_READY();
257
258 *aPort = mPort;
259 return S_OK;
260}
261
262STDMETHODIMP OUSBDevice::COMGETTER(Version)(USHORT *aVersion)
263{
264 if (!aVersion)
265 return E_POINTER;
266
267 AutoLock lock(this);
268 CHECK_READY();
269
270 *aVersion = mVersion;
271 return S_OK;
272}
273
274STDMETHODIMP OUSBDevice::COMGETTER(PortVersion)(USHORT *aPortVersion)
275{
276 if (!aPortVersion)
277 return E_POINTER;
278
279 AutoLock lock(this);
280 CHECK_READY();
281
282 *aPortVersion = mPortVersion;
283 return S_OK;
284}
285
286STDMETHODIMP OUSBDevice::COMGETTER(Remote)(BOOL *aRemote)
287{
288 if (!aRemote)
289 return E_POINTER;
290
291 AutoLock lock(this);
292 CHECK_READY();
293
294 *aRemote = mRemote;
295 return S_OK;
296}
297
298// private methods
299/////////////////////////////////////////////////////////////////////////////
300
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette