Exemplo n.º 1
0
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;

}