Merge develop into main (#167)
- WiFi Connect app is now hidden by default, but accessible at the bottom of the WiFi Manage app when WiFi is turned on. - WiFi service now turns on WiFi when calling connect() and WiFi is not on. - Removed `blocking` option for `service::loader::startApp()`. This feature was unused and complex. - Various apps: Moved private headers into Private/ folder. - Various apps: created start() function for easy starting. - Added documentation to all TactilityC APIs - Refactored various `enum` into `class enum` - Refactor M5Stack `initBoot()` (but VBus is still 0V for some reason)
This commit is contained in:
committed by
GitHub
parent
3ca0f8cf97
commit
3ea02d912f
@@ -17,6 +17,13 @@ namespace tt::service::loader {
|
||||
|
||||
#define TAG "loader"
|
||||
|
||||
enum class LoaderStatus {
|
||||
Ok,
|
||||
ErrorAppStarted,
|
||||
ErrorUnknownApp,
|
||||
ErrorInternal,
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
LoaderEventType type;
|
||||
} LoaderEventInternal;
|
||||
@@ -41,20 +48,11 @@ static void loader_free() {
|
||||
loader_singleton = nullptr;
|
||||
}
|
||||
|
||||
void startApp(const std::string& id, bool blocking, const std::shared_ptr<const Bundle>& parameters) {
|
||||
void startApp(const std::string& id, const std::shared_ptr<const Bundle>& parameters) {
|
||||
TT_LOG_I(TAG, "Start app %s", id.c_str());
|
||||
tt_assert(loader_singleton);
|
||||
|
||||
auto message = std::make_shared<LoaderMessageAppStart>(id, parameters);
|
||||
loader_singleton->dispatcherThread->dispatch(onStartAppMessage, message);
|
||||
|
||||
auto event_flag = message->getApiLockEventFlag();
|
||||
if (blocking) {
|
||||
/* TODO: Check if task id is not the LVGL one,
|
||||
because otherwise this fails as the apps starting logic will try to lock lvgl
|
||||
to update the UI and fail. */
|
||||
event_flag->wait(message->getApiLockEventFlagValue());
|
||||
}
|
||||
}
|
||||
|
||||
void stopApp() {
|
||||
@@ -163,7 +161,7 @@ static LoaderStatus startAppWithManifestInternal(
|
||||
|
||||
auto scoped_lock = loader_singleton->mutex.scoped();
|
||||
if (!scoped_lock->lock(50 / portTICK_PERIOD_MS)) {
|
||||
return LoaderStatusErrorInternal;
|
||||
return LoaderStatus::ErrorInternal;
|
||||
}
|
||||
|
||||
auto previous_app = !loader_singleton->appStack.empty() ? loader_singleton->appStack.top() : nullptr;
|
||||
@@ -192,7 +190,7 @@ static LoaderStatus startAppWithManifestInternal(
|
||||
};
|
||||
tt_pubsub_publish(loader_singleton->pubsubExternal, &event_external);
|
||||
|
||||
return LoaderStatusOk;
|
||||
return LoaderStatus::Ok;
|
||||
}
|
||||
|
||||
static void onStartAppMessage(std::shared_ptr<void> message) {
|
||||
@@ -213,7 +211,7 @@ static LoaderStatus startAppInternal(
|
||||
const app::AppManifest* manifest = app::findAppById(id);
|
||||
if (manifest == nullptr) {
|
||||
TT_LOG_E(TAG, "App not found: %s", id.c_str());
|
||||
return LoaderStatusErrorUnknownApp;
|
||||
return LoaderStatus::ErrorUnknownApp;
|
||||
} else {
|
||||
return startAppWithManifestInternal(manifest, parameters);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user