From 20c47b4bae6909f99b523850dc5ea1c3ac2f8084 Mon Sep 17 00:00:00 2001 From: ChengYou Ho Date: Wed, 30 Nov 2022 17:51:17 +0000 Subject: [PATCH] Add WeaverReadStatus to WeaverReadResponse Bug: 259556049 Change-Id: I83897038eda59ed8cae1bdb0ae68828201615ebc (cherry picked from commit 5c3a2b710ef80c109e9ff95b48ff112a68dd2ee4) Merged-In: I83897038eda59ed8cae1bdb0ae68828201615ebc --- weaver/aidl/Android.bp | 7 +++- .../hardware/weaver/WeaverReadResponse.aidl | 3 +- .../hardware/weaver/WeaverReadStatus.aidl | 41 +++++++++++++++++++ .../hardware/weaver/WeaverReadResponse.aidl | 11 ++++- .../hardware/weaver/WeaverReadStatus.aidl | 26 ++++++++++++ weaver/aidl/vts/Android.bp | 2 +- weaver/aidl/vts/VtsHalWeaverTargetTest.cpp | 28 +++++++++---- 7 files changed, 104 insertions(+), 14 deletions(-) create mode 100644 weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadStatus.aidl create mode 100644 weaver/aidl/android/hardware/weaver/WeaverReadStatus.aidl diff --git a/weaver/aidl/Android.bp b/weaver/aidl/Android.bp index caa92aa9b4..74cec99f7d 100644 --- a/weaver/aidl/Android.bp +++ b/weaver/aidl/Android.bp @@ -17,5 +17,10 @@ aidl_interface { platform_apis: true, }, }, - versions: ["1"], + versions_with_info: [ + { + version: "1", + imports: [], + }, + ], } diff --git a/weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadResponse.aidl b/weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadResponse.aidl index 47ee4c8a13..96e528fa30 100644 --- a/weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadResponse.aidl +++ b/weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadResponse.aidl @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright 2022 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. @@ -36,4 +36,5 @@ package android.hardware.weaver; parcelable WeaverReadResponse { long timeout; byte[] value; + android.hardware.weaver.WeaverReadStatus status = android.hardware.weaver.WeaverReadStatus.FAILED; } diff --git a/weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadStatus.aidl b/weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadStatus.aidl new file mode 100644 index 0000000000..fce9758f5c --- /dev/null +++ b/weaver/aidl/aidl_api/android.hardware.weaver/current/android/hardware/weaver/WeaverReadStatus.aidl @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2022 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.weaver; +@Backing(type="int") @VintfStability +enum WeaverReadStatus { + OK = 0, + FAILED = 1, + INCORRECT_KEY = 2, + THROTTLE = 3, +} diff --git a/weaver/aidl/android/hardware/weaver/WeaverReadResponse.aidl b/weaver/aidl/android/hardware/weaver/WeaverReadResponse.aidl index ec006e8c45..17ea718089 100644 --- a/weaver/aidl/android/hardware/weaver/WeaverReadResponse.aidl +++ b/weaver/aidl/android/hardware/weaver/WeaverReadResponse.aidl @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright 2022 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. @@ -16,15 +16,22 @@ package android.hardware.weaver; +import android.hardware.weaver.WeaverReadStatus; + @VintfStability parcelable WeaverReadResponse { /** - * The time to wait, in milliseconds, before making the next request. + * The time to wait, in milliseconds, before making the next request, + * must be greater than or equal to zero and less than INT_MAX. */ long timeout; /** * The value read from the slot or empty if the value was not read. */ byte[] value; + /** + * Status from WeaverReadStatus + */ + WeaverReadStatus status = WeaverReadStatus.FAILED; } diff --git a/weaver/aidl/android/hardware/weaver/WeaverReadStatus.aidl b/weaver/aidl/android/hardware/weaver/WeaverReadStatus.aidl new file mode 100644 index 0000000000..36e731fabe --- /dev/null +++ b/weaver/aidl/android/hardware/weaver/WeaverReadStatus.aidl @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2022 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.weaver; + +@VintfStability +@Backing(type="int") +enum WeaverReadStatus { + OK, + FAILED, + INCORRECT_KEY, + THROTTLE, +} diff --git a/weaver/aidl/vts/Android.bp b/weaver/aidl/vts/Android.bp index cf1661ce1e..557fe47aa7 100644 --- a/weaver/aidl/vts/Android.bp +++ b/weaver/aidl/vts/Android.bp @@ -34,7 +34,7 @@ cc_test { "libbinder_ndk", "libbase", ], - static_libs: ["android.hardware.weaver-V1-ndk"], + static_libs: ["android.hardware.weaver-V2-ndk"], test_suites: [ "general-tests", "vts", diff --git a/weaver/aidl/vts/VtsHalWeaverTargetTest.cpp b/weaver/aidl/vts/VtsHalWeaverTargetTest.cpp index 878c76203f..f016515a6a 100644 --- a/weaver/aidl/vts/VtsHalWeaverTargetTest.cpp +++ b/weaver/aidl/vts/VtsHalWeaverTargetTest.cpp @@ -25,6 +25,7 @@ using ::aidl::android::hardware::weaver::IWeaver; using ::aidl::android::hardware::weaver::WeaverConfig; using ::aidl::android::hardware::weaver::WeaverReadResponse; +using ::aidl::android::hardware::weaver::WeaverReadStatus; using ::ndk::SpAIBinder; @@ -102,14 +103,17 @@ TEST_P(WeaverAidlTest, WriteFollowedByReadGivesTheSameValue) { WeaverReadResponse response; std::vector readValue; uint32_t timeout; + WeaverReadStatus status; const auto readRet = weaver->read(slotId, KEY, &response); readValue = response.value; timeout = response.timeout; + status = response.status; ASSERT_TRUE(readRet.isOk()); EXPECT_EQ(readValue, VALUE); EXPECT_EQ(timeout, 0u); + EXPECT_EQ(status, WeaverReadStatus::OK); } /* @@ -128,14 +132,17 @@ TEST_P(WeaverAidlTest, OverwritingSlotUpdatesTheValue) { WeaverReadResponse response; std::vector readValue; uint32_t timeout; + WeaverReadStatus status; const auto readRet = weaver->read(slotId, KEY, &response); readValue = response.value; timeout = response.timeout; + status = response.status; ASSERT_TRUE(readRet.isOk()); EXPECT_EQ(readValue, OTHER_VALUE); EXPECT_EQ(timeout, 0u); + EXPECT_EQ(status, WeaverReadStatus::OK); } /* @@ -149,15 +156,16 @@ TEST_P(WeaverAidlTest, WriteFollowedByReadWithWrongKeyDoesNotGiveTheValue) { WeaverReadResponse response; std::vector readValue; + WeaverReadStatus status; const auto readRet = weaver->read(slotId, WRONG_KEY, &response); readValue = response.value; + status = response.status; - ASSERT_FALSE(readRet.isOk()); - ASSERT_EQ(EX_SERVICE_SPECIFIC, readRet.getExceptionCode()); - ASSERT_EQ(IWeaver::STATUS_INCORRECT_KEY, readRet.getServiceSpecificError()); + ASSERT_TRUE(readRet.isOk()); EXPECT_TRUE(readValue.empty()); + EXPECT_EQ(status, WeaverReadStatus::INCORRECT_KEY); } /* @@ -193,17 +201,18 @@ TEST_P(WeaverAidlTest, ReadingFromInvalidSlotFails) { WeaverReadResponse response; std::vector readValue; uint32_t timeout; + WeaverReadStatus status; const auto readRet = weaver->read(config.slots, KEY, &response); readValue = response.value; timeout = response.timeout; + status = response.status; - ASSERT_FALSE(readRet.isOk()); - ASSERT_EQ(EX_SERVICE_SPECIFIC, readRet.getExceptionCode()); - ASSERT_EQ(IWeaver::STATUS_FAILED, readRet.getServiceSpecificError()); + ASSERT_TRUE(readRet.isOk()); EXPECT_TRUE(readValue.empty()); EXPECT_EQ(timeout, 0u); + EXPECT_EQ(status, WeaverReadStatus::FAILED); } /* @@ -250,17 +259,18 @@ TEST_P(WeaverAidlTest, ReadWithTooLargeKeyFails) { WeaverReadResponse response; std::vector readValue; uint32_t timeout; + WeaverReadStatus status; const auto readRet = weaver->read(slotId, bigKey, &response); readValue = response.value; timeout = response.timeout; + status = response.status; - ASSERT_FALSE(readRet.isOk()); - ASSERT_EQ(EX_SERVICE_SPECIFIC, readRet.getExceptionCode()); - ASSERT_EQ(IWeaver::STATUS_FAILED, readRet.getServiceSpecificError()); + ASSERT_TRUE(readRet.isOk()); EXPECT_TRUE(readValue.empty()); EXPECT_EQ(timeout, 0u); + EXPECT_EQ(status, WeaverReadStatus::FAILED); } GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(WeaverAidlTest);