char * battstat_upower_initialise (void (*callback) (void)) { char *error_str; int i, num; status_updated_callback = callback; if( upc != NULL ) return g_strdup( "Already initialised!" ); if( (upc = up_client_new() ) == NULL ) goto error_out; GCancellable *cancellable = g_cancellable_new(); GError *gerror; if (! up_client_enumerate_devices_sync( upc, cancellable, &gerror ) ) { sprintf(error_str, "Unable to enumerate upower devices: %s\n", gerror->message); goto error_shutdownclient; } g_signal_connect_after( upc, "device-changed", device_cb, NULL ); g_signal_connect_after( upc, "device-added", device_cb, NULL ); g_signal_connect_after( upc, "device-removed", device_cb, NULL ); return NULL; error_shutdownclient: g_object_unref( upc ); upc = NULL; error_out: return "Can not initialize upower"; }
int main(int argc, char **argv) { int i; UpClient *upclient; IxpClient *client; signals_setup(&quit_handler); client = ixp_nsmount("wmii"); if(client == NULL) { printf("ixp_nsmount: %s\n", ixp_errbuf()); abort(); } mainloop = g_main_loop_new(NULL, FALSE); upclient = up_client_new(); sb_init(&sb, client); sb_add(&sb, &sbe_ac); for(i = 0; i < MAX_BATTERIES; i++) { sb_add(&sb, &sbe_batteries[i]); } up_client_enumerate_devices_sync(upclient, NULL, NULL); g_signal_connect(upclient, "device-added", G_CALLBACK(device_added_cb), NULL); g_signal_connect(upclient, "device-removed", G_CALLBACK(device_removed_cb), NULL); g_signal_connect(upclient, "device-changed", G_CALLBACK(device_changed_cb), NULL); g_signal_connect(upclient, "changed", G_CALLBACK(changed_cb), NULL); update_sb(upclient); g_main_loop_run(mainloop); sb_finish(&sb); ixp_unmount(client); }
static void device_removed_cb (UpClient *client, UpDevice *device, gpointer user_data) { up_client_enumerate_devices_sync(client, NULL, NULL); update_sb(client); }
/** * main: **/ int main (int argc, char **argv) { gint retval = EXIT_FAILURE; guint i; GOptionContext *context; gboolean opt_dump = FALSE; gboolean opt_wakeups = FALSE; gboolean opt_enumerate = FALSE; gboolean opt_monitor = FALSE; gchar *opt_show_info = FALSE; gboolean opt_version = FALSE; gboolean ret; GError *error = NULL; gchar *text = NULL; UpClient *client; UpDevice *device; const GOptionEntry entries[] = { { "enumerate", 'e', 0, G_OPTION_ARG_NONE, &opt_enumerate, _("Enumerate objects paths for devices"), NULL }, { "dump", 'd', 0, G_OPTION_ARG_NONE, &opt_dump, _("Dump all parameters for all objects"), NULL }, { "wakeups", 'w', 0, G_OPTION_ARG_NONE, &opt_wakeups, _("Get the wakeup data"), NULL }, { "monitor", 'm', 0, G_OPTION_ARG_NONE, &opt_monitor, _("Monitor activity from the power daemon"), NULL }, { "monitor-detail", 0, 0, G_OPTION_ARG_NONE, &opt_monitor_detail, _("Monitor with detail"), NULL }, { "show-info", 'i', 0, G_OPTION_ARG_STRING, &opt_show_info, _("Show information about object path"), NULL }, { "version", 'v', 0, G_OPTION_ARG_NONE, &opt_version, "Print version of client and daemon", NULL }, { NULL } }; g_type_init (); context = g_option_context_new ("UPower tool"); g_option_context_add_main_entries (context, entries, NULL); g_option_context_add_group (context, egg_debug_get_option_group ()); g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); loop = g_main_loop_new (NULL, FALSE); client = up_client_new (); if (opt_version) { gchar *daemon_version; g_object_get (client, "daemon-version", &daemon_version, NULL); g_print ("UPower client version %s\n" "UPower daemon version %s\n", PACKAGE_VERSION, daemon_version); g_free (daemon_version); retval = 0; goto out; } /* wakeups */ if (opt_wakeups) { up_tool_show_wakeups (); retval = EXIT_SUCCESS; goto out; } if (opt_enumerate || opt_dump) { GPtrArray *devices; ret = up_client_enumerate_devices_sync (client, NULL, &error); if (!ret) { egg_warning ("failed to enumerate: %s", error->message); goto out; } devices = up_client_get_devices (client); for (i=0; i < devices->len; i++) { device = (UpDevice*) g_ptr_array_index (devices, i); if (opt_enumerate) { g_print ("%s\n", up_device_get_object_path (device)); } else { g_print ("Device: %s\n", up_device_get_object_path (device)); text = up_device_to_text (device); g_print ("%s\n", text); g_free (text); } } g_ptr_array_unref (devices); if (opt_dump) { g_print ("Daemon:\n"); up_client_print (client); } retval = EXIT_SUCCESS; goto out; } if (opt_monitor || opt_monitor_detail) { ret = up_client_enumerate_devices_sync (client, NULL, &error); if (!ret) { egg_warning ("failed to enumerate: %s", error->message); goto out; } if (!up_tool_do_monitor (client)) goto out; retval = EXIT_SUCCESS; goto out; } if (opt_show_info != NULL) { device = up_device_new (); ret = up_device_set_object_path_sync (device, opt_show_info, NULL, &error); if (!ret) { g_print ("failed to set path: %s\n", error->message); g_error_free (error); } else { text = up_device_to_text (device); g_print ("%s\n", text); g_free (text); } g_object_unref (device); retval = EXIT_SUCCESS; goto out; } out: g_object_unref (client); return retval; }
static void set_ac_battery_ui_mode (CcPowerPanel *self) { gboolean has_batteries = FALSE; gboolean has_lid = FALSE; #if ! UP_CHECK_VERSION(0,99,0) gboolean ret; GError *error = NULL; #endif GPtrArray *devices; guint i; UpDevice *device; UpDeviceKind kind; CcPowerPanelPrivate *priv = self->priv; #if ! UP_CHECK_VERSION(0,99,0) /* this is sync, but it's cached in the daemon and so quick */ ret = up_client_enumerate_devices_sync (self->priv->up_client, NULL, &error); if (!ret) { g_warning ("failed to get device list: %s", error->message); g_error_free (error); goto out; } #endif devices = up_client_get_devices (self->priv->up_client); for (i=0; i<devices->len; i++) { device = g_ptr_array_index (devices, i); g_object_get (device, "kind", &kind, NULL); if (kind == UP_DEVICE_KIND_BATTERY || kind == UP_DEVICE_KIND_UPS) { has_batteries = TRUE; break; } } g_ptr_array_unref (devices); has_lid = up_client_get_lid_is_present (self->priv->up_client); #if ! UP_CHECK_VERSION(0,99,0) out: #endif if (has_lid) { gtk_widget_show(WID("combobox_lid_ac")); gtk_widget_show(WID("label_lid_action")); } else { gtk_widget_hide (WID("combobox_lid_ac")); gtk_widget_hide (WID("label_lid_action")); } if (has_batteries) { gtk_widget_show (WID("label_header_battery")); gtk_widget_show (WID("label_header_ac")); gtk_widget_show (WID("combobox_sleep_battery")); gtk_widget_show (WID("combobox_display_battery")); gtk_widget_show (WID("label_critical")); gtk_widget_show (WID("combobox_critical")); gtk_widget_show (WID("separator_indicator")); gtk_widget_show (WID("frame_battery")); } else { gtk_widget_hide (WID("label_header_battery")); gtk_widget_hide (WID("label_header_ac")); gtk_widget_hide (WID("combobox_sleep_battery")); gtk_widget_hide (WID("combobox_display_battery")); gtk_widget_hide (WID("label_critical")); gtk_widget_hide (WID("combobox_critical")); gtk_widget_hide (WID("separator_indicator")); gtk_widget_hide (WID("frame_battery")); } if (has_lid && has_batteries) { gtk_widget_show (WID("combobox_lid_battery")); } else { gtk_widget_hide (WID("combobox_lid_battery")); } }