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; }
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); }