#include "Arduino.h" #include "freertos/ringbuf.h" //DEBUG uint8_t i_debug[10] = {0,1,2,3,4,5,6,7,8,9}; const uint16_t SIZE_BUFFER = 1024; // FreeRTOS TaskHandle_t ADCTaskHandle = NULL; TaskHandle_t WebSocketTaskHandle = NULL; RingbufHandle_t bufferHandle = xRingbufferCreate(SIZE_BUFFER, RINGBUF_TYPE_NOSPLIT); void ADCTask(void *parameter); void WebSocketTask(void *parameter); void setup(){ Serial.begin(230400); //Iniciar el buffer circular if (bufferHandle == NULL) { Serial.printf("Failed to create ring buffer!"); return; } xTaskCreatePinnedToCore( ADCTask, "ADCTask", 10000, NULL, 1, &ADCTaskHandle, 0); xTaskCreatePinnedToCore( WebSocketTask, "WebSocketTask", 10000, NULL, 1, &WebSocketTaskHandle, 0); } void loop(){ } void ADCTask(void *parameter){ for(;;) { if (xRingbufferSend(bufferHandle, i_debug, sizeof(i_debug), pdMS_TO_TICKS(1000)) != pdTRUE) { Serial.println("Failed to send message to ring buffer!"); } vTaskDelay(pdMS_TO_TICKS(10)); } } void WebSocketTask(void *parameter){ for(;;) { size_t receivedMessageSize; uint8_t* receivedMessage = (uint8_t*)xRingbufferReceive(bufferHandle, &receivedMessageSize, pdMS_TO_TICKS(1000)); // 6. Check if the receive operation was successful if (receivedMessage != NULL) { for(size_t i = 0; i < receivedMessageSize; i++) { Serial.printf("%d ", receivedMessage[i]);} Serial.println(); vRingbufferReturnItem(bufferHandle, (void*)receivedMessage); } else { Serial.println("Failed t+o receive message from ring buffer!"); } } }