// SPDX-License-Identifier: Apache-2.0 #include #include #include #include #include #include #include #include #include #include #include #include #include extern "C" { extern ServiceManifest app_internal_loader_service_manifest; static const ModuleSymbol 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_poll), // app/install DEFINE_MODULE_SYMBOL(app_get_install_path), DEFINE_MODULE_SYMBOL(app_install), DEFINE_MODULE_SYMBOL(app_uninstall), // app/io DEFINE_MODULE_SYMBOL(app_io_read), DEFINE_MODULE_SYMBOL(app_io_write), DEFINE_MODULE_SYMBOL(app_io_close), // app/manager DEFINE_MODULE_SYMBOL(app_manager_start), DEFINE_MODULE_SYMBOL(app_manager_start_with_parameters), DEFINE_MODULE_SYMBOL(app_manager_start_for_result), DEFINE_MODULE_SYMBOL(app_manager_start_with_streams), DEFINE_MODULE_SYMBOL(app_manager_start_for_result_with_streams), DEFINE_MODULE_SYMBOL(app_manager_stop), DEFINE_MODULE_SYMBOL(app_manager_get_state), DEFINE_MODULE_SYMBOL(app_manager_find_manifest), DEFINE_MODULE_SYMBOL(app_manager_for_each_manifest), DEFINE_MODULE_SYMBOL(app_manager_add), DEFINE_MODULE_SYMBOL(app_manager_remove), DEFINE_MODULE_SYMBOL(app_manager_get_topmost_instance_id), DEFINE_MODULE_SYMBOL(app_manager_get_topmost_app_id), DEFINE_MODULE_SYMBOL(app_manager_install_path_add), DEFINE_MODULE_SYMBOL(app_manager_install_path_scan), DEFINE_MODULE_SYMBOL(app_manager_install_path_uninstall), // app/manifest DEFINE_MODULE_SYMBOL(app_id_is_valid), // app/metadata DEFINE_MODULE_SYMBOL(app_metadata_parse), // app/paths DEFINE_MODULE_SYMBOL(app_paths_get_user_data_directory), DEFINE_MODULE_SYMBOL(app_paths_get_user_data_path), DEFINE_MODULE_SYMBOL(app_paths_get_assets_directory), DEFINE_MODULE_SYMBOL(app_paths_get_assets_path), // app/scheduler DEFINE_MODULE_SYMBOL(app_scheduler_current_app_id), // app/stream DEFINE_MODULE_SYMBOL(app_stream_subscribe), DEFINE_MODULE_SYMBOL(app_stream_unsubscribe), DEFINE_MODULE_SYMBOL(app_stream_await), DEFINE_MODULE_SYMBOL(app_stream_read), DEFINE_MODULE_SYMBOL(app_stream_write), DEFINE_MODULE_SYMBOL(app_stream_close), // terminator MODULE_SYMBOL_TERMINATOR, }; static error_t start() { return service_manager_add(&app_internal_loader_service_manifest, /*auto_start=*/true); } static error_t stop() { return service_manager_remove(app_internal_loader_service_manifest.id); } Module app_module = { .name = "app", .start = start, .stop = stop, .drivers = nullptr, .symbols = SYMBOLS, .internal = nullptr, }; }