From 7ff0dbb64cfcab7256a4b113931c63a4c7efa0d3 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 8 Nov 2013 14:46:48 +0700 Subject: add tusbd_cdc_is_busy enhance cdc serial device demo refractor fifo.c --- tinyusb/class/cdc_device.c | 13 ++++++++++--- tinyusb/class/cdc_device.h | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'tinyusb/class') diff --git a/tinyusb/class/cdc_device.c b/tinyusb/class/cdc_device.c index 18f52d1c0..b96320143 100644 --- a/tinyusb/class/cdc_device.c +++ b/tinyusb/class/cdc_device.c @@ -74,7 +74,7 @@ static inline bool cdcd_is_configured(uint8_t coreid) return cdcd_data[coreid].interface_number != INTERFACE_INVALID_NUMBER; } -tusb_error_t cdcd_xfer(uint8_t coreid, cdc_pipeid_t pipeid, void * p_buffer, uint32_t length, bool is_notify) +static tusb_error_t cdcd_xfer(uint8_t coreid, cdc_pipeid_t pipeid, void * p_buffer, uint32_t length, bool is_notify) { ASSERT(cdcd_is_configured(coreid), TUSB_ERROR_USBD_INTERFACE_NOT_CONFIGURED); @@ -88,13 +88,20 @@ tusb_error_t cdcd_xfer(uint8_t coreid, cdc_pipeid_t pipeid, void * p_buffer, ui } //--------------------------------------------------------------------+ -// APPLICATION API +// APPLICATION API (Parameters requires validation) //--------------------------------------------------------------------+ bool tusbd_cdc_is_configured(uint8_t coreid) { return cdcd_is_configured(coreid); } +bool tusbd_cdc_is_busy(uint8_t coreid, cdc_pipeid_t pipeid) +{ + ASSERT(cdcd_is_configured(coreid) && (pipeid < CDC_PIPE_ERROR), false); + + return dcd_pipe_is_busy( cdcd_data[coreid].edpt_hdl[pipeid] ); +} + tusb_error_t tusbd_cdc_receive(uint8_t coreid, void * p_buffer, uint32_t length, bool is_notify) { return cdcd_xfer(coreid, CDC_PIPE_DATA_OUT, p_buffer, length, is_notify); @@ -208,7 +215,7 @@ tusb_error_t cdcd_control_request(uint8_t coreid, tusb_control_request_t const * case CDC_REQUEST_SET_LINE_CODING: dcd_pipe_control_xfer(coreid, p_request->bmRequestType_bit.direction, &cdcd_line_coding[coreid], min16_of(sizeof(cdc_line_coding_t), p_request->wLength) ); - // TODO notify application + // TODO notify application on xfer complete break; case CDC_REQUEST_SET_CONTROL_LINE_STATE: // TODO extract DTE present diff --git a/tinyusb/class/cdc_device.h b/tinyusb/class/cdc_device.h index a0e8d5bde..e1f298b76 100644 --- a/tinyusb/class/cdc_device.h +++ b/tinyusb/class/cdc_device.h @@ -58,6 +58,7 @@ // APPLICATION API //--------------------------------------------------------------------+ bool tusbd_cdc_is_configured(uint8_t coreid); +bool tusbd_cdc_is_busy(uint8_t coreid, cdc_pipeid_t pipeid) ATTR_PURE ATTR_WARN_UNUSED_RESULT; tusb_error_t tusbd_cdc_send(uint8_t coreid, void * p_data, uint32_t length, bool is_notify); tusb_error_t tusbd_cdc_receive(uint8_t coreid, void * p_buffer, uint32_t length, bool is_notify); @@ -66,6 +67,7 @@ tusb_error_t tusbd_cdc_receive(uint8_t coreid, void * p_buffer, uint32_t length, void tusbd_cdc_mounted_cb(uint8_t coreid); void tusbd_cdc_unmounted_cb(uint8_t coreid); void tusbd_cdc_xfer_isr(uint8_t coreid, tusb_event_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes); +void tusbd_cdc_line_coding_changed_cb(uint8_t coreid, cdc_line_coding_t* p_line_coding); //--------------------------------------------------------------------+ // USBD-CLASS DRIVER API -- cgit v1.3.1