From 13a8c5b01731ced793e587bd19d8c6f134a9131f Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Mon, 24 Aug 2026 21:49:39 +0200 Subject: [PATCH] Simplify app event subscription --- .claude/rules/app-framework.md | 4 +- Documentation/ideas.md | 3 ++ Modules/app-module/include/app/event.h | 42 +++++++++++++------ Modules/app-module/include/app/loader.h | 6 +-- .../app-module/source/app_internal_loader.cpp | 4 +- Modules/app-module/source/event.cpp | 10 ++++- Modules/app-module/source/symbols.cpp | 1 + .../tests/source/app_event_test.cpp | 21 ++++------ .../tests/source/app_manager_test.cpp | 14 +++---- .../tests/source/combined_event_test.cpp | 3 +- Tactility/Source/app/addgps/AddGps.cpp | 5 ++- .../Source/app/alertdialog/AlertDialog.cpp | 5 ++- .../Source/app/appdetails/AppDetails.cpp | 5 ++- Tactility/Source/app/apphub/AppHubApp.cpp | 5 ++- .../app/apphubdetails/AppHubDetailsApp.cpp | 5 ++- Tactility/Source/app/applist/AppList.cpp | 5 ++- .../Source/app/appsettings/AppSettings.cpp | 5 ++- .../Source/app/apwebserver/ApWebServer.cpp | 5 ++- .../app/audiosettings/AudioSettings.cpp | 5 ++- Tactility/Source/app/boot/Boot.cpp | 5 ++- Tactility/Source/app/btmanage/BtManage.cpp | 5 ++- .../app/btpeersettings/BtPeerSettings.cpp | 5 ++- Tactility/Source/app/chat/ChatApp.cpp | 5 ++- .../app/crashdiagnostics/CrashDiagnostics.cpp | 5 ++- .../Source/app/development/Development.cpp | 5 ++- Tactility/Source/app/display/Display.cpp | 5 ++- Tactility/Source/app/files/FilesApp.cpp | 5 ++- .../app/fileselection/FileSelection.cpp | 5 ++- .../Source/app/gpssettings/GpsSettings.cpp | 5 ++- .../app/grovesettings/GroveSettings.cpp | 5 ++- .../Source/app/i2cscanner/I2cScanner.cpp | 5 ++- .../Source/app/imageviewer/ImageViewer.cpp | 5 ++- .../Source/app/inputdialog/InputDialog.cpp | 5 ++- .../Source/app/keyboard/KeyboardSettings.cpp | 5 ++- Tactility/Source/app/launcher/Launcher.cpp | 5 ++- .../app/localesettings/LocaleSettings.cpp | 5 ++- Tactility/Source/app/notes/Notes.cpp | 5 ++- Tactility/Source/app/power/Power.cpp | 5 ++- Tactility/Source/app/poweroff/PowerOff.cpp | 5 ++- .../Source/app/screenshot/Screenshot.cpp | 5 ++- .../app/selectiondialog/SelectionDialog.cpp | 5 ++- Tactility/Source/app/settings/Settings.cpp | 5 ++- Tactility/Source/app/setup/Setup.cpp | 5 ++- .../Source/app/systeminfo/SystemInfo.cpp | 5 ++- .../app/timedatesettings/TimeDateSettings.cpp | 5 ++- Tactility/Source/app/timezone/TimeZone.cpp | 5 ++- .../app/touchcalibration/TouchCalibration.cpp | 5 ++- .../app/trackball/TrackballSettings.cpp | 5 ++- .../Source/app/usbsettings/UsbSettings.cpp | 5 ++- .../webserversettings/WebServerSettings.cpp | 5 ++- .../app/wifiapsettings/WifiApSettings.cpp | 5 ++- .../Source/app/wificonnect/WifiConnect.cpp | 5 ++- .../Source/app/wifimanage/WifiManage.cpp | 5 ++- 53 files changed, 192 insertions(+), 131 deletions(-) diff --git a/.claude/rules/app-framework.md b/.claude/rules/app-framework.md index 551fb9d16..d9b36568f 100644 --- a/.claude/rules/app-framework.md +++ b/.claude/rules/app-framework.md @@ -1,10 +1,10 @@ # Architecture: App Framework -Apps are event-driven, C API (`app-module`, ``), not a C++ class. Each app has an `AppManifest` (`id`, `name`, `category`, `location`, `flags`) and a `main(app_instance_id, argc, argv)` entry point (`AppMainFn`), modelled on a C program's `main()`. Every app instance gets its own dedicated task for its whole lifetime, and blocks in that task until it returns. +Apps are event-driven, C API (`app-module`, ``), not a C++ class. Each app has an `AppManifest` (`id`, `name`, `category`, `location`, `flags`) and a `main(argc, argv)` entry point (`AppMainFn`), modelled on a C program's `main()`. Every app instance gets its own dedicated task for its whole lifetime, and blocks in that task until it returns. Use `app_scheduler_current_app_id()` (`app/scheduler.h`) to identify the running instance - it's not passed as a parameter. Lifecycle and inter-app communication go through `app_manager_*()` (`app/manager.h`) and `app_event_*()` (`app/event.h`): - `app_manager_start()`/`app_manager_start_with_parameters()` launch a plain instance; `app_manager_start_for_result()` launches a modal child that reports back to a parent instance. -- An app subscribes with `app_event_subscribe()`, blocks via `task_event_group_wait()`/`task_event_group_wait_any()`, and drains with `app_event_poll()`, reacting to `APP_EVENT_CLOSE` (terminate now) and `APP_EVENT_RESULT` (a child it started reported back). +- An app subscribes with `app_event_subscribe()` (registers for its own instance's events, no id argument needed), blocks via `task_event_group_wait()`/`task_event_group_wait_any()`, and drains with `app_event_poll()`, reacting to `APP_EVENT_CLOSE` (terminate now) and `APP_EVENT_RESULT` (a child it started reported back). - An app closes itself by calling `app_manager_finish()` right before returning from `main()`; another instance is closed via `app_manager_stop()`. Apps are registered at startup via `app_manager_add()`. External apps can be loaded from SD card via `manifest.properties` files, or side-loaded as ELF binaries on ESP32 (see `app/loader.h`'s `AppLoaderApi`). diff --git a/Documentation/ideas.md b/Documentation/ideas.md index 99dd68e2d..4402319f7 100644 --- a/Documentation/ideas.md +++ b/Documentation/ideas.md @@ -11,6 +11,9 @@ ## Higher Priority +- Apps should be able to specify stack size in their manifest +- Apps currently have a `Context` object with an `appInstanceId` in it, purely for being able to close the app. + Change it so that the app has its own termination signal that it waits for in the loop, it should subscribe to the event group. - stopAppFromToolbar() in Tactility.cpp stops the top-most app. Change it so the toolbar knows for which app id it is created, so it can rely on that. - Warn if file operations are done from prohibited tasks (e.g. lvgl task) - AppHubApp: Prevent download callbacks from accessing a destroyed view. diff --git a/Modules/app-module/include/app/event.h b/Modules/app-module/include/app/event.h index bddc847f7..f6b77f903 100644 --- a/Modules/app-module/include/app/event.h +++ b/Modules/app-module/include/app/event.h @@ -50,19 +50,21 @@ struct AppEvent { * Caller-owned subscription node. Unlike TactilityKernel's system_event poll subscription * (which coalesces to the latest value), this queues events by value (FIFO) since dropping an * APP_EVENT_RESULT would be unacceptable. - * @warning Fields other than `app_instance_id` and `bit` are for internal use only; do not read - * or write them directly. + * @warning Fields other than `bit` are for internal use only; do not read or write them + * directly. */ struct AppEventSubscription { - /** The app instance this subscription receives events for; set by the caller before app_event_subscribe(). */ - AppInstanceId app_instance_id; - - /** Set by app_event_subscribe(). Read-only for the caller: OR it into a - * task_event_group_wait() mask (alongside other subscriptions sharing the same - * `event_group`) to block on this subscription and other event sources with one call. */ + /** Set by app_event_subscribe()/app_event_subscribe_with_app_id(). Read-only for the + * caller: OR it into a task_event_group_wait() mask (alongside other subscriptions sharing + * the same `event_group`) to block on this subscription and other event sources with one + * call. */ uint32_t bit; struct { + /** The app instance this subscription receives events for; set by + * app_event_subscribe()/app_event_subscribe_with_app_id(). */ + AppInstanceId app_instance_id; + /** Caller-owned, borrowed; set by app_event_subscribe(). */ struct TaskEventGroup* event_group; @@ -75,10 +77,11 @@ struct AppEventSubscription { }; /** - * Register a subscription for events addressed to @a sub->app_instance_id. - * @warning Does not work in ISR context. - * @param[in,out] sub subscription to register; caller sets @a sub->app_instance_id beforehand, - * owns the storage, and must keep it alive (and stationary) until unsubscribed + * Register a subscription for events addressed to the calling app's own instance (identified via + * app_scheduler_current_app_id()). + * @warning Does not work in ISR context. Must be called from the app's own task. + * @param[in,out] sub subscription to register; owns the storage, must stay alive (and + * stationary) until unsubscribed * @param[in] event_group caller-owned group to wait on; must outlive @a sub (i.e. be * destructed only after app_event_unsubscribe()). To block for an event, call * task_event_group_wait()/task_event_group_wait_any() on this group (OR sub->bit into the mask, @@ -89,6 +92,21 @@ struct AppEventSubscription { */ error_t app_event_subscribe(struct AppEventSubscription* sub, struct TaskEventGroup* event_group); +/** + * Same as app_event_subscribe(), but for a caller that isn't running on @a app_instance_id's own + * task (e.g. test code simulating multiple distinct app instances from one thread). Production + * app code should use app_event_subscribe() instead. + * @warning Does not work in ISR context. + * @param[in,out] sub subscription to register; owns the storage, must stay alive (and + * stationary) until unsubscribed + * @param[in] event_group caller-owned group to wait on; same contract as app_event_subscribe() + * @param[in] app_instance_id the app instance this subscription receives events for + * @retval ERROR_NONE on success + * @retval ERROR_RESOURCE @a event_group has no free bits left to claim; @a sub was not registered + * @retval ERROR_INVALID_STATE @a sub is already registered + */ +error_t app_event_subscribe_with_app_id(struct AppEventSubscription* sub, struct TaskEventGroup* event_group, AppInstanceId app_instance_id); + /** * Remove a previously registered subscription. * @warning Does not work in ISR context. diff --git a/Modules/app-module/include/app/loader.h b/Modules/app-module/include/app/loader.h index 0d606184a..db2a12704 100644 --- a/Modules/app-module/include/app/loader.h +++ b/Modules/app-module/include/app/loader.h @@ -21,13 +21,13 @@ extern "C" { /** * Entry point signature for an APP_LOCATION_MEMORY app: a function linked directly into this * firmware binary. Called on the dedicated task app-module's scheduler spawns for this instance, - * blocking for the app's whole lifetime - same contract as an external app's main(), plus - * @a app_instance_id identifying this running instance (use it with + * blocking for the app's whole lifetime - same contract as an external app's main(). Use + * app_scheduler_current_app_id() to identify this running instance (e.g. with * app_event_subscribe()/window_manager_create()/etc.). The instance closes when this function * returns - no separate call is needed. * AppManifest::location.location holds this cast to void*. */ -typedef int32_t (*AppMainFn)(uint32_t app_instance_id, int argc, char* argv[]); +typedef int32_t (*AppMainFn)(int argc, char* argv[]); typedef void* AppRuntime; diff --git a/Modules/app-module/source/app_internal_loader.cpp b/Modules/app-module/source/app_internal_loader.cpp index 4c447d3fe..70d0e179d 100644 --- a/Modules/app-module/source/app_internal_loader.cpp +++ b/Modules/app-module/source/app_internal_loader.cpp @@ -16,9 +16,9 @@ error_t api_load(AppLocation location, AppRuntime* out_runtime) { return ERROR_NONE; } -int32_t api_run(AppRuntime runtime, uint32_t app_instance_id, int argc, char* argv[]) { +int32_t api_run(AppRuntime runtime, uint32_t /*app_instance_id*/, int argc, char* argv[]) { auto entry = reinterpret_cast(runtime); - return entry(app_instance_id, argc, argv); + return entry(argc, argv); } void api_unload(AppRuntime /*unused*/) { diff --git a/Modules/app-module/source/event.cpp b/Modules/app-module/source/event.cpp index 05606f1c8..957668758 100644 --- a/Modules/app-module/source/event.cpp +++ b/Modules/app-module/source/event.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 #include +#include #include #include @@ -21,7 +22,7 @@ static AppEventMutex subscriptions_mutex; extern "C" { -error_t app_event_subscribe(AppEventSubscription* sub, TaskEventGroup* event_group) { +error_t app_event_subscribe_with_app_id(AppEventSubscription* sub, TaskEventGroup* event_group, AppInstanceId app_instance_id) { uint32_t bit; error_t claim_result = task_event_group_claim_bit(event_group, &bit); if (claim_result != ERROR_NONE) { @@ -38,6 +39,7 @@ error_t app_event_subscribe(AppEventSubscription* sub, TaskEventGroup* event_gro } sub->bit = bit; + sub->internal.app_instance_id = app_instance_id; sub->internal.event_group = event_group; sub->internal.head = 0; sub->internal.count = 0; @@ -48,6 +50,10 @@ error_t app_event_subscribe(AppEventSubscription* sub, TaskEventGroup* event_gro return ERROR_NONE; } +error_t app_event_subscribe(AppEventSubscription* sub, TaskEventGroup* event_group) { + return app_event_subscribe_with_app_id(sub, event_group, app_scheduler_current_app_id()); +} + error_t app_event_unsubscribe(AppEventSubscription* sub) { error_t result = ERROR_NOT_FOUND; @@ -76,7 +82,7 @@ error_t app_event_emit(AppInstanceId app_instance_id, const AppEvent* event) { mutex_lock(&subscriptions_mutex.handle); for (AppEventSubscription* sub = subscriptions; sub != nullptr; sub = sub->internal.next) { - if (sub->app_instance_id != app_instance_id) { + if (sub->internal.app_instance_id != app_instance_id) { continue; } diff --git a/Modules/app-module/source/symbols.cpp b/Modules/app-module/source/symbols.cpp index 871f6b0fe..28711df61 100644 --- a/Modules/app-module/source/symbols.cpp +++ b/Modules/app-module/source/symbols.cpp @@ -19,6 +19,7 @@ extern ServiceManifest app_internal_loader_service_manifest; const ModuleSymbol app_module_symbols[] = { // app/event DEFINE_MODULE_SYMBOL(app_event_subscribe), + DEFINE_MODULE_SYMBOL(app_event_subscribe_with_app_id), DEFINE_MODULE_SYMBOL(app_event_unsubscribe), DEFINE_MODULE_SYMBOL(app_event_emit), DEFINE_MODULE_SYMBOL(app_event_poll), diff --git a/Modules/app-module/tests/source/app_event_test.cpp b/Modules/app-module/tests/source/app_event_test.cpp index 4a6c06b08..43795aeff 100644 --- a/Modules/app-module/tests/source/app_event_test.cpp +++ b/Modules/app-module/tests/source/app_event_test.cpp @@ -11,8 +11,7 @@ TEST_CASE("app_event_subscribe/_poll deliver events in FIFO order") { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = 1; - CHECK_EQ(app_event_subscribe(&sub, &event_group), ERROR_NONE); + CHECK_EQ(app_event_subscribe_with_app_id(&sub, &event_group, 1), ERROR_NONE); for (uint32_t i = 0; i < 3; i++) { AppEvent event { .type = APP_EVENT_RESULT, .timestamp = 0, .result = { .launch_id = i, .result = 0 } }; @@ -35,8 +34,7 @@ TEST_CASE("app_event_emit only delivers to subscriptions for that app_instance_i task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = 10; - app_event_subscribe(&sub, &event_group); + app_event_subscribe_with_app_id(&sub, &event_group, 10); AppEvent event { .type = APP_EVENT_CLOSE, .timestamp = 0, .result = {} }; CHECK_EQ(app_event_emit(11, &event), ERROR_NOT_FOUND); @@ -53,8 +51,7 @@ TEST_CASE("app_event_emit returns ERROR_RESOURCE and drops the newest event once task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = 20; - app_event_subscribe(&sub, &event_group); + app_event_subscribe_with_app_id(&sub, &event_group, 20); for (uint32_t i = 0; i < APP_EVENT_QUEUE_CAPACITY; i++) { AppEvent event { .type = APP_EVENT_RESULT, .timestamp = 0, .result = { .launch_id = i, .result = 0 } }; @@ -83,8 +80,7 @@ TEST_CASE("app_event_unsubscribe stops further delivery") { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = 30; - app_event_subscribe(&sub, &event_group); + app_event_subscribe_with_app_id(&sub, &event_group, 30); CHECK_EQ(app_event_unsubscribe(&sub), ERROR_NONE); CHECK_EQ(app_event_unsubscribe(&sub), ERROR_NOT_FOUND); @@ -100,8 +96,7 @@ TEST_CASE("app_event_poll times out when no event has arrived") { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = 40; - app_event_subscribe(&sub, &event_group); + app_event_subscribe_with_app_id(&sub, &event_group, 40); AppEvent out {}; CHECK_EQ(app_event_poll(&sub, &out), ERROR_TIMEOUT); @@ -115,8 +110,7 @@ TEST_CASE("app_event_emit stamps the event with the current boot-relative time") task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = 50; - app_event_subscribe(&sub, &event_group); + app_event_subscribe_with_app_id(&sub, &event_group, 50); auto before = static_cast(get_micros_since_boot()); AppEvent event { .type = APP_EVENT_CLOSE, .timestamp = 0, .result = {} }; @@ -137,8 +131,7 @@ TEST_CASE("task_event_group_wait wakes when the event is emitted from another ta task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = 60; - CHECK_EQ(app_event_subscribe(&sub, &event_group), ERROR_NONE); + CHECK_EQ(app_event_subscribe_with_app_id(&sub, &event_group, 60), ERROR_NONE); auto* thread = thread_alloc_full( "app-event-emitter", diff --git a/Modules/app-module/tests/source/app_manager_test.cpp b/Modules/app-module/tests/source/app_manager_test.cpp index e67f9d299..85a894102 100644 --- a/Modules/app-module/tests/source/app_manager_test.cpp +++ b/Modules/app-module/tests/source/app_manager_test.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -55,7 +56,7 @@ void stash_received_arguments(int argc, char* argv[]) { // parameter (app_manager_start_for_result()), acts as a modal dialog instead: returns the // requested result (argv[0], parsed as an int) immediately (the app's own return value IS the // delivered APP_EVENT_RESULT.result - see app_scheduler.cpp's thread_main()). -int32_t fake_run(void*, uint32_t app_instance_id, int argc, char* argv[]) { +int32_t fake_run(void*, uint32_t /*app_instance_id*/, int argc, char* argv[]) { stash_received_arguments(argc, argv); if (argc == 1) { @@ -70,7 +71,6 @@ int32_t fake_run(void*, uint32_t app_instance_id, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = app_instance_id; app_event_subscribe(&sub, &event_group); while (true) { @@ -139,8 +139,8 @@ void ensure_memory_loader_registered() { // Same subscribe-until-close contract as fake_run() above, but called directly as an AppMainFn - // this is what a real internal app's entry point looks like. -int32_t fake_app_main(uint32_t app_instance_id, int argc, char* argv[]) { - return fake_run(nullptr, app_instance_id, argc, argv); +int32_t fake_app_main(int argc, char* argv[]) { + return fake_run(nullptr, app_scheduler_current_app_id(), argc, argv); } // Wraps app_manager_get_topmost_instance_id() for terse assertions: 0 if no app is Active. @@ -343,8 +343,7 @@ TEST_CASE("app_manager_start_for_result delivers APP_EVENT_RESULT to the parent, task_event_group_construct(&parent_event_group); AppEventSubscription parent_sub {}; - parent_sub.app_instance_id = parent_id; - REQUIRE_EQ(app_event_subscribe(&parent_sub, &parent_event_group), ERROR_NONE); + REQUIRE_EQ(app_event_subscribe_with_app_id(&parent_sub, &parent_event_group, parent_id), ERROR_NONE); const char* argv[] = { "42" }; uint32_t child_id = 0; @@ -384,8 +383,7 @@ TEST_CASE("app_manager_start_for_result delivers the child's own return value as task_event_group_construct(&parent_event_group); AppEventSubscription parent_sub {}; - parent_sub.app_instance_id = parent_id; - REQUIRE_EQ(app_event_subscribe(&parent_sub, &parent_event_group), ERROR_NONE); + REQUIRE_EQ(app_event_subscribe_with_app_id(&parent_sub, &parent_event_group, parent_id), ERROR_NONE); uint32_t child_id = 0; // No parameters - fake_run falls through to its normal CLOSE loop instead of acting as a diff --git a/Modules/app-module/tests/source/combined_event_test.cpp b/Modules/app-module/tests/source/combined_event_test.cpp index 25031c5b4..88ead21b6 100644 --- a/Modules/app-module/tests/source/combined_event_test.cpp +++ b/Modules/app-module/tests/source/combined_event_test.cpp @@ -14,8 +14,7 @@ TEST_CASE("a task can wait on app_event and system_event together via one TaskEv task_event_group_construct(&event_group); AppEventSubscription app_sub {}; - app_sub.app_instance_id = 100; - CHECK_EQ(app_event_subscribe(&app_sub, &event_group), ERROR_NONE); + CHECK_EQ(app_event_subscribe_with_app_id(&app_sub, &event_group, 100), ERROR_NONE); SystemEventSubscription sys_sub {}; sys_sub.event.type = KERNEL_EVENT_BOOT_COMPLETED; diff --git a/Tactility/Source/app/addgps/AddGps.cpp b/Tactility/Source/app/addgps/AddGps.cpp index 152c9c5c0..0900a7421 100644 --- a/Tactility/Source/app/addgps/AddGps.cpp +++ b/Tactility/Source/app/addgps/AddGps.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -199,7 +200,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { // endregion } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -207,7 +209,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/alertdialog/AlertDialog.cpp b/Tactility/Source/app/alertdialog/AlertDialog.cpp index b9722b8d1..3ea99142f 100644 --- a/Tactility/Source/app/alertdialog/AlertDialog.cpp +++ b/Tactility/Source/app/alertdialog/AlertDialog.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -97,7 +98,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx { appInstanceId }; ctx.argc = argc; ctx.argv = argv; @@ -106,7 +108,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/appdetails/AppDetails.cpp b/Tactility/Source/app/appdetails/AppDetails.cpp index bf78088b1..d7adc3f98 100644 --- a/Tactility/Source/app/appdetails/AppDetails.cpp +++ b/Tactility/Source/app/appdetails/AppDetails.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include @@ -104,7 +105,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -118,7 +120,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/apphub/AppHubApp.cpp b/Tactility/Source/app/apphub/AppHubApp.cpp index 23e3e4095..8fd5a0a79 100644 --- a/Tactility/Source/app/apphub/AppHubApp.cpp +++ b/Tactility/Source/app/apphub/AppHubApp.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -197,7 +198,8 @@ void destroyWidgets(void* userData) { ctx->refreshButton = nullptr; } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx; ctx.appInstanceId = appInstanceId; @@ -205,7 +207,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create_ext(appInstanceId, createWidgets, destroyWidgets, &ctx); diff --git a/Tactility/Source/app/apphubdetails/AppHubDetailsApp.cpp b/Tactility/Source/app/apphubdetails/AppHubDetailsApp.cpp index d959421aa..4c4f9d2d7 100644 --- a/Tactility/Source/app/apphubdetails/AppHubDetailsApp.cpp +++ b/Tactility/Source/app/apphubdetails/AppHubDetailsApp.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -211,7 +212,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { updateViews(ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); // argv layout: [0]=appId, [1]=appVersionName, [2]=appVersionCode, [3]=appName, // [4]=appDescription, [5]=targetSdk, [6]=file, [7..argc)=targetPlatforms. @@ -234,7 +236,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/applist/AppList.cpp b/Tactility/Source/app/applist/AppList.cpp index 36d07c76e..7eba66616 100644 --- a/Tactility/Source/app/applist/AppList.cpp +++ b/Tactility/Source/app/applist/AppList.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include @@ -78,14 +79,14 @@ void createWidgets(lv_obj_t* parent, void*) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); appListInstanceId = appInstanceId; TaskEventGroup event_group {}; task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, nullptr); diff --git a/Tactility/Source/app/appsettings/AppSettings.cpp b/Tactility/Source/app/appsettings/AppSettings.cpp index d2395d336..bf6ce27fc 100644 --- a/Tactility/Source/app/appsettings/AppSettings.cpp +++ b/Tactility/Source/app/appsettings/AppSettings.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include @@ -87,14 +88,14 @@ void createWidgets(lv_obj_t* parent, void*) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); appSettingsInstanceId = appInstanceId; TaskEventGroup event_group {}; task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, nullptr); diff --git a/Tactility/Source/app/apwebserver/ApWebServer.cpp b/Tactility/Source/app/apwebserver/ApWebServer.cpp index 9ece43edc..3758668c7 100644 --- a/Tactility/Source/app/apwebserver/ApWebServer.cpp +++ b/Tactility/Source/app/apwebserver/ApWebServer.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -121,7 +122,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { ctx->webServerEnabledChanged = true; } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; ctx.wsSettings = settings::webserver::loadOrGetDefault(); @@ -130,7 +132,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/audiosettings/AudioSettings.cpp b/Tactility/Source/app/audiosettings/AudioSettings.cpp index dd6219bfb..4b632060f 100644 --- a/Tactility/Source/app/audiosettings/AudioSettings.cpp +++ b/Tactility/Source/app/audiosettings/AudioSettings.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -211,7 +212,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { }); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -219,7 +221,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/boot/Boot.cpp b/Tactility/Source/app/boot/Boot.cpp index eb7c8dc53..855adc751 100644 --- a/Tactility/Source/app/boot/Boot.cpp +++ b/Tactility/Source/app/boot/Boot.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -284,7 +285,8 @@ void runBootSequence(TickType_t startTime) { system_event_emit(KERNEL_EVENT_BOOT_COMPLETED, nullptr, 0); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); bootAppInstanceId = appInstanceId; const auto start_time = get_ticks(); @@ -296,7 +298,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); bootWindowId = window_manager_create(appInstanceId, createSplashWidgets, nullptr); diff --git a/Tactility/Source/app/btmanage/BtManage.cpp b/Tactility/Source/app/btmanage/BtManage.cpp index 4b7d7b298..8e35f0744 100644 --- a/Tactility/Source/app/btmanage/BtManage.cpp +++ b/Tactility/Source/app/btmanage/BtManage.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -199,7 +200,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { ctx->unlock(); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx; ctx.appInstanceId = appInstanceId; ctx.bindings = (Bindings) { @@ -224,7 +226,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/btpeersettings/BtPeerSettings.cpp b/Tactility/Source/app/btpeersettings/BtPeerSettings.cpp index 934440f68..95eb36926 100644 --- a/Tactility/Source/app/btpeersettings/BtPeerSettings.cpp +++ b/Tactility/Source/app/btpeersettings/BtPeerSettings.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -178,7 +179,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { updateViews(ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -203,7 +205,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/chat/ChatApp.cpp b/Tactility/Source/app/chat/ChatApp.cpp index 170b53f5b..5c3b26f8d 100644 --- a/Tactility/Source/app/chat/ChatApp.cpp +++ b/Tactility/Source/app/chat/ChatApp.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -167,7 +168,8 @@ void switchChannel(Context* ctx, const std::string& chatChannel) { namespace { -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; ctx.isFirstLaunch = !settingsFileExists(); @@ -189,7 +191,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp b/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp index 5ef050dbc..e88ecc2a9 100644 --- a/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp +++ b/Tactility/Source/app/crashdiagnostics/CrashDiagnostics.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -149,7 +150,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -157,7 +159,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/development/Development.cpp b/Tactility/Source/app/development/Development.cpp index 86076fd3d..77f3fac06 100644 --- a/Tactility/Source/app/development/Development.cpp +++ b/Tactility/Source/app/development/Development.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -162,7 +163,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { updateViewState(ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; ctx.service = service::development::findService(); @@ -178,7 +180,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/display/Display.cpp b/Tactility/Source/app/display/Display.cpp index 08c768ae0..0a3a423e4 100644 --- a/Tactility/Source/app/display/Display.cpp +++ b/Tactility/Source/app/display/Display.cpp @@ -13,6 +13,7 @@ #include #include +#include #include @@ -303,7 +304,8 @@ void persistIfUpdated(Context& ctx) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -311,7 +313,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/files/FilesApp.cpp b/Tactility/Source/app/files/FilesApp.cpp index 90cb022f7..048d763ad 100644 --- a/Tactility/Source/app/files/FilesApp.cpp +++ b/Tactility/Source/app/files/FilesApp.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include @@ -25,7 +26,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { ctx->view->init(ctx->appInstanceId, parent); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); auto state = std::make_shared(); View view(state); CreateContext createContext { &view, appInstanceId }; @@ -34,7 +36,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &createContext); diff --git a/Tactility/Source/app/fileselection/FileSelection.cpp b/Tactility/Source/app/fileselection/FileSelection.cpp index 3baba0c46..a89651db0 100644 --- a/Tactility/Source/app/fileselection/FileSelection.cpp +++ b/Tactility/Source/app/fileselection/FileSelection.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -43,7 +44,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { ctx->view->init(parent, ctx->mode); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); // argv layout: [0]="existing" or "existing_or_new". Context ctx {}; @@ -66,7 +68,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/gpssettings/GpsSettings.cpp b/Tactility/Source/app/gpssettings/GpsSettings.cpp index 47f0bae51..a8ee385b6 100644 --- a/Tactility/Source/app/gpssettings/GpsSettings.cpp +++ b/Tactility/Source/app/gpssettings/GpsSettings.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -257,7 +258,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { updateDeviceStates(ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -271,7 +273,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/grovesettings/GroveSettings.cpp b/Tactility/Source/app/grovesettings/GroveSettings.cpp index 25e54f227..5edd01470 100644 --- a/Tactility/Source/app/grovesettings/GroveSettings.cpp +++ b/Tactility/Source/app/grovesettings/GroveSettings.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -89,7 +90,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -97,7 +99,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/i2cscanner/I2cScanner.cpp b/Tactility/Source/app/i2cscanner/I2cScanner.cpp index c4a18e93f..e3b56ae1c 100644 --- a/Tactility/Source/app/i2cscanner/I2cScanner.cpp +++ b/Tactility/Source/app/i2cscanner/I2cScanner.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -384,7 +385,8 @@ void stopScanningIfRunning(Context* ctx) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx; ctx.appInstanceId = appInstanceId; @@ -392,7 +394,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/imageviewer/ImageViewer.cpp b/Tactility/Source/app/imageviewer/ImageViewer.cpp index 175fca478..c7fcc0b08 100644 --- a/Tactility/Source/app/imageviewer/ImageViewer.cpp +++ b/Tactility/Source/app/imageviewer/ImageViewer.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -82,7 +83,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); check(argc > 0, "Parameters not set"); Context ctx {}; @@ -93,7 +95,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/inputdialog/InputDialog.cpp b/Tactility/Source/app/inputdialog/InputDialog.cpp index 877f44027..0fb743be4 100644 --- a/Tactility/Source/app/inputdialog/InputDialog.cpp +++ b/Tactility/Source/app/inputdialog/InputDialog.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -106,7 +107,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { createButton(ctx, button_wrapper, "Cancel", nullptr); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx { appInstanceId }; ctx.argc = argc; ctx.argv = argv; @@ -115,7 +117,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/keyboard/KeyboardSettings.cpp b/Tactility/Source/app/keyboard/KeyboardSettings.cpp index 08ce740cd..c43208a2e 100644 --- a/Tactility/Source/app/keyboard/KeyboardSettings.cpp +++ b/Tactility/Source/app/keyboard/KeyboardSettings.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -205,7 +206,8 @@ void persistIfUpdated(Context& ctx) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -213,7 +215,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/launcher/Launcher.cpp b/Tactility/Source/app/launcher/Launcher.cpp index cb82386c6..6bbd92321 100644 --- a/Tactility/Source/app/launcher/Launcher.cpp +++ b/Tactility/Source/app/launcher/Launcher.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include @@ -231,14 +232,14 @@ void runAutoStart() { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); runAutoStart(); TaskEventGroup event_group {}; task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, nullptr); diff --git a/Tactility/Source/app/localesettings/LocaleSettings.cpp b/Tactility/Source/app/localesettings/LocaleSettings.cpp index 5c7d0c611..fef376dbe 100644 --- a/Tactility/Source/app/localesettings/LocaleSettings.cpp +++ b/Tactility/Source/app/localesettings/LocaleSettings.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -141,7 +142,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { lv_obj_add_event_cb(ctx->languageDropdown, onLanguageSet, LV_EVENT_VALUE_CHANGED, ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx; ctx.appInstanceId = appInstanceId; @@ -149,7 +151,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/notes/Notes.cpp b/Tactility/Source/app/notes/Notes.cpp index 923e01156..9975ecd73 100644 --- a/Tactility/Source/app/notes/Notes.cpp +++ b/Tactility/Source/app/notes/Notes.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -182,7 +183,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -194,7 +196,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/power/Power.cpp b/Tactility/Source/app/power/Power.cpp index 34130857e..df377b639 100644 --- a/Tactility/Source/app/power/Power.cpp +++ b/Tactility/Source/app/power/Power.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include @@ -229,7 +230,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -244,7 +246,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/poweroff/PowerOff.cpp b/Tactility/Source/app/poweroff/PowerOff.cpp index 5804f7104..f837dee40 100644 --- a/Tactility/Source/app/poweroff/PowerOff.cpp +++ b/Tactility/Source/app/poweroff/PowerOff.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include @@ -132,7 +133,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { lv_obj_add_event_cb(no_button, onNoPressed, LV_EVENT_SHORT_CLICKED, ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -140,7 +142,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/screenshot/Screenshot.cpp b/Tactility/Source/app/screenshot/Screenshot.cpp index 6fbe17783..72c423e78 100644 --- a/Tactility/Source/app/screenshot/Screenshot.cpp +++ b/Tactility/Source/app/screenshot/Screenshot.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include @@ -240,7 +241,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; ctx.updateTimer = std::make_unique(Timer::Type::Periodic, 500 / portTICK_PERIOD_MS, [&ctx] { @@ -254,7 +256,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/selectiondialog/SelectionDialog.cpp b/Tactility/Source/app/selectiondialog/SelectionDialog.cpp index dff75bba1..a31b2c864 100644 --- a/Tactility/Source/app/selectiondialog/SelectionDialog.cpp +++ b/Tactility/Source/app/selectiondialog/SelectionDialog.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -99,7 +100,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(AppInstanceId appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + AppInstanceId appInstanceId = app_scheduler_current_app_id(); Context ctx { appInstanceId }; ctx.argc = argc; ctx.argv = argv; @@ -108,7 +110,6 @@ int32_t appMain(AppInstanceId appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/settings/Settings.cpp b/Tactility/Source/app/settings/Settings.cpp index 61239aae3..823cc97ea 100644 --- a/Tactility/Source/app/settings/Settings.cpp +++ b/Tactility/Source/app/settings/Settings.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include @@ -76,14 +77,14 @@ void createWidgets(lv_obj_t* parent, void*) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); settingsInstanceId = appInstanceId; TaskEventGroup event_group {}; task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, nullptr); diff --git a/Tactility/Source/app/setup/Setup.cpp b/Tactility/Source/app/setup/Setup.cpp index 2b01b375d..356e5823d 100644 --- a/Tactility/Source/app/setup/Setup.cpp +++ b/Tactility/Source/app/setup/Setup.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -203,7 +204,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { renderCurrent(ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; ctx.steps = { @@ -233,7 +235,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/systeminfo/SystemInfo.cpp b/Tactility/Source/app/systeminfo/SystemInfo.cpp index db35843ce..6917020b5 100644 --- a/Tactility/Source/app/systeminfo/SystemInfo.cpp +++ b/Tactility/Source/app/systeminfo/SystemInfo.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -399,7 +400,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { updateTasks(ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -421,7 +423,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/timedatesettings/TimeDateSettings.cpp b/Tactility/Source/app/timedatesettings/TimeDateSettings.cpp index 81faed8cf..1ef225c0a 100644 --- a/Tactility/Source/app/timedatesettings/TimeDateSettings.cpp +++ b/Tactility/Source/app/timedatesettings/TimeDateSettings.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include @@ -153,7 +154,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { lv_label_set_text(ctx->timeZoneLabel, timeZoneName.c_str()); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -161,7 +163,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/timezone/TimeZone.cpp b/Tactility/Source/app/timezone/TimeZone.cpp index 277d7499d..f2b3bd259 100644 --- a/Tactility/Source/app/timezone/TimeZone.cpp +++ b/Tactility/Source/app/timezone/TimeZone.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -229,7 +230,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { ctx->listWidget = list; } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); // argv layout: [0]="1"/"0" (saveTimeZone). Context ctx; @@ -244,7 +246,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/touchcalibration/TouchCalibration.cpp b/Tactility/Source/app/touchcalibration/TouchCalibration.cpp index 56d4f77f4..85db06d20 100644 --- a/Tactility/Source/app/touchcalibration/TouchCalibration.cpp +++ b/Tactility/Source/app/touchcalibration/TouchCalibration.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -221,7 +222,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { updateUi(ctx); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -237,7 +239,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/trackball/TrackballSettings.cpp b/Tactility/Source/app/trackball/TrackballSettings.cpp index 4040acb18..1e7148434 100644 --- a/Tactility/Source/app/trackball/TrackballSettings.cpp +++ b/Tactility/Source/app/trackball/TrackballSettings.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include @@ -268,7 +269,8 @@ void persistIfUpdated(Context& ctx) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -276,7 +278,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/usbsettings/UsbSettings.cpp b/Tactility/Source/app/usbsettings/UsbSettings.cpp index e867489c1..a36f1e325 100644 --- a/Tactility/Source/app/usbsettings/UsbSettings.cpp +++ b/Tactility/Source/app/usbsettings/UsbSettings.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -81,7 +82,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -89,7 +91,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/webserversettings/WebServerSettings.cpp b/Tactility/Source/app/webserversettings/WebServerSettings.cpp index 563cb76bd..29b4caa26 100644 --- a/Tactility/Source/app/webserversettings/WebServerSettings.cpp +++ b/Tactility/Source/app/webserversettings/WebServerSettings.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -354,7 +355,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { "AP mode uses the password configured above."); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; ctx.wsSettings = settings::webserver::loadOrGetDefault(); @@ -366,7 +368,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); WindowId window = window_manager_create(appInstanceId, createWidgets, &ctx); diff --git a/Tactility/Source/app/wifiapsettings/WifiApSettings.cpp b/Tactility/Source/app/wifiapsettings/WifiApSettings.cpp index cfb198e4a..4e12f0633 100644 --- a/Tactility/Source/app/wifiapsettings/WifiApSettings.cpp +++ b/Tactility/Source/app/wifiapsettings/WifiApSettings.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include @@ -215,7 +216,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { lv_obj_align(ctx->autoConnectSwitch, LV_ALIGN_RIGHT_MID, 0, 0); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -225,7 +227,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); Device* wifi_device = nullptr; diff --git a/Tactility/Source/app/wificonnect/WifiConnect.cpp b/Tactility/Source/app/wificonnect/WifiConnect.cpp index db3f70e11..bd1266059 100644 --- a/Tactility/Source/app/wificonnect/WifiConnect.cpp +++ b/Tactility/Source/app/wificonnect/WifiConnect.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -300,7 +301,8 @@ void createWidgets(lv_obj_t* parent, void* userData) { } } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx {}; ctx.appInstanceId = appInstanceId; @@ -311,7 +313,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { task_event_group_construct(&event_group); AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); Device* wifi_device = nullptr; diff --git a/Tactility/Source/app/wifimanage/WifiManage.cpp b/Tactility/Source/app/wifimanage/WifiManage.cpp index 6cb12f184..bb9f79fa5 100644 --- a/Tactility/Source/app/wifimanage/WifiManage.cpp +++ b/Tactility/Source/app/wifimanage/WifiManage.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -121,7 +122,8 @@ void destroyWidgets(void* userData) { ctx->view.reset(); } -int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { +int32_t appMain(int argc, char* argv[]) { + uint32_t appInstanceId = app_scheduler_current_app_id(); Context ctx; ctx.appInstanceId = appInstanceId; ctx.bindings = (Bindings) { @@ -145,7 +147,6 @@ int32_t appMain(uint32_t appInstanceId, int argc, char* argv[]) { } AppEventSubscription sub {}; - sub.app_instance_id = appInstanceId; app_event_subscribe(&sub, &event_group); Device* wifi_device = nullptr;