blob: 60bb63cae9cd8ba7cd60e0609c7a4aacdf44f558 [file] [log] [blame]
// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MIST_USB_CONSTANTS_H_
#define MIST_USB_CONSTANTS_H_
#include <stdint.h>
#include <ostream> // NOLINT(readability/streams)
namespace mist {
// USB class codes.
enum UsbClass {
kUsbClassCommunication = 0x02,
kUsbClassMassStorage = 0x08
};
// USB subclass codes.
enum UsbSubClass {
kUsbSubClassMBIM = 0x0e
};
// USB endpoint direction, which is one-to-one equivalent to the
// libusb_endpoint_direction enum defined in libusb 1.0.
enum UsbDirection {
// Device to host.
kUsbDirectionIn = 0x80,
// Host to device.
kUsbDirectionOut = 0x00
};
// USB speed codes, which is one-to-one equivalent to the libusb_speed enum
// defined in libusb 1.0.
enum UsbSpeed {
kUsbSpeedUnknown = 0,
kUsbSpeedLow = 1,
kUsbSpeedFull = 2,
kUsbSpeedHigh = 3,
kUsbSpeedSuper = 4
};
// USB endpoint transfer type, which is one-to-one equivalent to the
// libusb_transfer_type enum defined in libusb 1.0.
enum UsbTransferType {
kUsbTransferTypeControl = 0,
kUsbTransferTypeIsochronous = 1,
kUsbTransferTypeBulk = 2,
kUsbTransferTypeInterrupt = 3,
// Additional enum value to indicate an uninitialized/unknown transfer type.
kUsbTransferTypeUnknown = -1
};
// USB endpoint transfer status, which is one-to-one equivalent to the
// libusb_transfer_status enum defined in libusb 1.0.
enum UsbTransferStatus {
kUsbTransferStatusCompleted,
kUsbTransferStatusError,
kUsbTransferStatusTimedOut,
kUsbTransferStatusCancelled,
kUsbTransferStatusStall,
kUsbTransferStatusNoDevice,
kUsbTransferStatusOverflow,
// Additional enum value to indicate an unknown transfer status.
kUsbTransferStatusUnknown
};
// Invalid USB configuration value
const int kUsbConfigurationValueInvalid = -1;
// Returns the USB endpoint direction of |endpoint_address|.
UsbDirection GetUsbDirectionOfEndpointAddress(uint8_t endpoint_address);
// Returns a string describing the USB endpoint direction |direction|.
const char* UsbDirectionToString(UsbDirection direction);
// Returns a string describing the USB speed code |speed|.
const char* UsbSpeedToString(UsbSpeed speed);
// Returns a string describing the USB endpoint transfer type |transfer_type|.
const char* UsbTransferTypeToString(UsbTransferType transfer_type);
// Returns a string describing the USB endpoint transfer status
// |transfer_status|.
const char* UsbTransferStatusToString(UsbTransferStatus transfer_status);
} // namespace mist
// Output stream operators provided to facilitate logging.
std::ostream& operator<<(std::ostream& stream, mist::UsbDirection direction);
std::ostream& operator<<(std::ostream& stream, mist::UsbSpeed speed);
std::ostream& operator<<(std::ostream& stream,
mist::UsbTransferType transfer_type);
std::ostream& operator<<(std::ostream& stream,
mist::UsbTransferStatus transfer_status);
#endif // MIST_USB_CONSTANTS_H_