ErrorCode_t CDC_CMDIF_bulk_in_hdlr(USBD_HANDLE_T hUsb, void* data, uint32_t event) { CDC_CMDIF_txReady = 1; if (CDC_CMDIF_txBufferAvailable()) CDC_Stream_flush(); return LPC_OK; }
ErrorCode_t CDC_SFP_bulk_in_hdlr(USBD_HANDLE_T hUsb, void* data, uint32_t event) { // TODO: add managing for 64b packets (send ZLP) CDC_SFP_txReady = 1; if (CDC_SFP_txBufferAvailable()) CDC_Stream_flush(); return LPC_OK; }
void CDC_Stream_write(uint8_t *buf, uint32_t len) { while (len) { uint32_t nWrite = CDC_SFP_txBufferFree(); if (nWrite == 0) { CDC_Stream_flush(); while ((nWrite = CDC_SFP_txBufferFree()) == 0); } if (nWrite > len) nWrite = len; len -= nWrite; while (nWrite--) { CDC_SFP_txBuffer[CDC_SFP_txBufferWritePos++ & CDC_SFP_TX_BUFFER_MASK] = *buf++; } } CDC_Stream_flush(); }