| Index: Source/modules/webusb/USBEndpoint.cpp
|
| diff --git a/Source/modules/webusb/USBEndpoint.cpp b/Source/modules/webusb/USBEndpoint.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..07ba40fea916cae1f92147a6e0795f6071ac79c6
|
| --- /dev/null
|
| +++ b/Source/modules/webusb/USBEndpoint.cpp
|
| @@ -0,0 +1,99 @@
|
| +// Copyright 2015 The Chromium 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 "config.h"
|
| +#include "modules/webusb/USBEndpoint.h"
|
| +
|
| +#include "bindings/core/v8/ExceptionState.h"
|
| +#include "modules/webusb/USBAlternateInterface.h"
|
| +#include "public/platform/modules/webusb/WebUSBDevice.h"
|
| +
|
| +namespace blink {
|
| +
|
| +namespace {
|
| +
|
| +String convertDirection(const WebUSBDevice::TransferDirection& direction)
|
| +{
|
| + switch (direction) {
|
| + case WebUSBDevice::TransferDirectionIn:
|
| + return "in";
|
| + case WebUSBDevice::TransferDirectionOut:
|
| + return "out";
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + return "";
|
| + }
|
| +}
|
| +
|
| +String convertType(const WebUSBDeviceInfo::Endpoint::Type& type)
|
| +{
|
| + switch (type) {
|
| + case WebUSBDeviceInfo::Endpoint::TypeBulk:
|
| + return "bulk";
|
| + case WebUSBDeviceInfo::Endpoint::TypeInterrupt:
|
| + return "interrupt";
|
| + case WebUSBDeviceInfo::Endpoint::TypeIsochronous:
|
| + return "isochronous";
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + return "";
|
| + }
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +// static
|
| +USBEndpoint* USBEndpoint::create(const USBAlternateInterface* alternate, size_t endpointIndex)
|
| +{
|
| + return new USBEndpoint(alternate, endpointIndex);
|
| +}
|
| +
|
| +// static
|
| +USBEndpoint* USBEndpoint::create(const USBAlternateInterface* alternate, size_t endpointIndex, ExceptionState& exceptionState)
|
| +{
|
| + if (endpointIndex < alternate->info().endpoints.size())
|
| + return new USBEndpoint(alternate, endpointIndex);
|
| + exceptionState.throwRangeError("Invalid endpoint index.");
|
| + return nullptr;
|
| +}
|
| +
|
| +USBEndpoint::USBEndpoint(const USBAlternateInterface* alternate, size_t endpointIndex)
|
| + : m_alternate(alternate)
|
| + , m_endpointIndex(endpointIndex)
|
| +{
|
| +}
|
| +
|
| +const WebUSBDeviceInfo::Endpoint& USBEndpoint::info() const
|
| +{
|
| + const WebUSBDeviceInfo::AlternateInterface& alternateInfo = m_alternate->info();
|
| + ASSERT(m_endpointIndex < alternateInfo.endpoints.size());
|
| + return alternateInfo.endpoints[m_endpointIndex];
|
| +}
|
| +
|
| +uint8_t USBEndpoint::endpointNumber() const
|
| +{
|
| + return info().endpointNumber;
|
| +}
|
| +
|
| +String USBEndpoint::direction() const
|
| +{
|
| + return convertDirection(info().direction);
|
| +}
|
| +
|
| +String USBEndpoint::type() const
|
| +{
|
| + return convertType(info().type);
|
| +}
|
| +
|
| +unsigned USBEndpoint::packetSize() const
|
| +{
|
| + return info().packetSize;
|
| +}
|
| +
|
| +DEFINE_TRACE(USBEndpoint)
|
| +{
|
| + visitor->trace(m_alternate);
|
| +}
|
| +
|
| +} // namespace blink
|
|
|