// SPDX-License-Identifier: Apache-2.0 #include #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/execute DEFINE_MODULE_SYMBOL(app_execute), DEFINE_MODULE_SYMBOL(app_execute_for_result), DEFINE_MODULE_SYMBOL(app_execute_with_streams), DEFINE_MODULE_SYMBOL(app_execute_for_result_with_streams), DEFINE_MODULE_SYMBOL(app_is_executable), // 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_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_add_package), DEFINE_MODULE_SYMBOL(app_manager_remove_package), DEFINE_MODULE_SYMBOL(app_manager_find_package), DEFINE_MODULE_SYMBOL(app_manager_for_each_package), 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_manifest_id_is_valid), DEFINE_MODULE_SYMBOL(app_manifest_name_is_valid), DEFINE_MODULE_SYMBOL(app_manifest_stack_size_is_valid), // app/package_manifest DEFINE_MODULE_SYMBOL(app_package_manifest_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/start DEFINE_MODULE_SYMBOL(app_start), DEFINE_MODULE_SYMBOL(app_start_for_result), DEFINE_MODULE_SYMBOL(app_start_with_streams), DEFINE_MODULE_SYMBOL(app_start_for_result_with_streams), // 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, }; }