// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
#ifndef LIBPLDM_SRC_API_H
#define LIBPLDM_SRC_API_H

#include <libpldm/base.h>

#include <assert.h>
#include <errno.h>

/**
 * @brief Translate a negative errno value to a PLDM completion code
 *
 * Existing stable APIs often return errors in the form of PLDM completion
 * codes, which confuses the problems of the protocol with the problems of
 * the implementation. We're shifting to using negative errno values to signal
 * implementation errors. However, for existing stable APIs, provide a means to
 * translate between the two.
 *
 * @param[in] err - The negative errno to translate to a completion code
 *
 * @return An equivalent PLDM completion code for @p err
 */
static inline enum pldm_completion_codes pldm_xlate_errno(int err)
{
	enum pldm_completion_codes rc;

	assert(err < 0);
	switch (err) {
	case -EINVAL:
		rc = PLDM_ERROR_INVALID_DATA;
		break;
	case -ENOMSG:
		rc = PLDM_ERROR_INVALID_PLDM_TYPE;
		break;
	default:
		assert(false);
		rc = PLDM_ERROR;
		break;
	}

	assert(rc > 0);
	return rc;
}

#endif
