Merge develop into main (#313)
- Add app path get() functions to `TactilityC` - Improved `Dispatcher` and `DispatcherThread` - Improved `PubSub` (type safety) - Created test for `DispatcherThread` and `PubSub` - Save properties files on app exit (various apps) by posting it to the main dispatcher (fixes UI hanging briefly on app exit) - Fixed bug with `SystemSettings` being read from the wrong file path. - `loadPropertiesFile()` now uses `file::readLines()` instead of doing that manually - Increased timer task stack size (required due to issues when reading a properties file for the very first time) - General cleanup - Created `EstimatedPower` driver that uses an ADC pin to measure voltage and estimate the battery charge that is left. - Cleanup of T-Deck board (updated to new style)
This commit is contained in:
committed by
GitHub
parent
5cc5b50694
commit
0f8380e8fe
@@ -15,7 +15,7 @@ Dispatcher::~Dispatcher() {
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
void Dispatcher::dispatch(Function function, TickType_t timeout) {
|
||||
bool Dispatcher::dispatch(Function function, TickType_t timeout) {
|
||||
// Mutate
|
||||
if (mutex.lock(timeout)) {
|
||||
queue.push(std::move(function));
|
||||
@@ -25,8 +25,10 @@ void Dispatcher::dispatch(Function function, TickType_t timeout) {
|
||||
tt_check(mutex.unlock());
|
||||
// Signal
|
||||
eventFlag.set(WAIT_FLAG);
|
||||
return true;
|
||||
} else {
|
||||
TT_LOG_E(TAG, LOG_MESSAGE_MUTEX_LOCK_FAILED);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ DispatcherThread::DispatcherThread(const std::string& threadName, size_t threadS
|
||||
thread = std::make_unique<Thread>(
|
||||
threadName,
|
||||
threadStackSize,
|
||||
[this]() {
|
||||
[this] {
|
||||
return threadMain();
|
||||
}
|
||||
);
|
||||
@@ -30,8 +30,8 @@ int32_t DispatcherThread::threadMain() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void DispatcherThread::dispatch(Dispatcher::Function function, TickType_t timeout) {
|
||||
dispatcher.dispatch(function, timeout);
|
||||
bool DispatcherThread::dispatch(Dispatcher::Function function, TickType_t timeout) {
|
||||
return dispatcher.dispatch(function, timeout);
|
||||
}
|
||||
|
||||
void DispatcherThread::start() {
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#include "Tactility/PubSub.h"
|
||||
#include "Tactility/Check.h"
|
||||
|
||||
namespace tt {
|
||||
|
||||
PubSub::SubscriptionHandle PubSub::subscribe(PubSubCallback callback, void* callbackParameter) {
|
||||
mutex.lock();
|
||||
items.push_back({
|
||||
.id = (++lastId),
|
||||
.callback = callback,
|
||||
.callbackParameter = callbackParameter});
|
||||
|
||||
mutex.unlock();
|
||||
|
||||
return (Subscription*)lastId;
|
||||
}
|
||||
|
||||
void PubSub::unsubscribe(SubscriptionHandle subscription) {
|
||||
assert(subscription);
|
||||
|
||||
mutex.lock();
|
||||
bool result = false;
|
||||
auto id = (uint64_t)subscription;
|
||||
for (auto it = items.begin(); it != items.end(); it++) {
|
||||
if (it->id == id) {
|
||||
items.erase(it);
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mutex.unlock();
|
||||
tt_check(result);
|
||||
}
|
||||
|
||||
void PubSub::publish(void* message) {
|
||||
mutex.lock();
|
||||
|
||||
// Iterate over subscribers
|
||||
for (auto& it : items) {
|
||||
it.callback(message, it.callbackParameter);
|
||||
}
|
||||
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
namespace tt {
|
||||
|
||||
inline static StreamBufferHandle_t createStreamBuffer(size_t size, size_t triggerLevel) {
|
||||
static StreamBufferHandle_t createStreamBuffer(size_t size, size_t triggerLevel) {
|
||||
assert(size != 0);
|
||||
return xStreamBufferCreate(size, triggerLevel);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user