Loading automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h +8 −12 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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. Loading Loading @@ -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; Loading Loading @@ -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. Loading automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp +10 −7 Original line number Diff line number Diff line Loading @@ -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), Loading @@ -360,7 +367,7 @@ FakeVehicleHardware::FakeVehicleHardware(std::string defaultConfigDir, mPendingGetValueRequests(this), mPendingSetValueRequests(this), mForceOverride(forceOverride) { init(); init(s2rS2dConfig); } FakeVehicleHardware::~FakeVehicleHardware() { Loading Loading @@ -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()) { Loading @@ -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; }; } Loading Loading @@ -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) { Loading automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading
automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h +8 −12 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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. Loading Loading @@ -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; Loading Loading @@ -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. Loading
automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp +10 −7 Original line number Diff line number Diff line Loading @@ -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), Loading @@ -360,7 +367,7 @@ FakeVehicleHardware::FakeVehicleHardware(std::string defaultConfigDir, mPendingGetValueRequests(this), mPendingSetValueRequests(this), mForceOverride(forceOverride) { init(); init(s2rS2dConfig); } FakeVehicleHardware::~FakeVehicleHardware() { Loading Loading @@ -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()) { Loading @@ -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; }; } Loading Loading @@ -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) { Loading
automotive/vehicle/aidl/impl/fake_impl/hardware/test/FakeVehicleHardwareTest.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; Loading Loading @@ -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 Loading