Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Side by Side Diff: chromeos/power/power_data_collector.h

Issue 153153002: [chromeos] Move files from chromeos/power to chrome/browser/chromeos/power (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chromeos/chromeos.gyp ('k') | chromeos/power/power_data_collector.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROMEOS_POWER_POWER_DATA_COLLECTOR_H_
6 #define CHROMEOS_POWER_POWER_DATA_COLLECTOR_H_
7
8 #include <deque>
9
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/time/time.h"
13 #include "chromeos/chromeos_export.h"
14 #include "chromeos/dbus/power_manager_client.h"
15
16 namespace power_manager {
17 class PowerSupplyProperties;
18 }
19
20 namespace chromeos {
21
22 // A class which starts collecting power metrics, like the battery charge, as
23 // soon as it is initialized via Initialize().
24 //
25 // This class is implemented as a global singleton, initialized after
26 // DBusThreadManager which it depends on.
27 class CHROMEOS_EXPORT PowerDataCollector : public PowerManagerClient::Observer {
28 public:
29 struct PowerSupplySample {
30 PowerSupplySample();
31
32 // Time when the sample was captured. We use base::Time instead of
33 // base::TimeTicks because the latter does not advance when the system is
34 // suspended.
35 base::Time time;
36
37 // True if connected to external power at the time of the sample.
38 bool external_power;
39
40 // The battery charge as a percentage of full charge in range [0.0, 100.00].
41 double battery_percent;
42
43 // The battery discharge rate in W. Positive if the battery is being
44 // discharged and negative if it's being charged.
45 double battery_discharge_rate;
46 };
47
48 struct SystemResumedSample {
49 SystemResumedSample();
50
51 // Time when the system resumed.
52 base::Time time;
53
54 // The duration for which the system was in sleep/suspend state.
55 base::TimeDelta sleep_duration;
56 };
57
58 const std::deque<PowerSupplySample>& power_supply_data() const {
59 return power_supply_data_;
60 }
61
62 const std::deque<SystemResumedSample>& system_resumed_data() const {
63 return system_resumed_data_;
64 }
65
66 // Can be called only after DBusThreadManager is initialized.
67 static void Initialize();
68
69 // Can be called only if initialized via Initialize, and before
70 // DBusThreadManager is destroyed.
71 static void Shutdown();
72
73 // Returns the global instance of PowerDataCollector.
74 static PowerDataCollector* Get();
75
76 // PowerManagerClient::Observer implementation:
77 virtual void PowerChanged(
78 const power_manager::PowerSupplyProperties& prop) OVERRIDE;
79 virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
80
81 // Only those power data samples which fall within the last
82 // |kSampleTimeLimitSec| are stored in memory.
83 static const int kSampleTimeLimitSec;
84
85 private:
86 PowerDataCollector();
87
88 virtual ~PowerDataCollector();
89
90 std::deque<PowerSupplySample> power_supply_data_;
91 std::deque<SystemResumedSample> system_resumed_data_;
92
93 DISALLOW_COPY_AND_ASSIGN(PowerDataCollector);
94 };
95
96 // Adds |sample| to |sample_deque|.
97 // It dumps samples |PowerDataCollector::kSampleTimeLimitSec| or more older than
98 // |sample|.
99 template <typename SampleType>
100 void AddSample(std::deque<SampleType>* sample_queue, const SampleType& sample) {
101 while (!sample_queue->empty()) {
102 const SampleType& first = sample_queue->front();
103 if (sample.time - first.time >
104 base::TimeDelta::FromSeconds(PowerDataCollector::kSampleTimeLimitSec)) {
105 sample_queue->pop_front();
106 } else {
107 break;
108 }
109 }
110 sample_queue->push_back(sample);
111 }
112
113 } // namespace chromeos
114
115 #endif // CHROMEOS_POWER_POWER_DATA_COLLECTOR_H_
OLDNEW
« no previous file with comments | « chromeos/chromeos.gyp ('k') | chromeos/power/power_data_collector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698