blob: 4b07ba3d7f4e5002e98a8a8bf7f6af4232104710 [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.
16 return (endpoint_address & kUsbDirectionIn) == kUsbDirectionIn ?
17 kUsbDirectionIn : kUsbDirectionOut;
18}
19
Ben Chanb6ce1782013-05-27 01:00:02 -070020const char* UsbDirectionToString(UsbDirection direction) {
21 switch (direction) {
22 case kUsbDirectionIn:
23 return "In";
24 case kUsbDirectionOut:
25 return "Out";
26 }
27 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070028 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070029}
30
31const char* UsbSpeedToString(UsbSpeed speed) {
32 switch (speed) {
33 case kUsbSpeedUnknown:
34 return "Unknown";
35 case kUsbSpeedLow:
36 return "Low";
37 case kUsbSpeedFull:
38 return "Full";
39 case kUsbSpeedHigh:
40 return "High";
41 case kUsbSpeedSuper:
42 return "Super";
43 }
44 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070045 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070046}
47
48const char* UsbTransferTypeToString(UsbTransferType transfer_type) {
49 switch (transfer_type) {
50 case kUsbTransferTypeControl:
51 return "Control";
52 case kUsbTransferTypeIsochronous:
53 return "Isochronous";
54 case kUsbTransferTypeBulk:
55 return "Bulk";
56 case kUsbTransferTypeInterrupt:
57 return "Interrupt";
Ben Chande490152013-05-29 17:05:49 -070058 case kUsbTransferTypeUnknown:
59 return "Unknown";
Ben Chanb6ce1782013-05-27 01:00:02 -070060 }
61 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070062 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070063}
64
65const char* UsbTransferStatusToString(UsbTransferStatus transfer_status) {
66 switch (transfer_status) {
67 case kUsbTransferStatusCompleted:
68 return "Completed";
69 case kUsbTransferStatusError:
70 return "Error";
71 case kUsbTransferStatusTimedOut:
72 return "TimedOut";
73 case kUsbTransferStatusCancelled:
74 return "Cancelled";
75 case kUsbTransferStatusStall:
76 return "Stall";
77 case kUsbTransferStatusNoDevice:
78 return "NoDevice";
79 case kUsbTransferStatusOverflow:
80 return "Overflow";
81 case kUsbTransferStatusUnknown:
82 return "Unknown";
83 }
84 NOTREACHED();
Ben Chan61ac5ba2014-08-29 18:06:43 -070085 return nullptr;
Ben Chanb6ce1782013-05-27 01:00:02 -070086}
87
88} // namespace mist
89
90ostream& operator<<(ostream& stream, mist::UsbDirection direction) {
91 stream << UsbDirectionToString(direction);
92 return stream;
93}
94
95ostream& operator<<(ostream& stream, mist::UsbSpeed speed) {
96 stream << UsbSpeedToString(speed);
97 return stream;
98}
99
100ostream& operator<<(ostream& stream, mist::UsbTransferType transfer_type) {
101 stream << UsbTransferTypeToString(transfer_type);
102 return stream;
103}
104
105ostream& operator<<(ostream& stream, mist::UsbTransferStatus transfer_status) {
106 stream << UsbTransferStatusToString(transfer_status);
107 return stream;
108}