]> xenbits.xen.org Git - xenclient/xen-pq.git/commitdiff
Generate d-bus signal when battery level changes.
authorKamala Narasimhan <kamala.narasimhan@citrix.com>
Tue, 20 Oct 2009 17:23:17 +0000 (13:23 -0400)
committerKamala Narasimhan <kamala.narasimhan@citrix.com>
Tue, 20 Oct 2009 17:23:17 +0000 (13:23 -0400)
master/power-management-enhancement

index f4e85bcb9f2514b069b16ce0b5852753af2a9e33..b0f1efcbad83839f903f6b749e5708f517f54ff5 100644 (file)
@@ -890,10 +890,10 @@ index 0000000..633b560
 +
 diff --git a/tools/xenpmd/xenpmd-dbus-server.c b/tools/xenpmd/xenpmd-dbus-server.c
 new file mode 100644
-index 0000000..c9b80cd
+index 0000000..46fecc7
 --- /dev/null
 +++ b/tools/xenpmd/xenpmd-dbus-server.c
-@@ -0,0 +1,206 @@
+@@ -0,0 +1,213 @@
 +/*
 + * xenpmd-dbus-server.c
 + *
@@ -924,6 +924,7 @@ index 0000000..c9b80cd
 +
 +static char *xenpmd_dbus_signal_names[E_XENPMD_EVENTS_COUNT] =
 +{
++    "battery_level_notification",
 +    "ac_adapter_state_changed",
 +    "lid_state_changed",
 +    "power_button_pressed",
@@ -997,6 +998,12 @@ index 0000000..c9b80cd
 +    return TRUE;
 +}
 +
++static gboolean xenpmd_object_get_current_battery_level(XenpmdObject * this, guint *battery_level)
++{
++    *battery_level = xenstore_read_uint(XS_CURRENT_BATTERY_LEVEL);
++    return TRUE;
++}
++
 +static gboolean xenpmd_object_get_lid_state(XenpmdObject * this, guint *lid_ret)
 +{
 +    *lid_ret = xenstore_read_uint(XS_LID_STATE_PATH);
@@ -1101,7 +1108,7 @@ index 0000000..c9b80cd
 +}
 +
 diff --git a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c
-index 28de744..58abdfa 100644
+index 28de744..87e38de 100644
 --- a/tools/xenpmd/xenpmd.c
 +++ b/tools/xenpmd/xenpmd.c
 @@ -33,68 +33,13 @@
@@ -1363,7 +1370,7 @@ index 28de744..58abdfa 100644
  
  void write_battery_status_to_xenstore(struct battery_status *status)
  {
-@@ -426,56 +409,86 @@ void write_battery_status_to_xenstore(struct battery_status *status)
+@@ -426,56 +409,87 @@ void write_battery_status_to_xenstore(struct battery_status *status)
      write_ulong_lsb_first(val+18, status->remaining_capacity);
      write_ulong_lsb_first(val+26, status->present_voltage);
  
@@ -1372,7 +1379,8 @@ index 28de744..58abdfa 100644
 +    if ( current_battery_level != NORMAL )
 +    {
 +        sprintf(val, "%d", current_battery_level);
-+        xs_write(xs, XBT_NULL, XS_BATTERY_LEVEL_NOTIFICATION, val, strlen(val));
++        xs_write(xs, XBT_NULL, XS_CURRENT_BATTERY_LEVEL, val, strlen(val));
++        xenpmd_dbus_signal_event(E_BATTERY_LEVEL_NOTIFICATION);
 +        xenpmd_log(LOG_ALERT, "Battery level below normal  - %d!\n", current_battery_level);
 +    } 
 +#ifdef XENPMD_DEBUG
@@ -1479,7 +1487,7 @@ index 28de744..58abdfa 100644
  
      if ( pid != 0 )
          exit(0);
-@@ -483,34 +496,75 @@ static void daemonize(void)
+@@ -483,34 +497,75 @@ static void daemonize(void)
      setsid();
  
      if ( (pid = fork()) < 0 )
@@ -1567,10 +1575,10 @@ index 28de744..58abdfa 100644
 +}
 diff --git a/tools/xenpmd/xenpmd.h b/tools/xenpmd/xenpmd.h
 new file mode 100644
-index 0000000..3cda66d
+index 0000000..1c673bd
 --- /dev/null
 +++ b/tools/xenpmd/xenpmd.h
-@@ -0,0 +1,140 @@
+@@ -0,0 +1,141 @@
 +/*
 + * xenpmd.h
 + *
@@ -1667,6 +1675,7 @@ index 0000000..3cda66d
 +
 +enum xenpmd_dbus_event_numbers
 +{
++    E_BATTERY_LEVEL_NOTIFICATION,
 +    E_AC_ADAPTER_STATE_CHANGED,
 +    E_LID_STATE_CHANGED,
 +    E_POWER_BUTTON_PRESSED,
@@ -1694,10 +1703,10 @@ index 0000000..3cda66d
 + 
 +#define XS_BIF                              "/pm/bif"
 +#define XS_BST                              "/pm/bst"
++#define XS_CURRENT_BATTERY_LEVEL            "/pm/currentbatterylevel"
 +#define XS_AC_ADAPTER_STATE_PATH            "/pm/ac_adapter"
 +#define XS_LID_STATE_PATH                   "/pm/lid_state" 
 + 
-+#define XS_BATTERY_LEVEL_NOTIFICATION       "/pm/events/batterylevelnotification"
 +#define XS_AC_ADAPTER_EVENT_PATH            "/pm/events/acadapterstatechanged"
 +#define XS_LID_EVENT_PATH                   "/pm/events/lidstatechanged"
 +#define XS_PBTN_EVENT_PATH                  "/pm/events/powerbuttonpressed"
@@ -1713,10 +1722,10 @@ index 0000000..3cda66d
 +
 diff --git a/tools/xenpmd/xenpmd.xml b/tools/xenpmd/xenpmd.xml
 new file mode 100644
-index 0000000..23328f4
+index 0000000..230f5f8
 --- /dev/null
 +++ b/tools/xenpmd/xenpmd.xml
-@@ -0,0 +1,127 @@
+@@ -0,0 +1,149 @@
 +<?xml version="1.0" encoding="UTF-8" ?>
 +
 +<node name="/com/citrix/xenclient/xenpmd">
@@ -1735,6 +1744,18 @@ index 0000000..23328f4
 +      </doc:doc>
 +    </method>
 +
++    <method name="get_current_battery_level">
++      <arg type="u" name="battery_level" direction="out" />
++      <doc:doc>
++        <doc:summary>
++          <doc:para>
++            Returns current battery level. 0 when normal, 1 for warning,
++            2 for low and 3 for critical.
++          </doc:para>
++        </doc:summary>
++      </doc:doc>
++    </method>
++
 +    <method name="get_lid_state">
 +      <arg type="u" name="lid_ret" direction="out" />
 +      <doc:doc>
@@ -1841,6 +1862,16 @@ index 0000000..23328f4
 +      </doc:doc>
 +    </signal>
 +
++    <signal name="battery_level_notification">
++        <doc:doc>
++          <doc:summary>
++            <doc:para>
++              Signals when battery level changes from normal.
++            </doc:para>
++          </doc:summary>
++       </doc:doc>
++     </signal>
++
 +  </interface>
 +
 +</node>