From 7193372a6cbcc682a0b47580ebb56e2241cca3b8 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Tue, 16 Sep 2014 09:08:13 +0200 Subject: [PATCH] force smart update (if disk is not in standby) --- src/lib/pudisks2.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/lib/pudisks2.c b/src/lib/pudisks2.c index d4f4492..62f11f7 100644 --- a/src/lib/pudisks2.c +++ b/src/lib/pudisks2.c @@ -31,19 +31,15 @@ const char *PROVIDER_NAME = "udisks2"; static GDBusObjectManager *manager; -static void udisks2_err(const char *msg) -{ - log_err("%s: %s", PROVIDER_NAME, msg); -} - void udisks2_psensor_list_update(struct psensor **sensors) { struct psensor *s; GDBusObject *o; UDisksDriveAta *drive_ata; double v; + GVariant *variant; - while (*sensors) { + for (; *sensors; sensors++) { s = *sensors; if (s->type & SENSOR_TYPE_UDISKS2) { @@ -55,14 +51,21 @@ void udisks2_psensor_list_update(struct psensor **sensors) g_object_get(o, "drive-ata", &drive_ata, NULL); + variant = g_variant_new_parsed + ("{'nowakeup': %v}", + g_variant_new_boolean(TRUE)); + + udisks_drive_ata_call_smart_update_sync(drive_ata, + variant, + NULL, + NULL); + v = udisks_drive_ata_get_smart_temperature(drive_ata); psensor_set_current_value(s, kelvin_to_celsius(v)); g_object_unref(G_OBJECT(o)); } - - sensors++; } } @@ -82,7 +85,7 @@ void udisks2_psensor_list_add(struct psensor ***sensors, int values_length) client = udisks_client_new_sync(NULL, NULL); if (!client) { - udisks2_err(_("Cannot get the udisks2 client")); + log_err(_("%s: cannot get the udisks2 client"), PROVIDER_NAME); log_fct_exit(); return; } -- 2.7.4