summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authormiletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-29 08:43:08 +0000
committermiletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-29 08:43:08 +0000
commit1b4a9530d513314e70b01b16e849ec17294b6666 (patch)
tree9cadc036247fce924dc4659ae70242bc72a09e51 /chromeos
parentd68d37f4cb045a275cc8941abe9c4e24e560acde (diff)
downloadchromium_src-1b4a9530d513314e70b01b16e849ec17294b6666.zip
chromium_src-1b4a9530d513314e70b01b16e849ec17294b6666.tar.gz
chromium_src-1b4a9530d513314e70b01b16e849ec17294b6666.tar.bz2
chromeos: Receive PeripheralBatteryStatusSignal from power_manager
BUG=chromium:221420 Review URL: https://chromiumcodereview.appspot.com/12491027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191324 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r--chromeos/chromeos.gyp1
-rw-r--r--chromeos/dbus/power_manager_client.cc29
-rw-r--r--chromeos/dbus/power_manager_client.h9
3 files changed, 39 insertions, 0 deletions
diff --git a/chromeos/chromeos.gyp b/chromeos/chromeos.gyp
index 78eee8b..f75c84a 100644
--- a/chromeos/chromeos.gyp
+++ b/chromeos/chromeos.gyp
@@ -453,6 +453,7 @@
'type': 'static_library',
'sources': [
'../third_party/cros_system_api/dbus/power_manager/input_event.proto',
+ '../third_party/cros_system_api/dbus/power_manager/peripheral_battery_status.proto',
'../third_party/cros_system_api/dbus/power_manager/policy.proto',
'../third_party/cros_system_api/dbus/power_manager/suspend.proto',
],
diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc
index f392d9f..dc1060a 100644
--- a/chromeos/dbus/power_manager_client.cc
+++ b/chromeos/dbus/power_manager_client.cc
@@ -18,6 +18,7 @@
#include "base/time.h"
#include "base/timer.h"
#include "chromeos/dbus/power_manager/input_event.pb.h"
+#include "chromeos/dbus/power_manager/peripheral_battery_status.pb.h"
#include "chromeos/dbus/power_manager/policy.pb.h"
#include "chromeos/dbus/power_manager/suspend.pb.h"
#include "chromeos/dbus/power_supply_properties.pb.h"
@@ -70,6 +71,14 @@ class PowerManagerClientImpl : public PowerManagerClient {
power_manager_proxy_->ConnectToSignal(
power_manager::kPowerManagerInterface,
+ power_manager::kPeripheralBatteryStatusSignal,
+ base::Bind(&PowerManagerClientImpl::PeripheralBatteryStatusReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
+
+ power_manager_proxy_->ConnectToSignal(
+ power_manager::kPowerManagerInterface,
power_manager::kPowerSupplyPollSignal,
base::Bind(&PowerManagerClientImpl::PowerSupplyPollReceived,
weak_ptr_factory_.GetWeakPtr()),
@@ -355,6 +364,26 @@ class PowerManagerClientImpl : public PowerManagerClient {
BrightnessChanged(brightness_level, user_initiated));
}
+ void PeripheralBatteryStatusReceived(dbus::Signal* signal) {
+ dbus::MessageReader reader(signal);
+ power_manager::PeripheralBatteryStatus protobuf_status;
+ if (!reader.PopArrayOfBytesAsProto(&protobuf_status)) {
+ LOG(ERROR) << "Unable to decode protocol buffer from "
+ << power_manager::kPeripheralBatteryStatusSignal << " signal";
+ return;
+ }
+
+ std::string path = protobuf_status.path();
+ std::string name = protobuf_status.name();
+ int level = protobuf_status.has_level() ? protobuf_status.level() : -1;
+
+ VLOG(1) << "Device battery status received " << level
+ << " for " << name << " at " << path;
+
+ FOR_EACH_OBSERVER(Observer, observers_,
+ PeripheralBatteryStatusReceived(path, name, level));
+ }
+
void PowerSupplyPollReceived(dbus::Signal* unused_signal) {
VLOG(1) << "Received power supply poll signal.";
RequestStatusUpdate(UPDATE_POLL);
diff --git a/chromeos/dbus/power_manager_client.h b/chromeos/dbus/power_manager_client.h
index 5e23e98..a7093ba 100644
--- a/chromeos/dbus/power_manager_client.h
+++ b/chromeos/dbus/power_manager_client.h
@@ -52,6 +52,15 @@ class CHROMEOS_EXPORT PowerManagerClient {
// |user_initiated| is true if the action is initiated by the user.
virtual void BrightnessChanged(int level, bool user_initiated) {}
+ // Called when peripheral device battery status is received.
+ // |path| is the sysfs path for the battery of the peripheral device.
+ // |name| is the human readble name of the device.
+ // |level| within [0, 100] represents the device battery level and -1
+ // means an unknown level or device is disconnected.
+ virtual void PeripheralBatteryStatusReceived(const std::string& path,
+ const std::string& name,
+ int level) {}
+
// Called when power supply polling takes place. |status| is a data
// structure that contains the current state of the power supply.
virtual void PowerChanged(const PowerSupplyStatus& status) {}