Files
device_google_redbull/powerstats/RailDataProvider.h
Xavier_Cheng b90c736745 power.stats: Add power entry for ODPM
Test: adb shell "lshal debug android.hardware.power.stats@1.0::IPowerStats/default"

============= PowerStats HAL 1.0 rail energy data ==============
          Subsys                 Rail    Cumulative Energy
        Cellular     PPVAR_VPH_PWR_RF           233.84 mWs
  Cellular(mmWave)   PPVAR_VPH_PWR_QTM525           185.90 mWs
         Display   PPVAR_VPH_PWR_OLED           106.77 mWs
            WLAN   PPVAR_VPH_PWR_WLAN           709.28 mWs
            WLAN   WCN3998_VDD13 [from PP1304_L2C]          3105.63 mWs
     CPU(SILVER)    PPVAR_VPH_PWR_S1C         36505.33 mWs
       CPU(GOLD)   PPVAR_VPH_PWR_S2A_S3A         19881.20 mWs
  VDD_CX(SM7250)   PPVAR_VPH_PWR_S1A_S9A_S10A         20851.89 mWs
========== End of PowerStats HAL 1.0 rail energy data ==========

Bug: 146115475

Change-Id: I0eb0ee5701a5f1bbc7b0e645e2fbada8542444ad
Signed-off-by: Xavier_Cheng <xacheng@google.com>
2019-12-31 19:09:30 +08:00

48 lines
1.6 KiB
C++

#ifndef ANDROID_HARDWARE_POWERSTATS_RAILDATAPROVIDER_H
#define ANDROID_HARDWARE_POWERSTATS_RAILDATAPROVIDER_H
#include <fmq/MessageQueue.h>
#include <pixelpowerstats/PowerStats.h>
namespace android {
namespace hardware {
namespace google {
namespace pixel {
namespace powerstats {
typedef MessageQueue<EnergyData, kSynchronizedReadWrite> MessageQueueSync;
struct RailData {
std::string devicePath;
uint32_t index;
std::string subsysName;
uint32_t samplingRate;
};
struct OnDeviceMmt {
std::mutex mLock;
bool hwEnabled;
std::vector<std::string> devicePaths;
std::map<std::string, RailData> railsInfo;
std::vector<EnergyData> reading;
std::unique_ptr<MessageQueueSync> fmqSynchronized;
};
class RailDataProvider : public IRailDataProvider {
public:
RailDataProvider();
// Methods from ::android::hardware::power::stats::V1_0::IPowerStats follow.
Return<void> getRailInfo(IPowerStats::getRailInfo_cb _hidl_cb) override;
Return<void> getEnergyData(const hidl_vec<uint32_t>& railIndices,
IPowerStats::getEnergyData_cb _hidl_cb) override;
Return<void> streamEnergyData(uint32_t timeMs, uint32_t samplingRate,
IPowerStats::streamEnergyData_cb _hidl_cb) override;
private:
OnDeviceMmt mOdpm;
void findIioPowerMonitorNodes();
size_t parsePowerRails();
int parseIioEnergyNode(std::string devName);
Status parseIioEnergyNodes();
};
} // namespace powerstats
} // namespace pixel
} // namespace google
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_POWERSTATS_RAILDATAPROVIDER_H