73 lines
1.6 KiB
C
73 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2021 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_INCLUDE_IPC_SERVICE_IPC_SERVICE_BACKEND_H_
|
|
#define ZEPHYR_INCLUDE_IPC_SERVICE_IPC_SERVICE_BACKEND_H_
|
|
|
|
#include <ipc/ipc_service.h>
|
|
#include <stdio.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief IPC Service backend
|
|
* @ingroup ipc_service_api
|
|
* @{
|
|
*/
|
|
|
|
/** @brief IPC backend configuration structure.
|
|
*
|
|
* This structure is used for configuration backend during registration.
|
|
*/
|
|
struct ipc_service_backend {
|
|
/** @brief Name of the IPC backend. */
|
|
const char *name;
|
|
|
|
/** @brief Pointer to the function that will be used to send data to the endpoint.
|
|
*
|
|
* @param ept Registered endpoint.
|
|
* @param data Pointer to the buffer to send.
|
|
* @param len Number of bytes to send.
|
|
*
|
|
* @retval Status code.
|
|
*/
|
|
int (*send)(struct ipc_ept *ept, const void *data, size_t len);
|
|
|
|
/** @brief Pointer to the function that will be used to register endpoints.
|
|
*
|
|
* @param ept Endpoint object.
|
|
* @param cfg Endpoint configuration.
|
|
*
|
|
* @retval Status code.
|
|
*/
|
|
int (*register_endpoint)(struct ipc_ept **ept, const struct ipc_ept_cfg *cfg);
|
|
};
|
|
|
|
/** @brief IPC backend registration.
|
|
*
|
|
* Registration must be done before using IPC Service.
|
|
*
|
|
* @param backend Configuration of the backend.
|
|
*
|
|
* @retval -EALREADY The backend is already registered.
|
|
* @retval -EINVAL The backend configuration is incorrect.
|
|
* @retval Zero on success.
|
|
*
|
|
*/
|
|
int ipc_service_register_backend(const struct ipc_service_backend *backend);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ZEPHYR_INCLUDE_IPC_SERVICE_IPC_SERVICE_BACKEND_H_ */
|