#include <Arduino_FreeRTOS.h>
#include <queue.h>
QueueHandle_t xMailbox;
TaskHandle_t TaskHandle_1; // handler for Task1
TaskHandle_t TaskHandle_2; // handler for Task2
void setup()
{
Serial.begin(9600);
while(!Serial); // wait for serial port to connect
xMailbox = xQueueCreate(1, sizeof( int32_t));
xTaskCreate(vUpdateMailbox, "Sender", 100, NULL, 1, &TaskHandle_1);
xTaskCreate(vReadMailbox, "Receiver", 100, NULL, 1, &TaskHandle_2);
}
void loop()
{
// put your main code here, to run repeatedly:
}
void vUpdateMailbox(void* pvParameters)
{
int32_t ulNewValue = 1;
while(1)
{
xQueueOverwrite( xMailbox, &ulNewValue);
Serial.println("Data written to mailbox");
ulNewValue++;
vTaskDelay(500);
}
}
void vReadMailbox(void* pvParameters)
{
int32_t value_received;
while(1)
{
xQueuePeek( xMailbox, &value_received, portMAX_DELAY );
Serial.print("Data Read from mailbox = ");
Serial.println(value_received);
vTaskDelay(100);
}
}