Packages

QNN (Qualcomm AI Engine Direct) NIF bindings for the Hexagon NPU (QCS6490/HTP)

Current section

Files

Jump to
hexagon_tpu c_src qnn_error.hpp
Raw

c_src/qnn_error.hpp

#ifndef QNN_ERROR_HPP
#define QNN_ERROR_HPP
#include <erl_nif.h>
#include "QnnCommon.h"
#include "nif_utils.hpp"
#include "qnn_api.hpp"
// Build {:error, {:qnn, code, message}} from a QNN error handle.
// The message comes from errorGetMessage when the backend provides it.
inline ERL_NIF_TERM qnn_error_term(ErlNifEnv *env, const QnnApi &api, Qnn_ErrorHandle_t err) {
uint32_t code = static_cast<uint32_t>(err & 0xFFFF'FFFF);
const char *message = nullptr;
if (api.fn.errorGetMessage) {
api.fn.errorGetMessage(err, &message);
}
ERL_NIF_TERM detail = enif_make_tuple3(
env,
enif_make_atom(env, "qnn"),
enif_make_uint(env, code),
erlang::nif::make_binary(env, message ? message : ""));
return erlang::nif::error(env, detail);
}
#endif // QNN_ERROR_HPP