Skip to content

Commit

Permalink
Merge "Inject getS2rS2dConfig through constructor." into main
Browse files Browse the repository at this point in the history
  • Loading branch information
Yu Shan authored and Gerrit Code Review committed Sep 23, 2024
2 parents 99bbeb8 + ffd3437 commit f74d991
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,18 +49,20 @@ 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();

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.
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -360,7 +367,7 @@ FakeVehicleHardware::FakeVehicleHardware(std::string defaultConfigDir,
mPendingGetValueRequests(this),
mPendingSetValueRequests(this),
mForceOverride(forceOverride) {
init();
init(s2rS2dConfig);
}

FakeVehicleHardware::~FakeVehicleHardware() {
Expand Down Expand Up @@ -388,15 +395,15 @@ 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()) {
VehiclePropConfig cfg = configDeclaration.config;
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; };
}
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit f74d991

Please sign in to comment.