Move console payloads to lazy PSRAM storage
This commit is contained in:
+13
-1
@@ -12,6 +12,7 @@
|
||||
|
||||
#include "esp_console.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "esp_timer.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/queue.h"
|
||||
@@ -186,7 +187,9 @@ typedef struct {
|
||||
|
||||
#define PING_EVENT_QUEUE_LENGTH (PING_MAX_COUNT + 1U)
|
||||
static StaticQueue_t s_ping_queue_storage;
|
||||
static uint8_t s_ping_queue_bytes[PING_EVENT_QUEUE_LENGTH * sizeof(ping_event_t)];
|
||||
/* Dispatcher-owned lazy payload; retain for firmware lifetime so callback queue
|
||||
* storage cannot dangle. Queue control stays internal. No internal-RAM fallback. */
|
||||
static uint8_t *s_ping_queue_bytes;
|
||||
static QueueHandle_t s_ping_queue;
|
||||
|
||||
static void ping_on_success(esp_ping_handle_t handle, void *arguments)
|
||||
@@ -289,6 +292,15 @@ static int execute_ping(int argc, char **argv)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (s_ping_queue_bytes == NULL) {
|
||||
s_ping_queue_bytes = heap_caps_malloc(
|
||||
PING_EVENT_QUEUE_LENGTH * sizeof(ping_event_t),
|
||||
MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
|
||||
if (s_ping_queue_bytes == NULL) {
|
||||
printf("ping: PSRAM event storage unavailable\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if (s_ping_queue == NULL) {
|
||||
s_ping_queue = xQueueCreateStatic(PING_EVENT_QUEUE_LENGTH, sizeof(ping_event_t),
|
||||
s_ping_queue_bytes, &s_ping_queue_storage);
|
||||
|
||||
Reference in New Issue
Block a user