size_t Send(const IObjectInputStreamPtr &inputStream) { size_t r = inputStream->Read(Buffer.data(), Buffer.size()); //HexDump("write", ByteArray(Buffer.data(), Buffer.data() + r)); KernelUrb.buffer_length = r; return r; }
void Device::WriteBulk(const EndpointPtr & ep, const IObjectInputStreamPtr &inputStream, int timeout) { IOUSBInterfaceInterface ** interface = ep->GetInterfaceHandle(); size_t transferSize = ep->GetMaxPacketSize(); ByteArray buffer(transferSize); size_t r; do { r = inputStream->Read(buffer.data(), buffer.size()); USB_CALL((*interface)->WritePipe(interface, ep->GetRefIndex(), buffer.data(), r)); } while(r == transferSize); }