| // 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. |
| |
| #include "mist/usb_constants.h" |
| |
| #include <base/logging.h> |
| |
| using std::ostream; |
| |
| namespace mist { |
| |
| UsbDirection GetUsbDirectionOfEndpointAddress(uint8_t endpoint_address) { |
| // The MSB of an endpoint address indicates the direction, and kUsbDirectionIn |
| // is effectively a mask to extract the MSB. |
| return (endpoint_address & kUsbDirectionIn) == kUsbDirectionIn ? |
| kUsbDirectionIn : kUsbDirectionOut; |
| } |
| |
| const char* UsbDirectionToString(UsbDirection direction) { |
| switch (direction) { |
| case kUsbDirectionIn: |
| return "In"; |
| case kUsbDirectionOut: |
| return "Out"; |
| } |
| NOTREACHED(); |
| return nullptr; |
| } |
| |
| const char* UsbSpeedToString(UsbSpeed speed) { |
| switch (speed) { |
| case kUsbSpeedUnknown: |
| return "Unknown"; |
| case kUsbSpeedLow: |
| return "Low"; |
| case kUsbSpeedFull: |
| return "Full"; |
| case kUsbSpeedHigh: |
| return "High"; |
| case kUsbSpeedSuper: |
| return "Super"; |
| } |
| NOTREACHED(); |
| return nullptr; |
| } |
| |
| const char* UsbTransferTypeToString(UsbTransferType transfer_type) { |
| switch (transfer_type) { |
| case kUsbTransferTypeControl: |
| return "Control"; |
| case kUsbTransferTypeIsochronous: |
| return "Isochronous"; |
| case kUsbTransferTypeBulk: |
| return "Bulk"; |
| case kUsbTransferTypeInterrupt: |
| return "Interrupt"; |
| case kUsbTransferTypeUnknown: |
| return "Unknown"; |
| } |
| NOTREACHED(); |
| return nullptr; |
| } |
| |
| const char* UsbTransferStatusToString(UsbTransferStatus transfer_status) { |
| switch (transfer_status) { |
| case kUsbTransferStatusCompleted: |
| return "Completed"; |
| case kUsbTransferStatusError: |
| return "Error"; |
| case kUsbTransferStatusTimedOut: |
| return "TimedOut"; |
| case kUsbTransferStatusCancelled: |
| return "Cancelled"; |
| case kUsbTransferStatusStall: |
| return "Stall"; |
| case kUsbTransferStatusNoDevice: |
| return "NoDevice"; |
| case kUsbTransferStatusOverflow: |
| return "Overflow"; |
| case kUsbTransferStatusUnknown: |
| return "Unknown"; |
| } |
| NOTREACHED(); |
| return nullptr; |
| } |
| |
| } // namespace mist |
| |
| ostream& operator<<(ostream& stream, mist::UsbDirection direction) { |
| stream << UsbDirectionToString(direction); |
| return stream; |
| } |
| |
| ostream& operator<<(ostream& stream, mist::UsbSpeed speed) { |
| stream << UsbSpeedToString(speed); |
| return stream; |
| } |
| |
| ostream& operator<<(ostream& stream, mist::UsbTransferType transfer_type) { |
| stream << UsbTransferTypeToString(transfer_type); |
| return stream; |
| } |
| |
| ostream& operator<<(ostream& stream, mist::UsbTransferStatus transfer_status) { |
| stream << UsbTransferStatusToString(transfer_status); |
| return stream; |
| } |