@@ -99,7 +99,7 @@ static void uart_callback_irq (const nrfx_uarte_event_t * event, void * context)
9999
100100 switch ( event -> type ) {
101101 case NRFX_UARTE_EVT_RX_DONE :
102- ringbuf_put_n (& self -> rbuf , event -> data .rxtx .p_data , event -> data .rxtx .bytes );
102+ ringbuf_put_n (& self -> ringbuf , event -> data .rxtx .p_data , event -> data .rxtx .bytes );
103103
104104 // keep receiving
105105 (void ) nrfx_uarte_rx (self -> uarte , & self -> rx_char , 1 );
@@ -113,7 +113,7 @@ static void uart_callback_irq (const nrfx_uarte_event_t * event, void * context)
113113 // Possible Error source is Overrun, Parity, Framing, Break
114114 // uint32_t errsrc = event->data.error.error_mask;
115115
116- ringbuf_put_n (& self -> rbuf , event -> data .error .rxtx .p_data , event -> data .error .rxtx .bytes );
116+ ringbuf_put_n (& self -> ringbuf , event -> data .error .rxtx .p_data , event -> data .error .rxtx .bytes );
117117
118118 // Keep receiving
119119 (void ) nrfx_uarte_rx (self -> uarte , & self -> rx_char , 1 );
@@ -191,9 +191,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
191191 // pointers like this are NOT moved, allocating the buffer
192192 // in the long-lived pool is not strictly necessary)
193193 // (This is a macro.)
194- ringbuf_alloc (& self -> rbuf , receiver_buffer_size , true);
195-
196- if ( !self -> rbuf .buf ) {
194+ if (!ringbuf_alloc (& self -> ringbuf , receiver_buffer_size , true)) {
197195 nrfx_uarte_uninit (self -> uarte );
198196 mp_raise_msg (& mp_type_MemoryError , translate ("Failed to allocate RX buffer" ));
199197 }
@@ -227,10 +225,7 @@ void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
227225 reset_pin_number (self -> rx_pin_number );
228226 self -> tx_pin_number = NO_PIN ;
229227 self -> rx_pin_number = NO_PIN ;
230-
231- gc_free (self -> rbuf .buf );
232- self -> rbuf .size = 0 ;
233- self -> rbuf .iput = self -> rbuf .iget = 0 ;
228+ ringbuf_free (& self -> ringbuf );
234229 }
235230}
236231
@@ -243,7 +238,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
243238 uint64_t start_ticks = supervisor_ticks_ms64 ();
244239
245240 // Wait for all bytes received or timeout
246- while ( (ringbuf_avail (& self -> rbuf ) < len ) && (supervisor_ticks_ms64 () - start_ticks < self -> timeout_ms ) ) {
241+ while ( (ringbuf_num_filled (& self -> ringbuf ) < len ) && (supervisor_ticks_ms64 () - start_ticks < self -> timeout_ms ) ) {
247242 RUN_BACKGROUND_TASKS ;
248243 // Allow user to break out of a timeout with a KeyboardInterrupt.
249244 if ( mp_hal_is_interrupted () ) {
@@ -255,7 +250,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
255250 NVIC_DisableIRQ (nrfx_get_irq_number (self -> uarte -> p_reg ));
256251
257252 // Copy as much received data as available, up to len bytes.
258- size_t rx_bytes = ringbuf_get_n (& self -> rbuf , data , len );
253+ size_t rx_bytes = ringbuf_get_n (& self -> ringbuf , data , len );
259254
260255 NVIC_EnableIRQ (nrfx_get_irq_number (self -> uarte -> p_reg ));
261256
@@ -312,13 +307,13 @@ void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeou
312307}
313308
314309uint32_t common_hal_busio_uart_rx_characters_available (busio_uart_obj_t * self ) {
315- return ringbuf_avail (& self -> rbuf );
310+ return ringbuf_num_filled (& self -> ringbuf );
316311}
317312
318313void common_hal_busio_uart_clear_rx_buffer (busio_uart_obj_t * self ) {
319314 // prevent conflict with uart irq
320315 NVIC_DisableIRQ (nrfx_get_irq_number (self -> uarte -> p_reg ));
321- ringbuf_clear (& self -> rbuf );
316+ ringbuf_clear (& self -> ringbuf );
322317 NVIC_EnableIRQ (nrfx_get_irq_number (self -> uarte -> p_reg ));
323318}
324319
0 commit comments