nnfw_session::~nnfw_session() = default;
-NNFW_STATUS nnfw_session::load_model_from_file(const char *package_dir)
+NNFW_STATUS nnfw_session::load_circle_from_buffer(uint8_t *buffer, size_t size)
{
if (!isStateInitialized())
+ return NNFW_STATUS_INVALID_STATE;
+
+ if (!buffer)
+ return NNFW_STATUS_UNEXPECTED_NULL;
+
+ if (size == 0)
return NNFW_STATUS_ERROR;
+ _subgraphs = onert::circle_loader::loadModel(buffer, size);
+ _compiler = std::make_unique<onert::compiler::Compiler>(_subgraphs);
+
+ _state = State::MODEL_LOADED;
+ return NNFW_STATUS_NO_ERROR;
+}
+
+NNFW_STATUS nnfw_session::load_model_from_file(const char *package_dir)
+{
+ if (!isStateInitialized())
+ return NNFW_STATUS_INVALID_STATE;
+
if (!package_dir)
{
std::cerr << "package_dir is null." << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_UNEXPECTED_NULL;
}
if (!null_terminating(package_dir, MAX_PATH_LENGTH))
std::cerr << "invalid state";
}
std::cerr << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
}
if (!_subgraphs || !primary_subgraph() || primary_subgraph()->isBuildingPhase())
{
std::cerr << "Error during nnfw_session::run : "
<< "run should be run after prepare" << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
}
try
{
std::cerr << "Error during nnfw_session::run_async : "
<< "run_async should be run after prepare" << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
}
_execution->startExecute();
if (!isStatePreparedOrFinishedRun())
{
std::cerr << "Error during nnfw_session::set_input : invalid state" << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
}
if (!buffer && length != 0)
if (!isStatePreparedOrFinishedRun())
{
std::cerr << "Error during nnfw_session::set_output : invalid state" << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
}
if (!buffer && length != 0)
NNFW_STATUS nnfw_session::input_size(uint32_t *number)
{
if (isStateInitialized()) // Model is not loaded
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
try
{
if (number == nullptr)
{
std::cerr << "Error during nnfw_session::input_size, number is null pointer." << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_UNEXPECTED_NULL;
}
*number = primary_subgraph()->getInputs().size();
}
NNFW_STATUS nnfw_session::output_size(uint32_t *number)
{
if (isStateInitialized()) // Model is not loaded
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
try
{
if (number == nullptr)
{
std::cerr << "Error during nnfw_session::output_size, number is null pointer." << std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_UNEXPECTED_NULL;
}
*number = primary_subgraph()->getOutputs().size();
}
{
std::cerr << "Error during set_input_tensorinfo : should be run after load_model"
<< std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
}
if (ti.rank <= 0 || ti.rank > NNFW_MAX_RANK)
NNFW_STATUS nnfw_session::input_tensorinfo(uint32_t index, nnfw_tensorinfo *ti)
{
+ if (isStateInitialized())
+ return NNFW_STATUS_INVALID_STATE;
+
try
{
if (ti == nullptr)
{
std::cerr << "Error during nnfw_session::input_tensorinfo, tensorinfo is null pointer."
<< std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_UNEXPECTED_NULL;
}
if (index >= primary_subgraph()->getInputs().size())
{
NNFW_STATUS nnfw_session::output_tensorinfo(uint32_t index, nnfw_tensorinfo *ti)
{
if (isStateInitialized())
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
if (ti == nullptr)
{
std::cerr << "Error during nnfw_session::output_tensorinfo, tensorinfo is null pointer."
<< std::endl;
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_UNEXPECTED_NULL;
}
if (index >= primary_subgraph()->getOutputs().size())
NNFW_STATUS nnfw_session::set_available_backends(const char *backends)
{
if (!isStateModelLoaded())
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
try
{
- if (!backends || null_terminating(backends, MAX_BACKEND_NAME_LENGTH) == false)
- {
+ if (!backends)
+ return NNFW_STATUS_UNEXPECTED_NULL;
+ if (null_terminating(backends, MAX_BACKEND_NAME_LENGTH) == false)
return NNFW_STATUS_ERROR;
- }
auto &options = _compiler->options();
NNFW_STATUS nnfw_session::set_op_backend(const char *op, const char *backend)
{
if (!isStateModelLoaded())
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
try
{
- if (!op || !null_terminating(op, MAX_OP_NAME_LENGTH) || !backend ||
+ if (!op || !backend)
+ return NNFW_STATUS_UNEXPECTED_NULL;
+ if (!null_terminating(op, MAX_OP_NAME_LENGTH) ||
!null_terminating(backend, MAX_BACKEND_NAME_LENGTH))
- {
return NNFW_STATUS_ERROR;
- }
auto key = get_op_backend_string(op);
NNFW_STATUS nnfw_session::set_config(const char *key, const char *value)
{
if (!isStateModelLoaded())
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
+
+ if (!key || !value)
+ return NNFW_STATUS_UNEXPECTED_NULL;
auto &options = _compiler->options();
NNFW_STATUS nnfw_session::get_config(const char *key, char *value, size_t value_size)
{
if (!isStateModelLoaded())
- return NNFW_STATUS_ERROR;
+ return NNFW_STATUS_INVALID_STATE;
+
+ if (!key || !value)
+ return NNFW_STATUS_UNEXPECTED_NULL;
auto &options = _compiler->options();