blob: a9f01b3af8d9c0afd88f2a6617e5338ccba02f73 [file] [log] [blame]
Ben Chanf4930e52013-05-28 13:24:54 -07001// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "mist/usb_interface.h"
6
7#include <libusb.h>
8
9#include <base/logging.h>
Ben Chandcc0c7a2014-02-05 18:03:39 -080010#include <base/strings/stringprintf.h>
Ben Chanf4930e52013-05-28 13:24:54 -070011
12#include "mist/usb_device.h"
13#include "mist/usb_interface_descriptor.h"
14
15using base::StringPrintf;
16
17namespace mist {
18
19UsbInterface::UsbInterface(const base::WeakPtr<UsbDevice>& device,
20 const libusb_interface* interface)
21 : device_(device),
22 interface_(interface) {
23 CHECK(interface_);
24}
25
26UsbInterface::~UsbInterface() {}
27
28int UsbInterface::GetNumAlternateSettings() const {
29 return interface_->num_altsetting;
30}
31
Ben Chand31d6c12013-08-07 21:28:33 -070032UsbInterfaceDescriptor* UsbInterface::GetAlternateSetting(
Ben Chanf4930e52013-05-28 13:24:54 -070033 int index) const {
34 if (index < 0 || index >= GetNumAlternateSettings()) {
35 LOG(ERROR) << StringPrintf("Invalid alternate setting index %d. "
36 "Must be non-negative and less than %d.",
37 index, GetNumAlternateSettings());
Ben Chand31d6c12013-08-07 21:28:33 -070038 return NULL;
Ben Chanf4930e52013-05-28 13:24:54 -070039 }
40
Ben Chand31d6c12013-08-07 21:28:33 -070041 return new UsbInterfaceDescriptor(device_, &interface_->altsetting[index]);
Ben Chanf4930e52013-05-28 13:24:54 -070042}
43
44} // namespace mist