blob: d4f97cbc00657ca2173e0b60124a5d4ee3d21861 [file] [log] [blame]
/*
* 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_ */