| %% 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, |
| }; |