mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 15:58:43 +00:00
Add WeaverReadStatus to WeaverReadResponse
Bug: 259556049
Change-Id: I83897038eda59ed8cae1bdb0ae68828201615ebc
(cherry picked from commit 5c3a2b710e)
Merged-In: I83897038eda59ed8cae1bdb0ae68828201615ebc
This commit is contained in:
committed by
Eric Biggers
parent
ac5fe6e8e8
commit
20c47b4bae
@@ -17,5 +17,10 @@ aidl_interface {
|
||||
platform_apis: true,
|
||||
},
|
||||
},
|
||||
versions: ["1"],
|
||||
versions_with_info: [
|
||||
{
|
||||
version: "1",
|
||||
imports: [],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 <name>-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,
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
26
weaver/aidl/android/hardware/weaver/WeaverReadStatus.aidl
Normal file
26
weaver/aidl/android/hardware/weaver/WeaverReadStatus.aidl
Normal file
@@ -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,
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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<uint8_t> 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);
|
||||
|
||||
Reference in New Issue
Block a user