#include <Arduino.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

// Task function to demonstrate heap usage
void vTaskFunction(void *pvParameters)
{
    // Infinite loop for task
    for (;;)
    {
        // Get the free heap size
        size_t xFreeHeapSize = xPortGetFreeHeapSize();
        size_t xMinimumEverFreeHeapSize = xPortGetMinimumEverFreeHeapSize();

        // Print the heap size to the Serial Monitor
        Serial.print("Free Heap Size: ");
        Serial.print(xFreeHeapSize);
        Serial.println(" bytes");

        Serial.print("Minimum Ever Free Heap Size: ");
        Serial.print(xMinimumEverFreeHeapSize);
        Serial.println(" bytes");

        // Delay for a while
        vTaskDelay(pdMS_TO_TICKS(1000));
    }
}

void setup()
{
    // Initialize Serial Monitor
    Serial.begin(115200);

    // Create task
    xTaskCreate(vTaskFunction, "Task 1", 2048, NULL, 1, NULL);

    // Start the scheduler
    vTaskStartScheduler();
}

void loop()
{
    // Do nothing in loop
}