blob: 6230f5591858c47aa9b67070998418a988e959f1 [file] [log] [blame]
Ben Chanb6ce1782013-05-27 01:00:02 -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_constants.h"
6
7#include <base/logging.h>
8
9using std::ostream;
10
11namespace mist {
12
Ben Chan956f79b2014-08-06 17:11:01 -070013UsbDirection GetUsbDirectionOfEndpointAddress(uint8_t endpoint_address) {
Ben Chan72643922013-09-17 00:36:25 -070014 // The MSB of an endpoint address indicates the direction, and kUsbDirectionIn
15 // is effectively a mask to extract the MSB.
Ben Chanc440db52017-09-26 06:30:47 -070016 return (endpoint_address & kUsbDirectionIn) == kUsbDirectionIn
17 ? kUsbDirectionIn
18 : kUsbDirectionOut;
Ben Chan72643922013-09-17 00:36:25 -070019}
20
Ben Chanb6ce1782013-05-27 01:00:02 -070021const char* UsbDirectionToString(UsbDirection direction) {
22 switch (direction) {
23 case kUsbDirectionIn:
24 return "In";
25 case kUsbDirectionOut:
26 return "Out";
27 }
28 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070029 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070030}
31
32const char* UsbSpeedToString(UsbSpeed speed) {
33 switch (speed) {
34 case kUsbSpeedUnknown:
35 return "Unknown";
36 case kUsbSpeedLow:
37 return "Low";
38 case kUsbSpeedFull:
39 return "Full";
40 case kUsbSpeedHigh:
41 return "High";
42 case kUsbSpeedSuper:
43 return "Super";
44 }
45 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070046 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070047}
48
49const char* UsbTransferTypeToString(UsbTransferType transfer_type) {
50 switch (transfer_type) {
51 case kUsbTransferTypeControl:
52 return "Control";
53 case kUsbTransferTypeIsochronous:
54 return "Isochronous";
55 case kUsbTransferTypeBulk:
56 return "Bulk";
57 case kUsbTransferTypeInterrupt:
58 return "Interrupt";
Ben Chande490152013-05-29 17:05:49 -070059 case kUsbTransferTypeUnknown:
60 return "Unknown";
Ben Chanb6ce1782013-05-27 01:00:02 -070061 }
62 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070063 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070064}
65
66const char* UsbTransferStatusToString(UsbTransferStatus transfer_status) {
67 switch (transfer_status) {
68 case kUsbTransferStatusCompleted:
69 return "Completed";
70 case kUsbTransferStatusError:
71 return "Error";
72 case kUsbTransferStatusTimedOut:
73 return "TimedOut";
74 case kUsbTransferStatusCancelled:
75 return "Cancelled";
76 case kUsbTransferStatusStall:
77 return "Stall";
78 case kUsbTransferStatusNoDevice:
79 return "NoDevice";
80 case kUsbTransferStatusOverflow:
81 return "Overflow";
82 case kUsbTransferStatusUnknown:
83 return "Unknown";
84 }
85 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070086 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070087}
88
89} // namespace mist
90
91ostream& operator<<(ostream& stream, mist::UsbDirection direction) {
92 stream << UsbDirectionToString(direction);
93 return stream;
94}
95
96ostream& operator<<(ostream& stream, mist::UsbSpeed speed) {
97 stream << UsbSpeedToString(speed);
98 return stream;
99}
100
101ostream& operator<<(ostream& stream, mist::UsbTransferType transfer_type) {
102 stream << UsbTransferTypeToString(transfer_type);
103 return stream;
104}
105
106ostream& operator<<(ostream& stream, mist::UsbTransferStatus transfer_status) {
107 stream << UsbTransferStatusToString(transfer_status);
108 return stream;
109}