OLD | NEW |
| (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 #include "chromeos/power/power_data_collector.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "chromeos/dbus/dbus_thread_manager.h" | |
9 #include "chromeos/dbus/power_manager/power_supply_properties.pb.h" | |
10 | |
11 namespace chromeos { | |
12 | |
13 namespace { | |
14 | |
15 // The global PowerDataCollector instance. | |
16 PowerDataCollector* g_power_data_collector = NULL; | |
17 | |
18 } // namespace | |
19 | |
20 const int PowerDataCollector::kSampleTimeLimitSec = 24 * 60 * 60; | |
21 | |
22 // static | |
23 void PowerDataCollector::Initialize() { | |
24 // Check that power data collector is initialized only after the | |
25 // DBusThreadManager is initialized. | |
26 CHECK(DBusThreadManager::Get()); | |
27 CHECK(g_power_data_collector == NULL); | |
28 g_power_data_collector = new PowerDataCollector(); | |
29 } | |
30 | |
31 // static | |
32 void PowerDataCollector::Shutdown() { | |
33 // Shutdown only if initialized. | |
34 CHECK(g_power_data_collector); | |
35 delete g_power_data_collector; | |
36 g_power_data_collector = NULL; | |
37 } | |
38 | |
39 // static | |
40 PowerDataCollector* PowerDataCollector::Get() { | |
41 CHECK(g_power_data_collector); | |
42 return g_power_data_collector; | |
43 } | |
44 | |
45 void PowerDataCollector::PowerChanged( | |
46 const power_manager::PowerSupplyProperties& prop) { | |
47 PowerSupplySample sample; | |
48 sample.time = base::Time::Now(); | |
49 sample.external_power = (prop.external_power() != | |
50 power_manager::PowerSupplyProperties::DISCONNECTED); | |
51 sample.battery_percent = prop.battery_percent(); | |
52 sample.battery_discharge_rate = prop.battery_discharge_rate(); | |
53 AddSample(&power_supply_data_, sample); | |
54 } | |
55 | |
56 void PowerDataCollector::SystemResumed(const base::TimeDelta& sleep_duration) { | |
57 SystemResumedSample sample; | |
58 sample.time = base::Time::Now(); | |
59 sample.sleep_duration = sleep_duration; | |
60 AddSample(&system_resumed_data_, sample); | |
61 } | |
62 | |
63 PowerDataCollector::PowerDataCollector() { | |
64 DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this); | |
65 } | |
66 | |
67 PowerDataCollector::~PowerDataCollector() { | |
68 DBusThreadManager* dbus_manager = DBusThreadManager::Get(); | |
69 CHECK(dbus_manager); | |
70 dbus_manager->GetPowerManagerClient()->RemoveObserver(this); | |
71 } | |
72 | |
73 PowerDataCollector::PowerSupplySample::PowerSupplySample() | |
74 : external_power(false), | |
75 battery_percent(0.0), | |
76 battery_discharge_rate(0.0) { | |
77 } | |
78 | |
79 PowerDataCollector::SystemResumedSample::SystemResumedSample() { | |
80 } | |
81 | |
82 } // namespace chromeos | |
OLD | NEW |