summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-03-20 18:33:06 +0700
committerhathach <[email protected]>2018-03-20 18:33:28 +0700
commit2f0fcf80e0b2d49116a019c02da5bc63dadc763b (patch)
tree770f629b6876ad3a4ad29b282d98229280f1ce93 /tinyusb
parent7a628f4dfca4a6cf3b086439bca6ca0361b92b39 (diff)
nrf52 cdc example work on nrf52840pdk
- add tud_cdc_flush(), auto flush with sof is enabled by default. -
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/class/cdc/cdc_device.c20
-rw-r--r--tinyusb/class/cdc/cdc_device.h12
-rw-r--r--tinyusb/tusb_dcd.h4
3 files changed, 21 insertions, 15 deletions
diff --git a/tinyusb/class/cdc/cdc_device.c b/tinyusb/class/cdc/cdc_device.c
index d798560be..a4f934e83 100644
--- a/tinyusb/class/cdc/cdc_device.c
+++ b/tinyusb/class/cdc/cdc_device.c
@@ -280,18 +280,24 @@ tusb_error_t cdcd_xfer_cb(uint8_t port, uint8_t ep_addr, tusb_event_t event, uin
return TUSB_ERROR_NONE;
}
-void cdcd_sof(uint8_t port)
+bool tud_n_cdc_flush (uint8_t port)
{
- if ( !tud_n_cdc_connected(port) ) return;
+ VERIFY( tud_n_cdc_connected(port) );
uint8_t edpt = cdcd_data[port].ep_addr[CDC_PIPE_DATA_IN];
- if ( !tusb_dcd_edpt_busy(port, edpt) )
- {
- uint16_t count = fifo_read_n(&_tx_ff, _tmp_tx_buf, sizeof(_tmp_tx_buf));
+ VERIFY( !tusb_dcd_edpt_busy(port, edpt) );
- TU_ASSERT( tusb_dcd_edpt_xfer(port, edpt, _tmp_tx_buf, count, false), TUSB_ERROR_DCD_EDPT_XFER);
- }
+
+ uint16_t count = fifo_read_n(&_tx_ff, _tmp_tx_buf, sizeof(_tmp_tx_buf));
+ TU_ASSERT( tusb_dcd_edpt_xfer(port, edpt, _tmp_tx_buf, count, false) );
+
+ return true;
+}
+
+void cdcd_sof(uint8_t port)
+{
+ tud_n_cdc_flush(port);
}
#endif
diff --git a/tinyusb/class/cdc/cdc_device.h b/tinyusb/class/cdc/cdc_device.h
index 4ae9be7c1..44768d1a2 100644
--- a/tinyusb/class/cdc/cdc_device.h
+++ b/tinyusb/class/cdc/cdc_device.h
@@ -63,18 +63,20 @@ uint32_t tud_n_cdc_read (uint8_t port, void* buffer, uint32_t bufsize);
uint32_t tud_n_cdc_write_char (uint8_t port, char ch);
uint32_t tud_n_cdc_write (uint8_t port, void const* buffer, uint32_t bufsize);
+bool tud_n_cdc_flush (uint8_t port);
//--------------------------------------------------------------------+
// APPLICATION API (Single Port)
//--------------------------------------------------------------------+
-static inline bool tud_cdc_connected (void) { return tud_n_cdc_connected(0); }
-static inline uint32_t tud_cdc_available (void) { return tud_n_cdc_available(0); }
+static inline bool tud_cdc_connected (void) { return tud_n_cdc_connected(0); }
+static inline uint32_t tud_cdc_available (void) { return tud_n_cdc_available(0); }
-static inline int tud_cdc_read_char (void) { return tud_n_cdc_read_char(0); }
-static inline uint32_t tud_cdc_read (void* buffer, uint32_t bufsize) { return tud_n_cdc_read(0, buffer, bufsize); }
+static inline int tud_cdc_read_char (void) { return tud_n_cdc_read_char(0); }
+static inline uint32_t tud_cdc_read (void* buffer, uint32_t bufsize) { return tud_n_cdc_read(0, buffer, bufsize); }
-static inline uint32_t tud_cdc_write_char (char ch) { return tud_n_cdc_write_char(0, ch); }
+static inline uint32_t tud_cdc_write_char (char ch) { return tud_n_cdc_write_char(0, ch); }
static inline uint32_t tud_cdc_write (void const* buffer, uint32_t bufsize) { return tud_n_cdc_write(0, buffer, bufsize); }
+static inline bool tud_cdc_flush (void) { return tud_n_cdc_flush(0); }
//--------------------------------------------------------------------+
// APPLICATION CALLBACK API
diff --git a/tinyusb/tusb_dcd.h b/tinyusb/tusb_dcd.h
index 635522b95..5f79693ca 100644
--- a/tinyusb/tusb_dcd.h
+++ b/tinyusb/tusb_dcd.h
@@ -87,13 +87,11 @@ void tusb_dcd_control_stall (uint8_t port);
bool tusb_dcd_edpt_open (uint8_t port, tusb_descriptor_endpoint_t const * p_endpoint_desc);
bool tusb_dcd_edpt_xfer (uint8_t port, uint8_t edpt_addr, uint8_t * buffer, uint16_t total_bytes, bool int_on_complete);
bool tusb_dcd_edpt_queue_xfer (uint8_t port, uint8_t edpt_addr, uint8_t * buffer, uint16_t total_bytes); // only queue, not transferring yet
+bool tusb_dcd_edpt_busy (uint8_t port, uint8_t edpt_addr);
void tusb_dcd_edpt_stall (uint8_t port, uint8_t edpt_addr);
void tusb_dcd_edpt_clear_stall (uint8_t port, uint8_t edpt_addr);
-// TODO may remove
-bool tusb_dcd_edpt_busy (uint8_t port, uint8_t edpt_addr);
-
#ifdef __cplusplus
}
#endif