1/* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.hardware.neuralnetworks@1.3; 18 19import @1.2::IPreparedModelCallback; 20import IPreparedModel; 21 22/** 23 * IPreparedModelCallback must be used to return a prepared model produced by an 24 * asynchronous task launched from IDevice::prepareModel. 25 */ 26interface IPreparedModelCallback extends @1.2::IPreparedModelCallback { 27 28 /** 29 * There are three notify methods declared for the IPreparedModelCallback 30 * interface: notify_1_3, notify_1_2, and notify. One of the three 31 * notify methods must be invoked immediately after the asynchronous 32 * task holding this callback has finished preparing the model. If the model was 33 * successfully prepared, one of the notify methods must be invoked with 34 * ErrorStatus::NONE and the prepared model. If the model was not able to be 35 * successfully prepared, one of the notify methods must be invoked with the 36 * appropriate ErrorStatus and nullptr as the IPreparedModel. If the asynchronous 37 * task holding this callback fails to launch or if the model provided to 38 * IDevice::prepareModel is invalid, one of the notify methods must be invoked 39 * with the appropriate error as well as nullptr for the IPreparedModel. 40 * 41 * @param status Error status returned from the asynchronous model 42 * preparation task; must be: 43 * - NONE if the asynchronous task successfully prepared the 44 * model 45 * - DEVICE_UNAVAILABLE if driver is offline or busy 46 * - GENERAL_FAILURE if the asynchronous task resulted in an 47 * unspecified error 48 * - INVALID_ARGUMENT if one of the input arguments to 49 * prepareModel is invalid 50 * - MISSED_DEADLINE_* if the preparation is aborted because 51 * the model cannot be prepared by the deadline 52 * - RESOURCE_EXHAUSTED_* if the task was aborted by the 53 * driver 54 * @param preparedModel A model that has been asynchronously prepared for 55 * execution. If the model was unable to be prepared 56 * due to an error, nullptr must be passed in place of 57 * the IPreparedModel object. 58 */ 59 oneway notify_1_3(ErrorStatus status, IPreparedModel preparedModel); 60}; 61