From: Kamala Narasimhan Date: Tue, 20 Oct 2009 17:23:17 +0000 (-0400) Subject: Generate d-bus signal when battery level changes. X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7f9df6e4ada202e0621cc8f91e384dc8d4f4ff87;p=xenclient%2Fxen-pq.git Generate d-bus signal when battery level changes. --- diff --git a/master/power-management-enhancement b/master/power-management-enhancement index f4e85bc..b0f1efc 100644 --- a/master/power-management-enhancement +++ b/master/power-management-enhancement @@ -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 @@ + + + @@ -1735,6 +1744,18 @@ index 0000000..23328f4 + + + ++ ++ ++ ++ ++ ++ Returns current battery level. 0 when normal, 1 for warning, ++ 2 for low and 3 for critical. ++ ++ ++ ++ ++ + + + @@ -1841,6 +1862,16 @@ index 0000000..23328f4 + + + ++ ++ ++ ++ ++ Signals when battery level changes from normal. ++ ++ ++ ++ ++ + + +