static void new_data(uint8_t *data, size_t len) { printf("received: `%*s'\n", len, data); cdc_write(data, len, &cdc); cdc_read_more(&cdc); }
void new_data(uint8_t *data, size_t len) { onboard_led(-1); cdc_write(data, len, &loopback); cdc_read_more(&loopback); }
static void new_data(uint8_t *data, size_t len) { draining = process_data(data, len); if (!draining) cdc_read_more(&cdc); }
void cdc_init(void (*data_ready_cb)(uint8_t *, size_t), void (*data_sent_cb)(size_t), struct cdc_ctx *ctx) { usb_attach_function(&cdc_function, &ctx->header); ctx->data_ready_cb = data_ready_cb; ctx->data_sent_cb = data_sent_cb; ctx->out_queued = 0; ctx->notice_pipe = usb_init_ep(&ctx->header, CDC_NOTICE_EP, USB_EP_TX, CDC_NOTICE_SIZE); ctx->tx_pipe = usb_init_ep(&ctx->header, CDC_TX_EP, USB_EP_TX, CDC_TX_SIZE); ctx->rx_pipe = usb_init_ep(&ctx->header, CDC_RX_EP, USB_EP_RX, CDC_RX_SIZE); cdc_read_more(ctx); cdc_tx_done(ctx->outbuf, -1, ctx); }