#pragma once

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

namespace AppConfig
{
// Zadania FreeRTOS. Rozmiary stosów są podawane w bajtach w ESP-IDF dla ESP32.
constexpr uint32_t CAMERA_TASK_STACK_BYTES = 4096;
constexpr UBaseType_t CAMERA_TASK_PRIORITY = 3;
constexpr BaseType_t CAMERA_TASK_CORE = 0;

constexpr uint32_t WEB_TASK_STACK_BYTES = 8192;
constexpr UBaseType_t WEB_TASK_PRIORITY = 2;
constexpr BaseType_t WEB_TASK_CORE = 1;

// Inicjalizacja sprzętu.
constexpr uint8_t STARTUP_RETRY_COUNT = 3;
constexpr uint32_t STARTUP_RETRY_DELAY_MS = 1500;
constexpr uint32_t RESTART_DELAY_MS = 2000;

// Galeria przechowuje i zwraca wyłącznie najnowsze numery zdjęć.
constexpr size_t PHOTO_CACHE_LIMIT = 200;

// Zdjęcie jest kopiowane z SD do RAM przed wysłaniem, aby wolny klient WWW
// nie blokował karty. Limit zapobiega wyczerpaniu całej PSRAM przez zły plik.
constexpr size_t WEB_PHOTO_BUFFER_LIMIT_BYTES = 2U * 1024U * 1024U;

static_assert(PHOTO_CACHE_LIMIT > 0, "PHOTO_CACHE_LIMIT must be greater than 0");
}
