SHA256
56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
#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!");
|
|
}
|
|
}
|
|
}
|