clean up device cdc

separate cdc tx & rx bufsize
This commit is contained in:
hathach 2018-06-23 13:19:36 +07:00
parent d438000b99
commit b9f8575e2d
5 changed files with 22 additions and 16 deletions

View File

@ -72,7 +72,9 @@
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/
// FIFO size of CDC TX and RX // FIFO size of CDC TX and RX
#define CFG_TUD_CDC_BUFSIZE 64 #define CFG_TUD_CDC_RX_BUFSIZE 64
#define CFG_TUD_CDC_TX_BUFSIZE 64
// TX is sent automatically every Start of Frame event. // TX is sent automatically every Start of Frame event.
// If not enabled, application must call tud_cdc_flush() periodically // If not enabled, application must call tud_cdc_flush() periodically

View File

@ -77,7 +77,9 @@
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/
// FIFO size of CDC TX and RX // FIFO size of CDC TX and RX
#define CFG_TUD_CDC_BUFSIZE 128 #define CFG_TUD_CDC_RX_BUFSIZE 128
#define CFG_TUD_CDC_TX_BUFSIZE 128
// TX is sent automatically in Start of Frame event. // TX is sent automatically in Start of Frame event.
// If not enabled, application must call tud_cdc_flush() periodically // If not enabled, application must call tud_cdc_flush() periodically

View File

@ -67,17 +67,12 @@ typedef struct {
// TODO multiple rhport // TODO multiple rhport
#if CFG_TUSB_MCU == OPT_MCU_NRF5X
// FIXME nrf52 OUT: Controller ACK data even we didn't prepare transfer
CFG_TUSB_ATTR_USBRAM CFG_TUSB_MEM_ALIGN uint8_t _tmp_rx_buf[600];
#else
CFG_TUSB_ATTR_USBRAM CFG_TUSB_MEM_ALIGN uint8_t _tmp_rx_buf[64];
#endif
CFG_TUSB_ATTR_USBRAM CFG_TUSB_MEM_ALIGN uint8_t _tmp_rx_buf[64];
CFG_TUSB_ATTR_USBRAM CFG_TUSB_MEM_ALIGN uint8_t _tmp_tx_buf[64]; CFG_TUSB_ATTR_USBRAM CFG_TUSB_MEM_ALIGN uint8_t _tmp_tx_buf[64];
FIFO_DEF(_rx_ff, CFG_TUD_CDC_BUFSIZE, uint8_t, true); FIFO_DEF(_rx_ff, CFG_TUD_CDC_RX_BUFSIZE, uint8_t, true);
FIFO_DEF(_tx_ff, CFG_TUD_CDC_BUFSIZE, uint8_t, false); FIFO_DEF(_tx_ff, CFG_TUD_CDC_TX_BUFSIZE, uint8_t, false);
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// INTERNAL OBJECT & FUNCTION DECLARATION // INTERNAL OBJECT & FUNCTION DECLARATION

View File

@ -37,6 +37,7 @@
/**************************************************************************/ /**************************************************************************/
#include "tusb_fifo.h" #include "tusb_fifo.h"
#include "common/tusb_verify.h" // for ASSERT
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* /*
@ -207,7 +208,9 @@ bool fifo_peek_at(fifo_t* f, uint16_t position, void * p_buffer)
bool fifo_write(fifo_t* f, void const * p_data) bool fifo_write(fifo_t* f, void const * p_data)
{ {
if ( !fifo_initalized(f) ) return false; if ( !fifo_initalized(f) ) return false;
if ( fifo_full(f) && !f->overwritable ) return false;
// if ( fifo_full(f) && !f->overwritable ) return false;
TU_ASSERT( !(fifo_full(f) && !f->overwritable) );
mutex_lock_if_needed(f); mutex_lock_if_needed(f);

View File

@ -46,10 +46,12 @@
#include "usbd.h" #include "usbd.h"
#include "device/usbd_pvt.h" #include "device/usbd_pvt.h"
#define USBD_TASK_QUEUE_DEPTH 16 #ifndef CFG_TUD_TASK_QUEUE_SZ
#define CFG_TUD_TASK_QUEUE_SZ 16
#endif
#ifndef CFG_TUD_TASK_STACKSIZE #ifndef CFG_TUD_TASK_STACK_SZ
#define CFG_TUD_TASK_STACKSIZE 150 #define CFG_TUD_TASK_STACK_SZ 150
#endif #endif
#ifndef CFG_TUD_TASK_PRIO #ifndef CFG_TUD_TASK_PRIO
@ -190,10 +192,10 @@ typedef struct ATTR_ALIGNED(4)
VERIFY_STATIC(sizeof(usbd_task_event_t) <= 12, "size is not correct"); VERIFY_STATIC(sizeof(usbd_task_event_t) <= 12, "size is not correct");
OSAL_TASK_DEF(_usbd_task_def, "usbd", usbd_task, CFG_TUD_TASK_PRIO, CFG_TUD_TASK_STACKSIZE); OSAL_TASK_DEF(_usbd_task_def, "usbd", usbd_task, CFG_TUD_TASK_PRIO, CFG_TUD_TASK_STACK_SZ);
/*------------- event queue -------------*/ /*------------- event queue -------------*/
OSAL_QUEUE_DEF(_usbd_qdef, USBD_TASK_QUEUE_DEPTH, usbd_task_event_t); OSAL_QUEUE_DEF(_usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, usbd_task_event_t);
static osal_queue_t _usbd_q; static osal_queue_t _usbd_q;
/*------------- control transfer semaphore -------------*/ /*------------- control transfer semaphore -------------*/
@ -547,12 +549,14 @@ void dcd_bus_event(uint8_t rhport, usbd_bus_event_type_t bus_event)
case USBD_BUS_EVENT_SOF: case USBD_BUS_EVENT_SOF:
{ {
#if CFG_TUD_CDC_FLUSH_ON_SOF
usbd_task_event_t task_event = usbd_task_event_t task_event =
{ {
.rhport = rhport, .rhport = rhport,
.event_id = USBD_EVT_SOF, .event_id = USBD_EVT_SOF,
}; };
osal_queue_send_isr(_usbd_q, &task_event); osal_queue_send_isr(_usbd_q, &task_event);
#endif
} }
break; break;