Update to ESP-IDF v5.4 and fix warnings (#193)

- Update to ESP-IDF v5.4
- Fixed a lot of new and existing warnings
- Fix issue with incorrect `EventFlag` usage in Dispatcher
This commit is contained in:
Ken Van Hoeylandt
2025-01-26 15:52:57 +01:00
committed by GitHub
parent fa54eaa58a
commit 1bb1260ea0
24 changed files with 67 additions and 175 deletions
-109
View File
@@ -1,109 +0,0 @@
#pragma once
#include "./App.h"
#include "./AppManifest.h"
namespace tt::app {
typedef void* (*CreateData)();
typedef void (*DestroyData)(void* data);
typedef void (*OnStart)(AppContext& app, void* _Nullable data);
typedef void (*OnStop)(AppContext& app, void* _Nullable data);
typedef void (*OnShow)(AppContext& app, void* _Nullable data, lv_obj_t* parent);
typedef void (*OnHide)(AppContext& app, void* _Nullable data);
typedef void (*OnResult)(AppContext& app, void* _Nullable data, Result result, std::unique_ptr<Bundle> resultData);
class AppCompatC : public App {
private:
CreateData _Nullable createData;
DestroyData _Nullable destroyData;
OnStart _Nullable onStartCallback;
OnStop _Nullable onStopCallback;
OnShow _Nullable onShowCallback;
OnHide _Nullable onHideCallback;
OnResult _Nullable onResultCallback;
void* data = nullptr;
public:
AppCompatC(
CreateData _Nullable createData,
DestroyData _Nullable destroyData,
OnStart _Nullable onStart,
OnStop _Nullable onStop,
OnShow _Nullable onShow,
OnHide _Nullable onHide,
OnResult _Nullable onResult
) : createData(createData),
destroyData(destroyData),
onStartCallback(onStart),
onStopCallback(onStop),
onShowCallback(onShow),
onHideCallback(onHide),
onResultCallback(onResult)
{}
void onStart(AppContext& appContext) override {
if (createData != nullptr) {
data = createData();
}
if (onStartCallback != nullptr) {
onStartCallback(appContext, data);
}
}
void onStop(AppContext& appContext) override {
if (onStopCallback != nullptr) {
onStopCallback(appContext, data);
}
if (destroyData != nullptr && data != nullptr) {
destroyData(data);
}
}
void onShow(AppContext& appContext, lv_obj_t* parent) override {
if (onShowCallback != nullptr) {
onShowCallback(appContext, data, parent);
}
}
void onHide(AppContext& appContext) override {
if (onHideCallback != nullptr) {
onHideCallback(appContext, data);
}
}
void onResult(AppContext& appContext, Result result, std::unique_ptr<Bundle> _Nullable resultData) override {
if (onResultCallback != nullptr) {
onResultCallback(appContext, data, result, std::move(resultData));
}
}
};
template<typename T>
App* createC(
CreateData _Nullable createData,
DestroyData _Nullable destroyData,
OnStart _Nullable onStartCallback,
OnStop _Nullable onStopCallback,
OnShow _Nullable onShowCallback,
OnHide _Nullable onHideCallback,
OnResult _Nullable onResultCallback
) {
return new AppCompatC(
createData,
destroyData,
onStartCallback,
onStopCallback,
onShowCallback,
onHideCallback,
onResultCallback
);
}
}
+14 -13
View File
@@ -9,6 +9,7 @@
#include "service/loader/Loader.h"
#include <string>
#include <utility>
namespace tt::app {
@@ -19,13 +20,13 @@ struct ElfManifest {
std::string name;
/** Optional icon. */
std::string icon;
CreateData _Nullable createData;
DestroyData _Nullable destroyData;
OnStart _Nullable onStart;
OnStop _Nullable onStop;
OnShow _Nullable onShow;
OnHide _Nullable onHide;
OnResult _Nullable onResult;
CreateData _Nullable createData = nullptr;
DestroyData _Nullable destroyData = nullptr;
OnStart _Nullable onStart = nullptr;
OnStop _Nullable onStop = nullptr;
OnShow _Nullable onShow = nullptr;
OnHide _Nullable onHide = nullptr;
OnResult _Nullable onResult = nullptr;
};
static size_t elfManifestSetCount = 0;
@@ -88,7 +89,7 @@ private:
public:
explicit ElfApp(const std::string& filePath) : filePath(filePath) {}
explicit ElfApp(std::string filePath) : filePath(std::move(filePath)) {}
void onStart(AppContext& appContext) override {
auto initial_count = elfManifestSetCount;
@@ -101,7 +102,7 @@ public:
}
if (manifest->onStart != nullptr) {
manifest->onStart(appContext, data);
manifest->onStart(&appContext, data);
}
}
} else {
@@ -113,7 +114,7 @@ public:
TT_LOG_I(TAG, "Cleaning up app");
if (manifest != nullptr) {
if (manifest->onStop != nullptr) {
manifest->onStop(appContext, data);
manifest->onStop(&appContext, data);
}
if (manifest->destroyData != nullptr && data != nullptr) {
@@ -127,19 +128,19 @@ public:
void onShow(AppContext& appContext, lv_obj_t* parent) override {
if (manifest != nullptr && manifest->onShow != nullptr) {
manifest->onShow(appContext, data, parent);
manifest->onShow(&appContext, data, parent);
}
}
void onHide(AppContext& appContext) override {
if (manifest != nullptr && manifest->onHide != nullptr) {
manifest->onHide(appContext, data);
manifest->onHide(&appContext, data);
}
}
void onResult(AppContext& appContext, Result result, std::unique_ptr<Bundle> resultBundle) override {
if (manifest != nullptr && manifest->onResult != nullptr) {
manifest->onResult(appContext, data, result, std::move(resultBundle));
manifest->onResult(&appContext, data, result, resultBundle.get());
}
}
};
+8 -1
View File
@@ -1,12 +1,19 @@
#pragma once
#include "AppCompatC.h"
#include "AppManifest.h"
#ifdef ESP_PLATFORM
namespace tt::app {
typedef void* (*CreateData)();
typedef void (*DestroyData)(void* data);
typedef void (*OnStart)(void* appContext, void* _Nullable data);
typedef void (*OnStop)(void* appContext, void* _Nullable data);
typedef void (*OnShow)(void* appContext, void* _Nullable data, lv_obj_t* parent);
typedef void (*OnHide)(void* appContext, void* _Nullable data);
typedef void (*OnResult)(void* appContext, void* _Nullable data, Result result, Bundle* resultData);
void setElfAppManifest(
const char* name,
const char* _Nullable icon,
-1
View File
@@ -13,7 +13,6 @@ namespace tt::app::power {
#define TAG "power"
extern const AppManifest manifest;
static void onTimer(TT_UNUSED std::shared_ptr<void> context);
class PowerApp;
+1 -1
View File
@@ -2,6 +2,6 @@
namespace tt::app::textviewer {
void start(const std::string&file);
void start(const std::string& file);
}
+2 -5
View File
@@ -120,11 +120,8 @@ static int32_t guiMain(TT_UNUSED void* p) {
Gui* local_gui = gui;
while (true) {
uint32_t flags = Thread::awaitFlags(
GUI_THREAD_FLAG_ALL,
EventFlag::WaitAny,
portMAX_DELAY
);
uint32_t flags = Thread::awaitFlags(GUI_THREAD_FLAG_ALL, EventFlag::WaitAny, portMAX_DELAY);
// Process and dispatch draw call
if (flags & GUI_THREAD_FLAG_DRAW) {
Thread::clearFlags(GUI_THREAD_FLAG_DRAW);
+4 -7
View File
@@ -64,13 +64,10 @@ void stopApp() {
std::shared_ptr<app::AppContext> _Nullable getCurrentAppContext() {
assert(loader_singleton);
if (loader_singleton->mutex.lock(10 / portTICK_PERIOD_MS)) {
auto app = loader_singleton->appStack.top();
loader_singleton->mutex.unlock();
return std::move(app);
} else {
return nullptr;
}
loader_singleton->mutex.lock();
auto app = loader_singleton->appStack.top();
loader_singleton->mutex.unlock();
return app;
}
std::shared_ptr<app::App> _Nullable getCurrentApp() {