1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef CONTENT_BROWSER_POWER_PROFILER_POWER_DATA_PROVIDER_IA_WIN_H_
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define CONTENT_BROWSER_POWER_PROFILER_POWER_DATA_PROVIDER_IA_WIN_H_
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "content/browser/power_profiler/power_data_provider.h"
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "third_party/power_gadget/PowerGadgetLib.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace content {
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// A class used to get power usage via Power Gadget API.
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass PowerDataProviderIA : public PowerDataProvider {
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public:
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  PowerDataProviderIA();
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual ~PowerDataProviderIA();
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  bool Initialize();
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual PowerEventVector GetData() OVERRIDE;
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual base::TimeDelta GetSamplingRate() OVERRIDE;
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual AccuracyLevel GetAccuracyLevel() OVERRIDE { return High; }
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch private:
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  CIntelPowerGadgetLib energy_lib_;
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  int sockets_number_;
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  int power_msr_ids_[PowerEvent::ID_COUNT];
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  bool is_open_;
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  DISALLOW_COPY_AND_ASSIGN(PowerDataProviderIA);
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch};
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace content
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif  // CONTENT_BROWSER_POWER_PROFILER_POWER_DATA_PROVIDER_IA_WIN_H_
37