@@ -23,94 +23,6 @@ static uint32_t g_cdcacm_devinuse = 0;
2323
2424USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_serial_iobuffer [CONFIG_USBHOST_MAX_SERIAL_CLASS ][USB_ALIGN_UP ((USBH_SERIAL_RX2_NOCACHE_OFFSET + USBH_SERIAL_RX2_NOCACHE_SIZE ), CONFIG_USB_ALIGN_SIZE )];
2525
26- /* refer to cherryrb */
27- static int usbh_serial_ringbuffer_init (usbh_serial_ringbuf_t * rb , void * pool , uint32_t size )
28- {
29- if (NULL == rb ) {
30- return -1 ;
31- }
32-
33- if (NULL == pool ) {
34- return -1 ;
35- }
36-
37- if ((size < 2 ) || (size & (size - 1 ))) {
38- return -1 ;
39- }
40-
41- rb -> in = 0 ;
42- rb -> out = 0 ;
43- rb -> mask = size - 1 ;
44- rb -> pool = pool ;
45-
46- return 0 ;
47- }
48-
49- static void usbh_serial_ringbuffer_reset (usbh_serial_ringbuf_t * rb )
50- {
51- rb -> in = 0 ;
52- rb -> out = 0 ;
53- }
54-
55- static uint32_t usbh_serial_ringbuffer_get_used (usbh_serial_ringbuf_t * rb )
56- {
57- return rb -> in - rb -> out ;
58- }
59-
60- static uint32_t usbh_serial_ringbuffer_write (usbh_serial_ringbuf_t * rb , void * data , uint32_t size )
61- {
62- uint32_t unused ;
63- uint32_t offset ;
64- uint32_t remain ;
65-
66- unused = (rb -> mask + 1 ) - (rb -> in - rb -> out );
67-
68- if (size > unused ) {
69- size = unused ;
70- }
71-
72- offset = rb -> in & rb -> mask ;
73-
74- remain = rb -> mask + 1 - offset ;
75- remain = remain > size ? size : remain ;
76-
77- memcpy (((uint8_t * )(rb -> pool )) + offset , data , remain );
78- memcpy (rb -> pool , (uint8_t * )data + remain , size - remain );
79-
80- rb -> in += size ;
81-
82- return size ;
83- }
84-
85- static uint32_t usbh_serial_ringbuffer_peek (usbh_serial_ringbuf_t * rb , void * data , uint32_t size )
86- {
87- uint32_t used ;
88- uint32_t offset ;
89- uint32_t remain ;
90-
91- used = rb -> in - rb -> out ;
92- if (size > used ) {
93- size = used ;
94- }
95-
96- offset = rb -> out & rb -> mask ;
97-
98- remain = rb -> mask + 1 - offset ;
99- remain = remain > size ? size : remain ;
100-
101- memcpy (data , ((uint8_t * )(rb -> pool )) + offset , remain );
102- memcpy ((uint8_t * )data + remain , rb -> pool , size - remain );
103-
104- return size ;
105- }
106-
107- static uint32_t usbh_serial_ringbuffer_read (usbh_serial_ringbuf_t * rb , void * data , uint32_t size )
108- {
109- size = usbh_serial_ringbuffer_peek (rb , data , size );
110- rb -> out += size ;
111- return size ;
112- }
113-
11426static struct usbh_serial * usbh_serial_alloc (bool is_cdcacm )
11527{
11628 uint8_t devno ;
@@ -193,9 +105,9 @@ static void usbh_serial_callback(void *arg, int nbytes)
193105 return ;
194106 }
195107
196- usbh_serial_ringbuffer_write (& serial -> rx_rb ,
197- & serial -> iobuffer [(serial -> rx_buf_index ? USBH_SERIAL_RX2_NOCACHE_OFFSET : USBH_SERIAL_RX_NOCACHE_OFFSET ) + serial -> driver -> ignore_rx_header ],
198- (nbytes - serial -> driver -> ignore_rx_header ));
108+ usb_ringbuffer_write (& serial -> rx_rb ,
109+ & serial -> iobuffer [(serial -> rx_buf_index ? USBH_SERIAL_RX2_NOCACHE_OFFSET : USBH_SERIAL_RX_NOCACHE_OFFSET ) + serial -> driver -> ignore_rx_header ],
110+ (nbytes - serial -> driver -> ignore_rx_header ));
199111
200112 if (serial -> rx_complete_callback ) {
201113 serial -> rx_complete_callback (serial , nbytes - serial -> driver -> ignore_rx_header );
@@ -319,7 +231,7 @@ struct usbh_serial *usbh_serial_open(const char *devname, uint32_t open_flags)
319231 }
320232 }
321233
322- usbh_serial_ringbuffer_init (& serial -> rx_rb , serial -> rx_rb_pool , CONFIG_USBHOST_SERIAL_RX_SIZE );
234+ usb_ringbuffer_init (& serial -> rx_rb , serial -> rx_rb_pool , CONFIG_USBHOST_SERIAL_RX_SIZE );
323235
324236 serial -> ref_count ++ ;
325237 serial -> open_flags = open_flags ;
@@ -454,7 +366,7 @@ int usbh_serial_control(struct usbh_serial *serial, int cmd, void *arg)
454366 return ret ;
455367 }
456368
457- usbh_serial_ringbuffer_reset (& serial -> rx_rb );
369+ usb_ringbuffer_reset (& serial -> rx_rb );
458370 usb_osal_sem_reset (serial -> rx_complete_sem );
459371 serial -> rx_buf_index = 0 ;
460372 usbh_bulk_urb_fill (& serial -> bulkin_urb , serial -> hport , serial -> bulkin , & serial -> iobuffer [serial -> rx_buf_index ? USBH_SERIAL_RX2_NOCACHE_OFFSET : USBH_SERIAL_RX_NOCACHE_OFFSET ], serial -> bulkin -> wMaxPacketSize ,
@@ -561,9 +473,9 @@ int usbh_serial_read(struct usbh_serial *serial, void *buffer, uint32_t buflen)
561473 }
562474
563475 if (serial -> open_flags & USBH_SERIAL_O_NONBLOCK ) {
564- return usbh_serial_ringbuffer_read (& serial -> rx_rb , buffer , buflen );
476+ return usb_ringbuffer_read (& serial -> rx_rb , buffer , buflen );
565477 } else {
566- if (usbh_serial_ringbuffer_get_used (& serial -> rx_rb ) == 0 ) {
478+ if (usb_ringbuffer_get_used (& serial -> rx_rb ) == 0 ) {
567479 ret = usb_osal_sem_take (serial -> rx_complete_sem , serial -> rx_timeout_ms == 0 ? USB_OSAL_WAITING_FOREVER : serial -> rx_timeout_ms );
568480 if (ret < 0 ) {
569481 return ret ;
@@ -572,7 +484,7 @@ int usbh_serial_read(struct usbh_serial *serial, void *buffer, uint32_t buflen)
572484 return serial -> rx_errorcode ;
573485 }
574486 }
575- return usbh_serial_ringbuffer_read (& serial -> rx_rb , buffer , buflen );
487+ return usb_ringbuffer_read (& serial -> rx_rb , buffer , buflen );
576488 }
577489}
578490
0 commit comments