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:
committed by
GitHub
parent
fa54eaa58a
commit
1bb1260ea0
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
namespace tt::app::textviewer {
|
||||
|
||||
void start(const std::string&file);
|
||||
void start(const std::string& 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);
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user