Add a new ResultCode corresponding to ErrorStatus::DEVICE_UNAVAILABLE

Bug: 120796109
Test: mm
Test: NeuralNetworksTest_static
Change-Id: I32575a625689668f9beffabff6b5e0055282c359
Merged-In: I32575a625689668f9beffabff6b5e0055282c359
(cherry picked from commit 70924898e4823d1def64088ee6f9bacb4021d352)
diff --git a/common/Utils.cpp b/common/Utils.cpp
index ebfbb8b..86909e8 100644
--- a/common/Utils.cpp
+++ b/common/Utils.cpp
@@ -2468,6 +2468,9 @@
         case ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE:
             return ErrorStatus::OUTPUT_INSUFFICIENT_SIZE;
 
+        case ANEURALNETWORKS_UNAVAILABLE_DEVICE:
+            return ErrorStatus::DEVICE_UNAVAILABLE;
+
         default:
             LOG(ERROR) << "Unknown result code " << resultCode
                        << " mapped to ErrorStatus::GENERAL_FAILURE";
@@ -2492,11 +2495,13 @@
         case ErrorStatus::OUTPUT_INSUFFICIENT_SIZE:
             return ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE;
 
+        case ErrorStatus::DEVICE_UNAVAILABLE:
+            return ANEURALNETWORKS_UNAVAILABLE_DEVICE;
+
         default:
             LOG(ERROR) << "Unknown ErrorStatus " << toString(status)
                        << " mapped to ANEURALNETWORKS_OP_FAILED";
             return ANEURALNETWORKS_OP_FAILED;
-        case ErrorStatus::DEVICE_UNAVAILABLE:
         case ErrorStatus::GENERAL_FAILURE:
             return ANEURALNETWORKS_OP_FAILED;
     }
diff --git a/runtime/NeuralNetworks.cpp b/runtime/NeuralNetworks.cpp
index c053fad..a1b1d24 100644
--- a/runtime/NeuralNetworks.cpp
+++ b/runtime/NeuralNetworks.cpp
@@ -135,6 +135,8 @@
 static_assert(ANEURALNETWORKS_UNMAPPABLE == 7, "ANEURALNETWORKS_UNMAPPABLE has changed");
 static_assert(ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE == 8,
               "ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE has changed");
+static_assert(ANEURALNETWORKS_UNAVAILABLE_DEVICE == 9,
+              "ANEURALNETWORKS_UNAVAILABLE_DEVICE has changed");
 
 static_assert(ANEURALNETWORKS_MAX_SIZE_OF_IMMEDIATELY_COPIED_VALUES == 128,
               "ANEURALNETWORKS_MAX_SIZE_OF_IMMEDIATELY_COPIED_VALUES has changed");
diff --git a/runtime/include/NeuralNetworks.h b/runtime/include/NeuralNetworks.h
index 4ceeb78..eb5661a 100644
--- a/runtime/include/NeuralNetworks.h
+++ b/runtime/include/NeuralNetworks.h
@@ -4355,6 +4355,11 @@
      * Failure caused by insufficient buffer size provided to a model output.
      */
     ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE = 8,
+
+    /**
+     * Failure caused by a device not being available.
+     */
+    ANEURALNETWORKS_UNAVAILABLE_DEVICE = 9,
 } ResultCode;
 
 /**
diff --git a/runtime/include/NeuralNetworksWrapper.h b/runtime/include/NeuralNetworksWrapper.h
index 0d6d815..2af57ec 100644
--- a/runtime/include/NeuralNetworksWrapper.h
+++ b/runtime/include/NeuralNetworksWrapper.h
@@ -62,6 +62,7 @@
     UNMAPPABLE = ANEURALNETWORKS_UNMAPPABLE,
     BAD_STATE = ANEURALNETWORKS_BAD_STATE,
     OUTPUT_INSUFFICIENT_SIZE = ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE,
+    UNAVAILABLE_DEVICE = ANEURALNETWORKS_UNAVAILABLE_DEVICE,
 };
 
 struct SymmPerChannelQuantParams {
diff --git a/runtime/test/TestExecution.cpp b/runtime/test/TestExecution.cpp
index d19df6b..67187fc 100644
--- a/runtime/test/TestExecution.cpp
+++ b/runtime/test/TestExecution.cpp
@@ -406,7 +406,7 @@
 
 auto kTestValues = ::testing::Values(
         std::make_tuple(ErrorStatus::NONE, Result::NO_ERROR),
-        std::make_tuple(ErrorStatus::DEVICE_UNAVAILABLE, Result::OP_FAILED),
+        std::make_tuple(ErrorStatus::DEVICE_UNAVAILABLE, Result::UNAVAILABLE_DEVICE),
         std::make_tuple(ErrorStatus::GENERAL_FAILURE, Result::OP_FAILED),
         std::make_tuple(ErrorStatus::OUTPUT_INSUFFICIENT_SIZE, Result::OUTPUT_INSUFFICIENT_SIZE),
         std::make_tuple(ErrorStatus::INVALID_ARGUMENT, Result::BAD_DATA));
diff --git a/runtime/test/TestNeuralNetworksWrapper.h b/runtime/test/TestNeuralNetworksWrapper.h
index cc6a331..bf854d7 100644
--- a/runtime/test/TestNeuralNetworksWrapper.h
+++ b/runtime/test/TestNeuralNetworksWrapper.h
@@ -63,6 +63,7 @@
     UNMAPPABLE = ANEURALNETWORKS_UNMAPPABLE,
     BAD_STATE = ANEURALNETWORKS_BAD_STATE,
     OUTPUT_INSUFFICIENT_SIZE = ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE,
+    UNAVAILABLE_DEVICE = ANEURALNETWORKS_UNAVAILABLE_DEVICE,
 };
 
 struct SymmPerChannelQuantParams {