blob: 56ef414182eab398ac6afc4f871c312ff1a02308 [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>
Qijiang Fan886c4692021-02-19 11:54:10 +09008#include <base/notreached.h>
Ben Chanb6ce1782013-05-27 01:00:02 -07009
Ben Chanb6ce1782013-05-27 01:00:02 -070010namespace mist {
11
Ben Chan956f79b2014-08-06 17:11:01 -070012UsbDirection GetUsbDirectionOfEndpointAddress(uint8_t endpoint_address) {
Ben Chan72643922013-09-17 00:36:25 -070013 // The MSB of an endpoint address indicates the direction, and kUsbDirectionIn
14 // is effectively a mask to extract the MSB.
Ben Chanc440db52017-09-26 06:30:47 -070015 return (endpoint_address & kUsbDirectionIn) == kUsbDirectionIn
16 ? kUsbDirectionIn
17 : kUsbDirectionOut;
Ben Chan72643922013-09-17 00:36:25 -070018}
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
Ben Chan9870f8b2019-06-06 17:31:35 -070090std::ostream& operator<<(std::ostream& stream, mist::UsbDirection direction) {
Ben Chanb6ce1782013-05-27 01:00:02 -070091 stream << UsbDirectionToString(direction);
92 return stream;
93}
94
Ben Chan9870f8b2019-06-06 17:31:35 -070095std::ostream& operator<<(std::ostream& stream, mist::UsbSpeed speed) {
Ben Chanb6ce1782013-05-27 01:00:02 -070096 stream << UsbSpeedToString(speed);
97 return stream;
98}
99
Ben Chan9870f8b2019-06-06 17:31:35 -0700100std::ostream& operator<<(std::ostream& stream,
101 mist::UsbTransferType transfer_type) {
Ben Chanb6ce1782013-05-27 01:00:02 -0700102 stream << UsbTransferTypeToString(transfer_type);
103 return stream;
104}
105
Ben Chan9870f8b2019-06-06 17:31:35 -0700106std::ostream& operator<<(std::ostream& stream,
107 mist::UsbTransferStatus transfer_status) {
Ben Chanb6ce1782013-05-27 01:00:02 -0700108 stream << UsbTransferStatusToString(transfer_status);
109 return stream;
110}