mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Inject getS2rS2dConfig through constructor.
getS2rS2dConfig is used during FakeVehicleHardware constructor so at that point the subclass is not initialized yet and it cannot call into subclass's virtual methods. We need to inject the function directly into constructor. Flag: EXEMPT reference HAL Test: atest FakeVehicleHardwareTest Bug: 365994148 Change-Id: I79b9a22a2f60239e192c9f5fd4aad7338abae490
This commit is contained in:
@@ -49,11 +49,6 @@ namespace fake {
|
||||
|
||||
class FakeVehicleHardware : public IVehicleHardware {
|
||||
public:
|
||||
// Supports Suspend_to_ram.
|
||||
static constexpr int32_t SUPPORT_S2R = 0x1;
|
||||
// Supports Suspend_to_disk.
|
||||
static constexpr int32_t SUPPORT_S2D = 0x4;
|
||||
|
||||
using ValueResultType = VhalResult<VehiclePropValuePool::RecyclableType>;
|
||||
|
||||
FakeVehicleHardware();
|
||||
@@ -61,6 +56,13 @@ class FakeVehicleHardware : public IVehicleHardware {
|
||||
FakeVehicleHardware(std::string defaultConfigDir, std::string overrideConfigDir,
|
||||
bool forceOverride);
|
||||
|
||||
// s2rS2dConfig is the config for whether S2R or S2D is supported, must be a bit flag combining
|
||||
// values from VehicleApPowerStateConfigFlag.
|
||||
// The default implementation is reading this from system property:
|
||||
// "ro.vendor.fake_vhal.ap_power_state_req.config".
|
||||
FakeVehicleHardware(std::string defaultConfigDir, std::string overrideConfigDir,
|
||||
bool forceOverride, int32_t s2rS2dConfig);
|
||||
|
||||
~FakeVehicleHardware();
|
||||
|
||||
// Get all the property configs.
|
||||
@@ -122,12 +124,6 @@ class FakeVehicleHardware : public IVehicleHardware {
|
||||
|
||||
bool UseOverrideConfigDir();
|
||||
|
||||
// Gets the config whether S2R or S2D is supported, must returns a bit flag made up of
|
||||
// SUPPORT_S2R and SUPPORT_S2D, for example, 0x0 means no support, 0x5 means support both.
|
||||
// The default implementation is reading this from system property:
|
||||
// "ro.vendor.fake_vhal.ap_power_state_req.config".
|
||||
int32_t getS2rS2dConfig();
|
||||
|
||||
private:
|
||||
// Expose private methods to unit test.
|
||||
friend class FakeVehicleHardwareTestHelper;
|
||||
@@ -204,7 +200,7 @@ class FakeVehicleHardware : public IVehicleHardware {
|
||||
// provides power controlling related properties.
|
||||
std::string mPowerControllerServiceAddress = "";
|
||||
|
||||
void init();
|
||||
void init(int32_t s2rS2dConfig);
|
||||
// Stores the initial value to property store.
|
||||
void storePropInitialValue(const ConfigDeclaration& config);
|
||||
// The callback that would be called when a vehicle property value change happens.
|
||||
|
||||
@@ -348,6 +348,13 @@ FakeVehicleHardware::FakeVehicleHardware()
|
||||
|
||||
FakeVehicleHardware::FakeVehicleHardware(std::string defaultConfigDir,
|
||||
std::string overrideConfigDir, bool forceOverride)
|
||||
: FakeVehicleHardware(defaultConfigDir, overrideConfigDir, forceOverride,
|
||||
/*s2rS2dConfig=*/
|
||||
GetIntProperty(POWER_STATE_REQ_CONFIG_PROPERTY, /*default_value=*/0)) {}
|
||||
|
||||
FakeVehicleHardware::FakeVehicleHardware(std::string defaultConfigDir,
|
||||
std::string overrideConfigDir, bool forceOverride,
|
||||
int32_t s2rS2dConfig)
|
||||
: mValuePool(std::make_unique<VehiclePropValuePool>()),
|
||||
mServerSidePropStore(new VehiclePropertyStore(mValuePool)),
|
||||
mDefaultConfigDir(defaultConfigDir),
|
||||
@@ -360,7 +367,7 @@ FakeVehicleHardware::FakeVehicleHardware(std::string defaultConfigDir,
|
||||
mPendingGetValueRequests(this),
|
||||
mPendingSetValueRequests(this),
|
||||
mForceOverride(forceOverride) {
|
||||
init();
|
||||
init(s2rS2dConfig);
|
||||
}
|
||||
|
||||
FakeVehicleHardware::~FakeVehicleHardware() {
|
||||
@@ -388,7 +395,7 @@ std::unordered_map<int32_t, ConfigDeclaration> FakeVehicleHardware::loadConfigDe
|
||||
return configsByPropId;
|
||||
}
|
||||
|
||||
void FakeVehicleHardware::init() {
|
||||
void FakeVehicleHardware::init(int32_t s2rS2dConfig) {
|
||||
maybeGetGrpcServiceInfo(&mPowerControllerServiceAddress);
|
||||
|
||||
for (auto& [_, configDeclaration] : loadConfigDeclarations()) {
|
||||
@@ -396,7 +403,7 @@ void FakeVehicleHardware::init() {
|
||||
VehiclePropertyStore::TokenFunction tokenFunction = nullptr;
|
||||
|
||||
if (cfg.prop == toInt(VehicleProperty::AP_POWER_STATE_REQ)) {
|
||||
cfg.configArray[0] = getS2rS2dConfig();
|
||||
cfg.configArray[0] = s2rS2dConfig;
|
||||
} else if (cfg.prop == OBD2_FREEZE_FRAME) {
|
||||
tokenFunction = [](const VehiclePropValue& propValue) { return propValue.timestamp; };
|
||||
}
|
||||
@@ -425,10 +432,6 @@ void FakeVehicleHardware::init() {
|
||||
});
|
||||
}
|
||||
|
||||
int32_t FakeVehicleHardware::getS2rS2dConfig() {
|
||||
return GetIntProperty(POWER_STATE_REQ_CONFIG_PROPERTY, /*default_value=*/0);
|
||||
}
|
||||
|
||||
std::vector<VehiclePropConfig> FakeVehicleHardware::getAllPropertyConfigs() const {
|
||||
std::vector<VehiclePropConfig> allConfigs = mServerSidePropStore->getAllConfigs();
|
||||
if (mAddExtraTestVendorConfigs) {
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <FakeUserHal.h>
|
||||
#include <PropertyUtils.h>
|
||||
|
||||
#include <aidl/android/hardware/automotive/vehicle/VehicleApPowerStateConfigFlag.h>
|
||||
#include <aidl/android/hardware/automotive/vehicle/VehicleApPowerStateShutdownParam.h>
|
||||
#include <android/hardware/automotive/vehicle/TestVendorProperty.h>
|
||||
|
||||
@@ -73,6 +74,7 @@ using ::aidl::android::hardware::automotive::vehicle::SetValueRequest;
|
||||
using ::aidl::android::hardware::automotive::vehicle::SetValueResult;
|
||||
using ::aidl::android::hardware::automotive::vehicle::StatusCode;
|
||||
using ::aidl::android::hardware::automotive::vehicle::SubscribeOptions;
|
||||
using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateConfigFlag;
|
||||
using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReport;
|
||||
using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateReq;
|
||||
using ::aidl::android::hardware::automotive::vehicle::VehicleApPowerStateShutdownParam;
|
||||
@@ -3863,6 +3865,25 @@ TEST_F(FakeVehicleHardwareTest, testSetHvacTemperatureValueSuggestion) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(FakeVehicleHardwareTest, testOverrideApPowerStateReqConfig) {
|
||||
auto hardware = std::make_unique<FakeVehicleHardware>(
|
||||
android::base::GetExecutableDirectory(),
|
||||
/*overrideConfigDir=*/"",
|
||||
/*forceOverride=*/false,
|
||||
toInt(VehicleApPowerStateConfigFlag::ENABLE_DEEP_SLEEP_FLAG) |
|
||||
toInt(VehicleApPowerStateConfigFlag::ENABLE_HIBERNATION_FLAG));
|
||||
|
||||
std::vector<VehiclePropConfig> configs = hardware->getAllPropertyConfigs();
|
||||
|
||||
for (const auto& config : configs) {
|
||||
if (config.prop != toInt(VehicleProperty::AP_POWER_STATE_REQ)) {
|
||||
continue;
|
||||
}
|
||||
ASSERT_EQ(config.configArray[0], 0x5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace fake
|
||||
} // namespace vehicle
|
||||
} // namespace automotive
|
||||
|
||||
Reference in New Issue
Block a user