MCPcopy Create free account
hub / github.com/SmingHub/Sming / smg_uart_realloc_buffer

Function smg_uart_realloc_buffer

Sming/Components/arch_driver/src/uart.cpp:6–40  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4#include <esp_systemapi.h>
5
6bool smg_uart_realloc_buffer(SerialBuffer*& buffer, size_t new_size)
7{
8 if(buffer != nullptr) {
9 size_t res = 0;
10 smg_uart_disable_interrupts();
11 if(new_size == 0) {
12 delete buffer;
13 buffer = nullptr;
14 } else {
15 res = buffer->resize(new_size);
16 }
17 smg_uart_restore_interrupts();
18
19 return res == new_size;
20 }
21
22 if(new_size == 0) {
23 return true;
24 }
25
26#ifdef ARCH_ESP32
27 // Avoid allocating in SPIRAM
28 auto mem = heap_caps_malloc(sizeof(SerialBuffer), MALLOC_CAP_DEFAULT | MALLOC_CAP_INTERNAL);
29 auto new_buf = new(mem) SerialBuffer;
30#else
31 auto new_buf = new SerialBuffer;
32#endif
33 if(new_buf != nullptr && new_buf->resize(new_size) == new_size) {
34 buffer = new_buf;
35 return true;
36 }
37
38 delete new_buf;
39 return false;
40}
41
42smg_uart_t* smg_uart_init(uint8_t uart_nr, uint32_t baudrate, smg_uart_format_t format, smg_uart_mode_t mode,
43 uint8_t tx_pin, size_t rx_size, size_t tx_size)

Callers 6

smg_uart_init_exFunction · 0.85
smg_uart_init_exFunction · 0.85
smg_uart_init_exFunction · 0.85
smg_uart_init_exFunction · 0.85

Calls 3

resizeMethod · 0.80

Tested by

no test coverage detected