diff options
Diffstat (limited to 'src/tasks')
| -rw-r--r-- | src/tasks/tasks.cpp | 22 | ||||
| -rw-r--r-- | src/tasks/tasks.hpp | 5 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/tasks/tasks.cpp b/src/tasks/tasks.cpp index 2477d8b9..c28f463c 100644 --- a/src/tasks/tasks.cpp +++ b/src/tasks/tasks.cpp @@ -5,7 +5,9 @@ */ #include "tasks.hpp" + #include <functional> + #include "esp_heap_caps.h" #include "freertos/FreeRTOS.h" #include "freertos/portmacro.h" @@ -31,6 +33,10 @@ template <> auto Name<Type::kDatabase>() -> std::string { return "DB"; } +template <> +auto Name<Type::kDatabaseBackground>() -> std::string { + return "DB_BG"; +} template <Type t> auto AllocateStack() -> cpp::span<StackType_t>; @@ -39,7 +45,7 @@ auto AllocateStack() -> cpp::span<StackType_t>; // amount of stack space. template <> auto AllocateStack<Type::kAudio>() -> cpp::span<StackType_t> { - std::size_t size = 48 * 1024; + std::size_t size = 32 * 1024; return {static_cast<StackType_t*>(heap_caps_malloc(size, MALLOC_CAP_DEFAULT)), size}; } @@ -67,6 +73,12 @@ auto AllocateStack<Type::kDatabase>() -> cpp::span<StackType_t> { return {static_cast<StackType_t*>(heap_caps_malloc(size, MALLOC_CAP_SPIRAM)), size}; } +template <> +auto AllocateStack<Type::kDatabaseBackground>() -> cpp::span<StackType_t> { + std::size_t size = 256 * 1024; + return {static_cast<StackType_t*>(heap_caps_malloc(size, MALLOC_CAP_SPIRAM)), + size}; +} // 2048 bytes in internal ram // 302 KiB in external ram. @@ -106,6 +118,10 @@ template <> auto Priority<Type::kDatabase>() -> UBaseType_t { return 8; } +template <> +auto Priority<Type::kDatabaseBackground>() -> UBaseType_t { + return 7; +} template <Type t> auto WorkerQueueSize() -> std::size_t; @@ -114,6 +130,10 @@ template <> auto WorkerQueueSize<Type::kDatabase>() -> std::size_t { return 8; } +template <> +auto WorkerQueueSize<Type::kDatabaseBackground>() -> std::size_t { + return 8; +} template <> auto WorkerQueueSize<Type::kUiFlush>() -> std::size_t { diff --git a/src/tasks/tasks.hpp b/src/tasks/tasks.hpp index 955acd9f..4e5dfd17 100644 --- a/src/tasks/tasks.hpp +++ b/src/tasks/tasks.hpp @@ -36,6 +36,8 @@ enum class Type { kAudio, // Task for running database queries. kDatabase, + // Task for internal database operations + kDatabaseBackground, }; template <Type t> @@ -102,6 +104,9 @@ class Worker { } ~Worker(); + + Worker(const Worker&) = delete; + Worker& operator=(const Worker&) = delete; }; /* Specialisation of Evaluate for functions that return nothing. */ |
