powerstats: Add GPS state residency am: 3cc937165b

Original change: https://googleplex-android-review.googlesource.com/c/device/google/gs101/+/14106467

Change-Id: I76e52507e36936de5edd2f47570223a0e18e7e19
This commit is contained in:
Benjamin Schwartz 2021-04-15 05:21:05 +00:00 committed by Automerger Merge Worker
commit 93ca4737a6
2 changed files with 33 additions and 0 deletions

View file

@ -169,6 +169,9 @@ on init
# Charge stats (write 0) # Charge stats (write 0)
chown system system /sys/class/power_supply/battery/charge_stats chown system system /sys/class/power_supply/battery/charge_stats
# Power Stats HAL
chown system system /dev/bbd_pwrstat
# start watchdogd # start watchdogd
start watchdogd start watchdogd

View file

@ -494,6 +494,36 @@ void addMobileRadio(std::shared_ptr<PowerStats> p)
void addGNSS(std::shared_ptr<PowerStats> p) void addGNSS(std::shared_ptr<PowerStats> p)
{ {
// A constant to represent the number of microseconds in one millisecond.
const int US_TO_MS = 1000;
// gnss power_stats are reported in microseconds. The transform function
// converts microseconds to milliseconds.
std::function<uint64_t(uint64_t)> gnssUsToMs = [](uint64_t a) { return a / US_TO_MS; };
const GenericStateResidencyDataProvider::StateResidencyConfig gnssStateConfig = {
.entryCountSupported = true,
.entryCountPrefix = "count:",
.totalTimeSupported = true,
.totalTimePrefix = "duration_usec:",
.totalTimeTransform = gnssUsToMs,
.lastEntrySupported = true,
.lastEntryPrefix = "last_entry_timestamp_usec:",
.lastEntryTransform = gnssUsToMs,
};
const std::vector<std::pair<std::string, std::string>> gnssStateHeaders = {
std::make_pair("ON", "GPS_ON:"),
std::make_pair("OFF", "GPS_OFF:"),
};
std::vector<GenericStateResidencyDataProvider::PowerEntityConfig> cfgs;
cfgs.emplace_back(generateGenericStateResidencyConfigs(gnssStateConfig, gnssStateHeaders),
"GPS", "");
p->addStateResidencyDataProvider(std::make_unique<GenericStateResidencyDataProvider>(
"/dev/bbd_pwrstat", cfgs));
p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p, p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p,
EnergyConsumerType::GNSS, "GPS", {"L9S_GNSS_CORE"})); EnergyConsumerType::GNSS, "GPS", {"L9S_GNSS_CORE"}));
} }