diff --git a/powerstats/Android.bp b/powerstats/Android.bp index fa73e51d..07e16f10 100644 --- a/powerstats/Android.bp +++ b/powerstats/Android.bp @@ -81,7 +81,6 @@ cc_binary { "liblog", "libutils", "libbinder_ndk", - "pixel_stateresidency_provider_aidl_interface-ndk_platform", "android.hardware.power.stats-V1-ndk_platform", ], relative_install_path: "hw", diff --git a/powerstats/serviceaidl.cpp b/powerstats/serviceaidl.cpp index 3a26065c..25eb6eaf 100644 --- a/powerstats/serviceaidl.cpp +++ b/powerstats/serviceaidl.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -38,7 +37,6 @@ using aidl::android::hardware::power::stats::DvfsStateResidencyDataProvider; using aidl::android::hardware::power::stats::EnergyConsumerType; using aidl::android::hardware::power::stats::GenericStateResidencyDataProvider; using aidl::android::hardware::power::stats::IioEnergyMeterDataProvider; -using aidl::android::hardware::power::stats::PixelStateResidencyDataProvider; using aidl::android::hardware::power::stats::PowerStats; using aidl::android::hardware::power::stats::PowerStatsEnergyConsumer; @@ -56,8 +54,7 @@ void addAoC(std::shared_ptr p) { }; std::vector> coreStates = { {"DWN", "off"}, {"RET", "retention"}, {"WFI", "wfi"}}; - p->addStateResidencyDataProvider(std::make_shared(coreIds, - coreStates)); + p->addStateResidencyDataProvider(new AocStateResidencyDataProvider(coreIds, coreStates)); // Add AoC voltage stats std::vector> voltageIds = { @@ -68,7 +65,7 @@ void addAoC(std::shared_ptr p) { {"UUD", "ultra_underdrive"}, {"UD", "underdrive"}}; p->addStateResidencyDataProvider( - std::make_shared(voltageIds, voltageStates)); + new AocStateResidencyDataProvider(voltageIds, voltageStates)); // Add AoC monitor mode std::vector> monitorIds = { @@ -78,7 +75,7 @@ void addAoC(std::shared_ptr p) { {"MON", "mode"}, }; p->addStateResidencyDataProvider( - std::make_shared(monitorIds, monitorStates)); + new AocStateResidencyDataProvider(monitorIds, monitorStates)); } void addDvfsStats(std::shared_ptr p) { @@ -170,7 +167,7 @@ void addDvfsStats(std::shared_ptr p) { std::make_pair("1066MHz", "1066000000"), }}); - p->addStateResidencyDataProvider(std::make_shared( + p->addStateResidencyDataProvider(new DvfsStateResidencyDataProvider( "/sys/devices/platform/1742048c.acpm_stats/fvp_stats", NS_TO_MS, cfgs)); } @@ -238,7 +235,7 @@ void addSoC(std::shared_ptr p) { cfgs.emplace_back(generateGenericStateResidencyConfigs(reqStateConfig, slcReqStateHeaders), "SLC-REQ", "SLC_REQ:"); - auto socSdp = std::make_shared( + android::sp socSdp = new GenericStateResidencyDataProvider( "/sys/devices/platform/1742048c.acpm_stats/soc_stats", cfgs); p->addStateResidencyDataProvider(socSdp); @@ -251,32 +248,25 @@ void setEnergyMeter(std::shared_ptr p) { void addDisplay(std::shared_ptr p) { // Add display residency stats - - /* - * TODO(b/167216667): Add complete set of display states here. Must account - * for ALL devices built using this source - */ - std::vector states = { - "Off", - "LP: 1440x3040@30", - "On: 1440x3040@60", - "On: 1440x3040@90", - "HBM: 1440x3040@60", - "HBM: 1440x3040@90"}; - - auto displaySdp = - std::make_shared("Display", + android::sp displaySdp = + new DisplayStateResidencyDataProvider("Display", "/sys/class/backlight/panel0-backlight/state", - states); + /* + * TODO(b/167216667): Add complete set of display states here. Must account + * for ALL devices built using this source + */ + {"Off", "LP: 1440x3040@30", "On: 1440x3040@60", "On: 1440x3040@90", "HBM: 1440x3040@60", + "HBM: 1440x3040@90"}); p->addStateResidencyDataProvider(displaySdp); // Add display energy consumer + android::sp displayConsumer; /* * TODO(b/167216667): Add correct display power model here. Must read from display rail * and include proper coefficients for display states. Must account for ALL devices built * using this source. */ - auto displayConsumer = PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p, + displayConsumer = PowerStatsEnergyConsumer::createMeterAndEntityConsumer(p, EnergyConsumerType::DISPLAY, "display", {"PPVAR_VSYS_PWR_DISP"}, "Display", {{"LP: 1440x3040@30", 1}, {"On: 1440x3040@60", 2}, @@ -297,6 +287,7 @@ void addCPUclusters(std::shared_ptr p) void addGPU(std::shared_ptr p) { // Add gpu energy consumer + android::sp gpuConsumer; std::map stateCoeffs; const int socRev = android::base::GetIntProperty(kBootHwSoCRev, 0); @@ -324,7 +315,7 @@ void addGPU(std::shared_ptr p) { {"670000", 50}}; } - auto gpuConsumer = PowerStatsEnergyConsumer::createMeterAndAttrConsumer(p, + gpuConsumer = PowerStatsEnergyConsumer::createMeterAndAttrConsumer(p, EnergyConsumerType::OTHER, "GPU", {"S2S_VDD_G3D"}, {{UID_TIME_IN_STATE, "/sys/devices/platform/1c500000.mali/uid_time_in_state"}}, stateCoeffs); @@ -358,8 +349,10 @@ void addMobileRadio(std::shared_ptr p) cfgs.emplace_back(generateGenericStateResidencyConfigs(powerStateConfig, powerStateHeaders), "MODEM", ""); - p->addStateResidencyDataProvider(std::make_shared( - "/sys/devices/platform/cpif/modem/power_stats", cfgs)); + android::sp modemSdp = new GenericStateResidencyDataProvider( + "/sys/devices/platform/cpif/modem/power_stats", cfgs); + + p->addStateResidencyDataProvider(modemSdp); p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p, EnergyConsumerType::MOBILE_RADIO, "MODEM", {"VSYS_PWR_MODEM", "VSYS_PWR_RFFE"})); @@ -370,21 +363,6 @@ void addGNSS(std::shared_ptr p) p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterConsumer(p, EnergyConsumerType::GNSS, "GPS", {"L9S_GNSS_CORE"})); } -/** - * Unlike other data providers, which source power entity state residency data from the kernel, - * this data provider acts as a general-purpose channel for state residency data providers - * that live in user space. Entities are defined here and user space clients of this provider's - * vendor service register callbacks to provide state residency data for their given pwoer entity. - */ -void addPixelStateResidencyDataProvider(std::shared_ptr p) { - std::shared_ptr pixelSdp = - ndk::SharedRefBase::make(); - - pixelSdp->addEntity("Bluetooth", {{0, "Idle"}, {1, "Active"}, {2, "Tx"}, {3, "Rx"}}); - - pixelSdp->start(); - p->addStateResidencyDataProvider(pixelSdp); -} int main() { LOG(INFO) << "Pixel PowerStats HAL AIDL Service is starting."; @@ -396,7 +374,6 @@ int main() { setEnergyMeter(p); - addPixelStateResidencyDataProvider(p); addAoC(p); addDisplay(p); addDvfsStats(p);