mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-08-18 07:55:06 +00:00
75 lines
2.2 KiB
C
75 lines
2.2 KiB
C
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
#include <service/instance.h>
|
|
#include <service/manifest.h>
|
|
#include <tactility/error.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Register a service manifest.
|
|
* @param[in] manifest non-null manifest to register
|
|
* @param[in] auto_start if true, the service is started immediately after registration
|
|
* @retval ERROR_INVALID_ARGUMENT if a manifest with the same id is already registered
|
|
* @retval ERROR_RESOURCE if auto_start is true and starting the service failed
|
|
* @retval ERROR_NONE on success
|
|
*/
|
|
error_t service_manager_add(const struct ServiceManifest* manifest, bool auto_start);
|
|
|
|
/**
|
|
* @brief Unregister a previously-added manifest.
|
|
* @param[in] id non-null service id
|
|
* @retval ERROR_INVALID_STATE if the service is still running
|
|
* @retval ERROR_NOT_FOUND if no manifest with this id is registered
|
|
* @retval ERROR_NONE on success
|
|
*/
|
|
error_t service_manager_remove(const char* id);
|
|
|
|
/**
|
|
* @brief Find a registered manifest by id.
|
|
* @param[in] id non-null service id
|
|
* @return the manifest, or NULL if not found
|
|
*/
|
|
const struct ServiceManifest* service_manager_find_manifest(const char* id);
|
|
|
|
/**
|
|
* @brief Start a registered service by id.
|
|
* @param[in] id non-null service id
|
|
* @retval ERROR_NOT_FOUND if no manifest with this id is registered
|
|
* @retval ERROR_INVALID_STATE if the service is already running
|
|
* @retval ERROR_RESOURCE if the service's on_start callback failed
|
|
* @retval ERROR_NONE on success
|
|
*/
|
|
error_t service_manager_start(const char* id);
|
|
|
|
/**
|
|
* @brief Stop a running service by id.
|
|
* @param[in] id non-null service id
|
|
* @retval ERROR_NOT_FOUND if no service with this id is running
|
|
* @retval ERROR_NONE on success
|
|
*/
|
|
error_t service_manager_stop(const char* id);
|
|
|
|
/**
|
|
* @brief Get the state of a service by id.
|
|
* @param[in] id non-null service id
|
|
* @return the current state, or SERVICE_STATE_STOPPED if the id is unknown
|
|
*/
|
|
ServiceState service_manager_get_state(const char* id);
|
|
|
|
/**
|
|
* @brief Find the service instance
|
|
* @param[in] id non-null service id
|
|
* @return the instance when found, otherwise return NULL
|
|
*/
|
|
struct ServiceInstance* service_manager_find_instance(const char* id);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|