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;
}
예제 #2
0
파일: CDC.c 프로젝트: GiedriusM/wUPER
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;
}
예제 #3
0
파일: CDC.c 프로젝트: GiedriusM/wUPER
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();
}