diff options
| author | hathach <[email protected]> | 2013-11-08 14:46:48 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-11-08 14:46:48 +0700 |
| commit | 7ff0dbb64cfcab7256a4b113931c63a4c7efa0d3 (patch) | |
| tree | 41d92cf1d303d5578a50f7f79c72134534a3d19e /tinyusb/class | |
| parent | 15d3a418bd0d109d926ea95c3be1bbc83757734b (diff) | |
add tusbd_cdc_is_busy
enhance cdc serial device demo
refractor fifo.c
Diffstat (limited to 'tinyusb/class')
| -rw-r--r-- | tinyusb/class/cdc_device.c | 13 | ||||
| -rw-r--r-- | tinyusb/class/cdc_device.h | 2 |
2 files changed, 12 insertions, 3 deletions
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
|
