@@ -213,24 +213,20 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
213
213
214
214
// Init buffer for rx
215
215
if (rx != NULL ) {
216
- self -> allocated_ringbuf = true;
217
216
// Use the provided buffer when given.
218
217
if (receiver_buffer != NULL ) {
219
- self -> ringbuf .buf = receiver_buffer ;
220
- self -> ringbuf .size = receiver_buffer_size - 1 ;
221
- self -> ringbuf .iput = 0 ;
222
- self -> ringbuf .iget = 0 ;
223
- self -> allocated_ringbuf = false;
218
+ ringbuf_init (& self -> ringbuf , receiver_buffer , receiver_buffer_size );
219
+ } else {
224
220
// Initially allocate the UART's buffer in the long-lived part of the
225
221
// heap. UARTs are generally long-lived objects, but the "make long-
226
222
// lived" machinery is incapable of moving internal pointers like
227
223
// self->buffer, so do it manually. (However, as long as internal
228
224
// pointers like this are NOT moved, allocating the buffer
229
225
// in the long-lived pool is not strictly necessary)
230
- // (This is a macro.)
231
- } else if (! ringbuf_alloc ( & self -> ringbuf , receiver_buffer_size , true)) {
232
- nrfx_uarte_uninit ( self -> uarte );
233
- m_malloc_fail ( receiver_buffer_size );
226
+ if (! ringbuf_alloc ( & self -> ringbuf , receiver_buffer_size , true)) {
227
+ nrfx_uarte_uninit ( self -> uarte );
228
+ m_malloc_fail ( receiver_buffer_size );
229
+ }
234
230
}
235
231
236
232
self -> rx_pin_number = rx -> number ;
@@ -282,9 +278,7 @@ void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
282
278
self -> rx_pin_number = NO_PIN ;
283
279
self -> rts_pin_number = NO_PIN ;
284
280
self -> cts_pin_number = NO_PIN ;
285
- if (self -> allocated_ringbuf ) {
286
- ringbuf_free (& self -> ringbuf );
287
- }
281
+ ringbuf_deinit (& self -> ringbuf );
288
282
289
283
for (size_t i = 0 ; i < MP_ARRAY_SIZE (nrfx_uartes ); i ++ ) {
290
284
if (self -> uarte == & nrfx_uartes [i ]) {
@@ -305,7 +299,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
305
299
306
300
// check removed to reduce code size
307
301
/*
308
- if (len > ringbuf_capacity (&self->ringbuf)) {
302
+ if (len > ringbuf_size (&self->ringbuf)) {
309
303
mp_raise_ValueError(translate("Reading >receiver_buffer_size bytes is not supported"));
310
304
}
311
305
*/
0 commit comments