static int cyapi_bulk_transfer(void *driver, uint8_t endpoint, void *buffer, uint32_t buffer_len, uint32_t timeout_ms) { bool success; int status = BLADERF_ERR_IO; CCyUSBDevice *dev = get_device(driver); CCyBulkEndPoint *ep = get_ep(dev, endpoint); if (ep != NULL) { LONG len = buffer_len; dev->ControlEndPt->TimeOut = timeout_ms ? timeout_ms : INFINITE; success = ep->XferData((PUCHAR)buffer, len); if (success) { if (len == buffer_len) { status = 0; } else { log_debug("Transfer len mismatch: %u vs %u\n", (unsigned int) buffer_len, (unsigned int) len); } } else { log_debug("Transfered failed.\n"); } } else { log_debug("Failed to get EP handle.\n"); } return status; }
bool CUSB30Device::BulkEndPointInXfer(BYTE *pData, LONG &toRead) { m_oSemAccessCyCtrl.Lock(); CCyBulkEndPoint *pEndPt = m_pUSBDevice->BulkInEndPt; bool ok = false; if (pEndPt) { ok = pEndPt->XferData(pData, toRead); } m_oSemAccessCyCtrl.Unlock(); return ok; }