blob: cf4605efbf839657514d372d58e70ccd59c3ed9a [file] [log] [blame]
// 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_bulk_transfer.h"
#include <libusb.h>
#include "mist/usb_device.h"
namespace mist {
bool UsbBulkTransfer::Initialize(const UsbDevice& device,
uint8_t endpoint_address,
int length,
uint32_t timeout) {
if (!device.IsOpen()) {
mutable_error()->set_type(UsbError::kErrorDeviceNotOpen);
return false;
}
// Allocate no isochronous packet descriptors.
if (!Allocate(0) || !AllocateBuffer(length))
return false;
libusb_fill_bulk_transfer(transfer(), device.device_handle(),
endpoint_address, buffer(), length,
&UsbTransfer::OnCompleted, this, timeout);
return true;
}
} // namespace mist