Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

#include <Arduino_FreeRTOS.

h>
#include <queue.h>
TaskHandle_t HTask1;
TaskHandle_t HTask2;
QueueHandle_t Queue;
const char *messagesToSend[] = {"CT03-Hello"DT02-Hi", "AT-Welcome"};
void Task1(void *pvParameters) {
Queue = xQueueCreate(6, 20 * sizeof(char));

if (Queue == NULL) {
Serial.println("Failed to create queue");
vTaskDelete(NULL);
}

for (int i = 0; i < 3; i++) {


if (xQueueSend(Queue, messagesToSend[i], portMAX_DELAY) != pdPASS)
{
Serial.print("Failed to send message: ");
Serial.println(messagesToSend[i]);
}
vTaskDelay(500 / portTICK_PERIOD_MS);
}

vTaskDelete(NULL);
}

void Task2(void *pvParameters) {


char receivedMessage[20];
UBaseType_t availableSpace, messagesInQueue;

while (1) {
if (xQueueReceive(Queue, receivedMessage, portMAX_DELAY) ==
pdPASS) {
Serial.print("Received Message: ");
Serial.println(receivedMessage);

messagesInQueue = uxQueueMessagesWaiting(Queue);
availableSpace = uxQueueSpacesAvailable(Queue);

Serial.print("Messages in Queue: ");


Serial.println(messagesInQueue);
Serial.print("Available Space in Queue: ");
Serial.println(availableSpace);
}
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}

void setup() {
Serial.begin(9600);

xTaskCreate(Task1, "Task1", 256, NULL, tskIDLE_PRIORITY + 1, &HTask1);


xTaskCreate(Task2, "Task2", 256, NULL, tskIDLE_PRIORITY + 1, &HTask2);

vTaskStartScheduler();
}

void loop() {
}

You might also like