diff options
author | miletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-29 08:43:08 +0000 |
---|---|---|
committer | miletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-29 08:43:08 +0000 |
commit | 1b4a9530d513314e70b01b16e849ec17294b6666 (patch) | |
tree | 9cadc036247fce924dc4659ae70242bc72a09e51 /chromeos | |
parent | d68d37f4cb045a275cc8941abe9c4e24e560acde (diff) | |
download | chromium_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.gyp | 1 | ||||
-rw-r--r-- | chromeos/dbus/power_manager_client.cc | 29 | ||||
-rw-r--r-- | chromeos/dbus/power_manager_client.h | 9 |
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) {} |