SHA256
Ring Buffering|FreeRTOS:xTask
This commit is contained in:
1 parent
84cd51fd89
commit
4cab6e68e6
7 files changed
+1330
-1
No files matched your search
@@ -0,0 +1,55 @@
|
||||
#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!");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user