summaryrefslogtreecommitdiff
path: root/src/tasks
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-16 13:14:45 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-16 13:14:45 +1000
commit5b7b88420b169d1dfdeea6d082762fccefbc7d49 (patch)
treee5bc4a44088a9ac62e1628ffa3265f4819c3c979 /src/tasks
parentc6bb42cdd21b63accd20012373a8a0e41d8566f5 (diff)
downloadtangara-fw-5b7b88420b169d1dfdeea6d082762fccefbc7d49.tar.gz
Fix issues with importing my entire library
Diffstat (limited to 'src/tasks')
-rw-r--r--src/tasks/tasks.cpp22
-rw-r--r--src/tasks/tasks.hpp5
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. */