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";
}
Beispiel #2
0
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);
}
Beispiel #3
0
static void device_removed_cb (UpClient *client, UpDevice *device, gpointer user_data)
{
    up_client_enumerate_devices_sync(client, NULL, NULL);
    update_sb(client);
}
Beispiel #4
0
/**
 * 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"));	
  }
	  
}