blob: 96d1a1b975fdce1863d95b89364e561bf9267856 [file] [log] [blame]
%% template file for generating types.hal.
%% see frameworks/ml/nn/tools/api/README.md.
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.neuralnetworks@1.3;
import @1.0::DataLocation;
import @1.0::ErrorStatus;
import @1.0::PerformanceInfo;
import @1.0::RequestArgument;
import @1.2::Model.ExtensionNameAndPrefix;
import @1.2::Model.ExtensionTypeEncoding;
import @1.2::Operand.ExtraParams;
import @1.2::OperandType;
import @1.2::OperationType;
import android.hidl.safe_union@1.0::Monostate;
enum OperandType : @1.2::OperandType {
%insert Operand_1.3
%insert OEMDeprecationAndOperandTypeRangeMaxComment
};
/**
* The range of operand values in the OperandType enum.
*/
enum OperandTypeRange : uint32_t {
BASE_MIN = 0,
FUNDAMENTAL_MIN = 0,
%insert Operand_1.3_MAX
OEM_MIN = 10000,
OEM_MAX = 10001,
BASE_MAX = 0xFFFF,
};
/**
* Operation types.
*
* The type of an operation in a model.
*/
enum OperationType : int32_t {
%insert Operation_1.0
%insert Operation_1.1
%insert Operation_1.2
%insert Operation_1.3
/**
* DEPRECATED. Since NNAPI 1.2, extensions are the preferred alternative to
* OEM operation and data types.
*
* This operation is OEM specific. It should only be used for OEM
* applications.
*/
OEM_OPERATION = @1.2::OperationType:OEM_OPERATION,
/* ADDING A NEW FUNDAMENTAL OPERATION REQUIRES UPDATING THE VALUE OF
* OperationTypeRange::FUNDAMENTAL_MAX.
*/
/* ADDING A NEW OEM OPERATION REQUIRES UPDATING THE VALUE OF
* OperationTypeRange::OEM_MAX.
*/
};
/**
* The range of values in the OperationType enum.
*/
enum OperationTypeRange : uint32_t {
BASE_MIN = 0,
FUNDAMENTAL_MIN = 0,
%insert Operation_1.3_MAX
OEM_MIN = 10000,
OEM_MAX = 10000,
BASE_MAX = 0xFFFF,
};
%insert Priority
%insert Capabilities
%insert Operation
%insert OperandLifeTime
%insert Operand
%insert Model
%insert Subgraph
%insert BufferDesc
%insert BufferRole
%insert Request
/**
* Optional time point of the steady clock (as from std::chrono::steady_clock)
* measured in nanoseconds.
*/
safe_union OptionalTimePoint {
/** No time point provided. */
Monostate none;
/**
* Time point of the steady clock (as from std::chrono::steady_clock)
* measured in nanoseconds.
*/
uint64_t nanosecondsSinceEpoch;
};
/**
* Optional timeout duration measured in nanoseconds.
*/
safe_union OptionalTimeoutDuration {
/** No time point provided. */
Monostate none;
/**
* Timeout duration measured in nanoseconds.
*/
uint64_t nanoseconds;
};
/**
* Return status of a function.
*/
enum ErrorStatus : @1.0::ErrorStatus {
/**
* Failure because a deadline could not be met for a task, but future
* deadlines may still be met for the same task after a short delay.
*/
MISSED_DEADLINE_TRANSIENT,
/**
* Failure because a deadline could not be met for a task, and future
* deadlines will likely also not be met for the same task even after a
* short delay.
*/
MISSED_DEADLINE_PERSISTENT,
/**
* Failure because of a resource limitation within the driver, but future
* calls for the same task may still succeed after a short delay.
*/
RESOURCE_EXHAUSTED_TRANSIENT,
/**
* Failure because of a resource limitation within the driver, and future
* calls for the same task will likely also fail even after a short
* delay.
*/
RESOURCE_EXHAUSTED_PERSISTENT,
};
/**
* Each {@link OperationType::WHILE} operation in the model has an implicit
* execution timeout duration associated with it ("loop timeout duration").
* This duration is configurable on a per-execution basis and must not exceed
* 15 seconds. The default value is 2 seconds.
*/
enum LoopTimeoutDurationNs : uint64_t {
DEFAULT = 2000000000,
MAXIMUM = 15000000000,
};