Ejemplo n.º 1
0
static gboolean poll_occ(gpointer user_data)
{
	//g_dbus_object_get_object_path(G_DBUS_OBJECT(user_data)),
	Occ* occ = object_get_occ((Object*)user_data);

	gchar *s;
	s = g_strdup_printf ("%s/Temperature/P8_%s_Core_%d",
			dbus_object_path,occ_get_instance_name(occ),1);
	g_print("%s\n",s);

	GDBusInterface* interface = g_dbus_object_manager_get_interface((GDBusObjectManager*)manager,s,
		"org.openbmc.SensorValue");

	if (interface != NULL)
	{
		SensorValue* sensor = (SensorValue*) interface;
		GVariant *value = NEW_VARIANT_U(10);
		sensor_value_set_value(sensor,value);
		const gchar* units = sensor_value_get_units(sensor);
		sensor_value_emit_changed(sensor,sensor_value_get_value(sensor),units);
	}
	g_free (s);
	//g_free(interface);
	return TRUE;
}
Ejemplo n.º 2
0
static gboolean
walk_block_parents (UDisksClient *client,
                    GDBusObjectManager  *objman,
                    UDisksBlock *block,
                    ObjectWalker *walker,
                    gpointer user_data,
                    GError **error)
{
  /* Parents are
     - of a block that is a logical volume, the logical volume object
     - of a clear text device, the encrypted device.

     XXX - support the whole tree.
  */

  while (block)
    {
      const gchar *path = g_dbus_proxy_get_object_path (G_DBUS_PROXY (block));
      LvmLogicalVolumeBlock *lvm_block =
        LVM_LOGICAL_VOLUME_BLOCK (g_dbus_object_manager_get_interface (objman, path,
                                                                       "com.redhat.lvm2.LogicalVolumeBlock"));

      const gchar *logical_volume_path =
        (lvm_block ? lvm_logical_volume_block_get_logical_volume (lvm_block) : "/");
      const gchar *crypto_path = udisks_block_get_crypto_backing_device (block);

      if (g_strcmp0 (logical_volume_path, "/") != 0)
        {
          gs_unref_object LvmObject *logical_volume_object =
            LVM_OBJECT (g_dbus_object_manager_get_object (objman, logical_volume_path));

          if (logical_volume_object)
            {
              if (!walker (client, G_DBUS_OBJECT (logical_volume_object), user_data, error))
                return FALSE;
            }
          block = NULL;
        }
      else if (g_strcmp0 (crypto_path, "/") != 0)
        {
          UDisksObject *crypto_object = udisks_client_peek_object (client, crypto_path);
          if (crypto_object)
            {
              if (!walker (client, G_DBUS_OBJECT (crypto_object), user_data, error))
                return FALSE;
            }
          block = udisks_object_peek_block (crypto_object);
        }
      else
        block = NULL;
    }

  return TRUE;
}
static void
update_progress_for_device (StoragedDaemon *daemon,
                            const gchar    *operation,
                            const gchar    *dev,
                            double          progress)
{
    GDBusObjectManager *object_manager;
    GList *objects, *l;

    object_manager = G_DBUS_OBJECT_MANAGER (storaged_daemon_get_object_manager (daemon));
    objects = g_dbus_object_manager_get_objects (object_manager);

    for (l = objects; l; l = l->next)
    {
        StoragedObject *object = STORAGED_OBJECT (l->data);
        StoragedJob *job;
        const gchar *const *job_objects;
        int i;

        job = storaged_object_peek_job (object);
        if (job == NULL)
            continue;

        if (g_strcmp0 (storaged_job_get_operation (job), operation) != 0)
            continue;

        job_objects = storaged_job_get_objects (job);
        for (i = 0; job_objects[i]; i++)
        {
            StoragedBlock *block = STORAGED_BLOCK (g_dbus_object_manager_get_interface (object_manager,
                                                   job_objects[i],
                                                   "org.storaged.Storaged.Block"));

            if (block)
            {
                const gchar *const *symlinks;
                int j;
                if (g_strcmp0 (storaged_block_get_device (block), dev) == 0)
                    goto found;
                symlinks = storaged_block_get_symlinks (block);
                for (j = 0; symlinks[j]; j++)
                    if (g_strcmp0 (symlinks[j], dev) == 0)
                        goto found;

                continue;
found:
                storaged_job_set_progress (job, progress);
                storaged_job_set_progress_valid (job, TRUE);
            }
        }

    }
    g_list_free_full (objects, g_object_unref);
}