summaryrefslogtreecommitdiff
path: root/libdevkit-power
diff options
context:
space:
mode:
Diffstat (limited to 'libdevkit-power')
-rw-r--r--libdevkit-power/Makefile.am4
-rw-r--r--libdevkit-power/dkp-client.h10
-rw-r--r--libdevkit-power/dkp-device.c576
-rw-r--r--libdevkit-power/dkp-device.h14
-rw-r--r--libdevkit-power/dkp-enum.c30
-rw-r--r--libdevkit-power/dkp-enum.h24
-rw-r--r--libdevkit-power/dkp-object.c544
-rw-r--r--libdevkit-power/dkp-object.h76
8 files changed, 606 insertions, 672 deletions
diff --git a/libdevkit-power/Makefile.am b/libdevkit-power/Makefile.am
index cc7370f..d30c9e8 100644
--- a/libdevkit-power/Makefile.am
+++ b/libdevkit-power/Makefile.am
@@ -35,9 +35,7 @@ libdevkit_power_la_SOURCES = \
dkp-wakeups-obj.h \
dkp-wakeups-obj.c \
dkp-enum.c \
- dkp-enum.h \
- dkp-object.c \
- dkp-object.h
+ dkp-enum.h
libdevkit_power_la_LIBADD = $(INTLLIBS) $(GLIB_LIBS) $(DBUS_GLIB_LIBS)
diff --git a/libdevkit-power/dkp-client.h b/libdevkit-power/dkp-client.h
index 4c62b1e..c28a7ee 100644
--- a/libdevkit-power/dkp-client.h
+++ b/libdevkit-power/dkp-client.h
@@ -59,6 +59,16 @@ typedef struct
void (*device_removed) (DkpClient *client,
const DkpDevice *device);
void (*changed) (DkpClient *client);
+ /*< private >*/
+ /* Padding for future expansion */
+ void (*_dkp_client_reserved1) (void);
+ void (*_dkp_client_reserved2) (void);
+ void (*_dkp_client_reserved3) (void);
+ void (*_dkp_client_reserved4) (void);
+ void (*_dkp_client_reserved5) (void);
+ void (*_dkp_client_reserved6) (void);
+ void (*_dkp_client_reserved7) (void);
+ void (*_dkp_client_reserved8) (void);
} DkpClientClass;
GType dkp_client_get_type (void);
diff --git a/libdevkit-power/dkp-device.c b/libdevkit-power/dkp-device.c
index 21656e0..5f47015 100644
--- a/libdevkit-power/dkp-device.c
+++ b/libdevkit-power/dkp-device.c
@@ -25,11 +25,12 @@
#include <stdio.h>
#include <glib.h>
#include <dbus/dbus-glib.h>
+#include <string.h>
#include "egg-debug.h"
+#include "egg-string.h"
#include "dkp-device.h"
-#include "dkp-object.h"
#include "dkp-stats-obj.h"
#include "dkp-history-obj.h"
@@ -42,10 +43,63 @@ static void dkp_device_finalize (GObject *object);
struct DkpDevicePrivate
{
gchar *object_path;
- DkpObject *obj;
DBusGConnection *bus;
DBusGProxy *proxy_device;
DBusGProxy *proxy_props;
+
+ /* properties */
+ guint64 update_time;
+ gchar *vendor;
+ gchar *model;
+ gchar *serial;
+ gchar *native_path;
+ gboolean power_supply;
+ gboolean online;
+ gboolean is_present;
+ gboolean is_rechargeable;
+ gboolean has_history;
+ gboolean has_statistics;
+ DkpDeviceType type;
+ DkpDeviceState state;
+ DkpDeviceTechnology technology;
+ gdouble capacity; /* percent */
+ gdouble energy; /* Watt Hours */
+ gdouble energy_empty; /* Watt Hours */
+ gdouble energy_full; /* Watt Hours */
+ gdouble energy_full_design; /* Watt Hours */
+ gdouble energy_rate; /* Watts */
+ gdouble voltage; /* Volts */
+ gint64 time_to_empty; /* seconds */
+ gint64 time_to_full; /* seconds */
+ gdouble percentage; /* percent */
+};
+
+enum {
+ PROP_0,
+ PROP_UPDATE_TIME,
+ PROP_VENDOR,
+ PROP_MODEL,
+ PROP_SERIAL,
+ PROP_NATIVE_PATH,
+ PROP_POWER_SUPPLY,
+ PROP_ONLINE,
+ PROP_IS_PRESENT,
+ PROP_IS_RECHARGEABLE,
+ PROP_HAS_HISTORY,
+ PROP_HAS_STATISTICS,
+ PROP_TYPE,
+ PROP_STATE,
+ PROP_TECHNOLOGY,
+ PROP_CAPACITY,
+ PROP_ENERGY,
+ PROP_ENERGY_EMPTY,
+ PROP_ENERGY_FULL,
+ PROP_ENERGY_FULL_DESIGN,
+ PROP_ENERGY_RATE,
+ PROP_VOLTAGE,
+ PROP_TIME_TO_EMPTY,
+ PROP_TIME_TO_FULL,
+ PROP_PERCENTAGE
};
enum {
@@ -83,6 +137,69 @@ out:
}
/**
+ * dkp_device_collect_props_cb:
+ **/
+static void
+dkp_device_collect_props_cb (const char *key, const GValue *value, DkpDevice *device)
+{
+ gboolean handled = TRUE;
+
+ if (g_strcmp0 (key, "native-path") == 0)
+ device->priv->native_path = g_strdup (g_value_get_string (value));
+ else if (g_strcmp0 (key, "vendor") == 0)
+ device->priv->vendor = g_strdup (g_value_get_string (value));
+ else if (g_strcmp0 (key, "model") == 0)
+ device->priv->model = g_strdup (g_value_get_string (value));
+ else if (g_strcmp0 (key, "serial") == 0)
+ device->priv->serial = g_strdup (g_value_get_string (value));
+ else if (g_strcmp0 (key, "update-time") == 0)
+ device->priv->update_time = g_value_get_uint64 (value);
+ else if (g_strcmp0 (key, "type") == 0)
+ device->priv->type = g_value_get_uint (value);
+ else if (g_strcmp0 (key, "online") == 0)
+ device->priv->online = g_value_get_boolean (value);
+ else if (g_strcmp0 (key, "has-history") == 0)
+ device->priv->has_history = g_value_get_boolean (value);
+ else if (g_strcmp0 (key, "has-statistics") == 0)
+ device->priv->has_statistics = g_value_get_boolean (value);
+ else if (g_strcmp0 (key, "energy") == 0)
+ device->priv->energy = g_value_get_double (value);
+ else if (g_strcmp0 (key, "energy-empty") == 0)
+ device->priv->energy_empty = g_value_get_double (value);
+ else if (g_strcmp0 (key, "energy-full") == 0)
+ device->priv->energy_full = g_value_get_double (value);
+ else if (g_strcmp0 (key, "energy-full-design") == 0)
+ device->priv->energy_full_design = g_value_get_double (value);
+ else if (g_strcmp0 (key, "energy-rate") == 0)
+ device->priv->energy_rate = g_value_get_double (value);
+ else if (g_strcmp0 (key, "voltage") == 0)
+ device->priv->voltage = g_value_get_double (value);
+ else if (g_strcmp0 (key, "time-to-full") == 0)
+ device->priv->time_to_full = g_value_get_int64 (value);
+ else if (g_strcmp0 (key, "time-to-empty") == 0)
+ device->priv->time_to_empty = g_value_get_int64 (value);
+ else if (g_strcmp0 (key, "percentage") == 0)
+ device->priv->percentage = g_value_get_double (value);
+ else if (g_strcmp0 (key, "technology") == 0)
+ device->priv->technology = g_value_get_uint (value);
+ else if (g_strcmp0 (key, "is-present") == 0)
+ device->priv->is_present = g_value_get_boolean (value);
+ else if (g_strcmp0 (key, "is-rechargeable") == 0)
+ device->priv->is_rechargeable = g_value_get_boolean (value);
+ else if (g_strcmp0 (key, "power-supply") == 0)
+ device->priv->power_supply = g_value_get_boolean (value);
+ else if (g_strcmp0 (key, "capacity") == 0)
+ device->priv->capacity = g_value_get_double (value);
+ else if (g_strcmp0 (key, "state") == 0)
+ device->priv->state = g_value_get_uint (value);
+ else
+ handled = FALSE;
+
+ if (!handled)
+ egg_warning ("unhandled property '%s'", key);
+}
+
+/**
* dkp_device_refresh_internal:
**/
static gboolean
@@ -96,7 +213,7 @@ dkp_device_refresh_internal (DkpDevice *device)
egg_warning ("Cannot get device properties for %s", device->priv->object_path);
return FALSE;
}
- dkp_object_set_from_map (device->priv->obj, hash);
+ g_hash_table_foreach (hash, (GHFunc) dkp_device_collect_props_cb, device);
g_hash_table_unref (hash);
return TRUE;
}
@@ -109,7 +226,7 @@ dkp_device_changed_cb (DBusGProxy *proxy, DkpDevice *device)
{
g_return_if_fail (DKP_IS_DEVICE (device));
dkp_device_refresh_internal (device);
- g_signal_emit (device, signals [DKP_DEVICE_CHANGED], 0, device->priv->obj);
+ g_signal_emit (device, signals [DKP_DEVICE_CHANGED], 0, NULL); //TODO
}
/**
@@ -184,16 +301,6 @@ dkp_device_get_object_path (const DkpDevice *device)
}
/**
- * dkp_device_get_object:
- **/
-const DkpObject *
-dkp_device_get_object (const DkpDevice *device)
-{
- g_return_val_if_fail (DKP_IS_DEVICE (device), NULL);
- return device->priv->obj;
-}
-
-/**
* dkp_device_print_history:
**/
static gboolean
@@ -223,15 +330,117 @@ out:
}
/**
+ * dkp_device_print_bool_to_text:
+ **/
+static const gchar *
+dkp_device_print_bool_to_text (gboolean ret)
+{
+ return ret ? "yes" : "no";
+}
+
+/**
+ * dkp_device_print_time_to_text:
+ **/
+static gchar *
+dkp_device_print_time_to_text (gint seconds)
+{
+ gfloat value = seconds;
+
+ if (value < 0)
+ return g_strdup ("unknown");
+ if (value < 60)
+ return g_strdup_printf ("%.0f seconds", value);
+ value /= 60.0;
+ if (value < 60)
+ return g_strdup_printf ("%.1f minutes", value);
+ value /= 60.0;
+ if (value < 60)
+ return g_strdup_printf ("%.1f hours", value);
+ value /= 24.0;
+ return g_strdup_printf ("%.1f days", value);
+}
+
+/**
* dkp_device_print:
**/
gboolean
dkp_device_print (const DkpDevice *device)
{
+ struct tm *time_tm;
+ time_t t;
+ gchar time_buf[256];
+ gchar *time_str;
+
g_return_val_if_fail (DKP_IS_DEVICE (device), FALSE);
- /* print to screen */
- dkp_object_print (device->priv->obj);
+ /* get a human readable time */
+ t = (time_t) device->priv->update_time;
+ time_tm = localtime (&t);
+ strftime (time_buf, sizeof time_buf, "%c", time_tm);
+
+ g_print (" native-path: %s\n", device->priv->native_path);
+ if (!egg_strzero (device->priv->vendor))
+ g_print (" vendor: %s\n", device->priv->vendor);
+ if (!egg_strzero (device->priv->model))
+ g_print (" model: %s\n", device->priv->model);
+ if (!egg_strzero (device->priv->serial))
+ g_print (" serial: %s\n", device->priv->serial);
+ g_print (" power supply: %s\n", dkp_device_print_bool_to_text (device->priv->power_supply));
+ g_print (" updated: %s (%d seconds ago)\n", time_buf, (int) (time (NULL) - device->priv->update_time));
+ g_print (" has history: %s\n", dkp_device_print_bool_to_text (device->priv->has_history));
+ g_print (" has statistics: %s\n", dkp_device_print_bool_to_text (device->priv->has_statistics));
+ g_print (" %s\n", dkp_device_type_to_text (device->priv->type));
+
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY ||
+ device->priv->type == DKP_DEVICE_TYPE_MOUSE ||
+ device->priv->type == DKP_DEVICE_TYPE_KEYBOARD ||
+ device->priv->type == DKP_DEVICE_TYPE_UPS)
+ g_print (" present: %s\n", dkp_device_print_bool_to_text (device->priv->is_present));
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY ||
+ device->priv->type == DKP_DEVICE_TYPE_MOUSE ||
+ device->priv->type == DKP_DEVICE_TYPE_KEYBOARD)
+ g_print (" rechargeable: %s\n", dkp_device_print_bool_to_text (device->priv->is_rechargeable));
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY ||
+ device->priv->type == DKP_DEVICE_TYPE_MOUSE ||
+ device->priv->type == DKP_DEVICE_TYPE_KEYBOARD)
+ g_print (" state: %s\n", dkp_device_state_to_text (device->priv->state));
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY) {
+ g_print (" energy: %g Wh\n", device->priv->energy);
+ g_print (" energy-empty: %g Wh\n", device->priv->energy_empty);
+ g_print (" energy-full: %g Wh\n", device->priv->energy_full);
+ g_print (" energy-full-design: %g Wh\n", device->priv->energy_full_design);
+ }
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY ||
+ device->priv->type == DKP_DEVICE_TYPE_MONITOR)
+ g_print (" energy-rate: %g W\n", device->priv->energy_rate);
+ if (device->priv->type == DKP_DEVICE_TYPE_UPS ||
+ device->priv->type == DKP_DEVICE_TYPE_BATTERY ||
+ device->priv->type == DKP_DEVICE_TYPE_MONITOR)
+ g_print (" voltage: %g V\n", device->priv->voltage);
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY ||
+ device->priv->type == DKP_DEVICE_TYPE_UPS) {
+ if (device->priv->time_to_full >= 0) {
+ time_str = dkp_device_print_time_to_text (device->priv->time_to_full);
+ g_print (" time to full: %s\n", time_str);
+ g_free (time_str);
+ }
+ if (device->priv->time_to_empty >= 0) {
+ time_str = dkp_device_print_time_to_text (device->priv->time_to_empty);
+ g_print (" time to empty: %s\n", time_str);
+ g_free (time_str);
+ }
+ }
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY ||
+ device->priv->type == DKP_DEVICE_TYPE_MOUSE ||
+ device->priv->type == DKP_DEVICE_TYPE_KEYBOARD ||
+ device->priv->type == DKP_DEVICE_TYPE_UPS)
+ g_print (" percentage: %g%%\n", device->priv->percentage);
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY)
+ g_print (" capacity: %g%%\n", device->priv->capacity);
+ if (device->priv->type == DKP_DEVICE_TYPE_BATTERY)
+ g_print (" technology: %s\n", dkp_device_technology_to_text (device->priv->technology));
+ if (device->priv->type == DKP_DEVICE_TYPE_LINE_POWER)
+ g_print (" online: %s\n", dkp_device_print_bool_to_text (device->priv->online));
/* if we can, get history */
dkp_device_print_history (device, "charge");
@@ -289,7 +498,7 @@ dkp_device_get_history (const DkpDevice *device, const gchar *type, guint timesp
dbus_g_type_get_struct("GValueArray",
G_TYPE_UINT,
G_TYPE_DOUBLE,
- G_TYPE_STRING,
+ G_TYPE_UINT,
G_TYPE_INVALID));
/* get compound data */
@@ -327,7 +536,7 @@ dkp_device_get_history (const DkpDevice *device, const gchar *type, guint timesp
g_value_unset (gv);
/* 2 */
gv = g_value_array_get_nth (gva, 2);
- obj->state = dkp_device_state_from_text (g_value_get_string (gv));
+ obj->state = g_value_get_uint (gv);
g_value_unset (gv);
g_ptr_array_add (array, obj);
g_value_array_free (gva);
@@ -408,6 +617,114 @@ out:
}
/**
+ * dkp_device_set_property:
+ **/
+static void
+dkp_device_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+// DkpDevice *device = DKP_DEVICE (object);
+
+ switch (prop_id) {
+// case PROP_SUBSYSTEMS:
+// if (device->priv->subsystems != NULL)
+// g_strfreev (device->priv->subsystems);
+// device->priv->subsystems = g_strdupv (g_value_get_boxed (value));
+// break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+/**
+ * dkp_device_get_property:
+ **/
+static void
+dkp_device_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+ DkpDevice *device = DKP_DEVICE (object);
+
+ switch (prop_id) {
+ case PROP_UPDATE_TIME:
+ g_value_set_uint64 (value, device->priv->update_time);
+ break;
+ case PROP_VENDOR:
+ g_value_set_string (value, device->priv->vendor);
+ break;
+ case PROP_MODEL:
+ g_value_set_string (value, device->priv->model);
+ break;
+ case PROP_SERIAL:
+ g_value_set_string (value, device->priv->serial);
+ break;
+ case PROP_NATIVE_PATH:
+ g_value_set_string (value, device->priv->native_path);
+ break;
+ case PROP_POWER_SUPPLY:
+ g_value_set_boolean (value, device->priv->power_supply);
+ break;
+ case PROP_ONLINE:
+ g_value_set_boolean (value, device->priv->online);
+ break;
+ case PROP_IS_PRESENT:
+ g_value_set_boolean (value, device->priv->is_present);
+ break;
+ case PROP_IS_RECHARGEABLE:
+ g_value_set_boolean (value, device->priv->is_rechargeable);
+ break;
+ case PROP_HAS_HISTORY:
+ g_value_set_boolean (value, device->priv->has_history);
+ break;
+ case PROP_HAS_STATISTICS:
+ g_value_set_boolean (value, device->priv->has_statistics);
+ break;
+ case PROP_TYPE:
+ g_value_set_uint (value, device->priv->type);
+ break;
+ case PROP_STATE:
+ g_value_set_uint (value, device->priv->state);
+ break;
+ case PROP_TECHNOLOGY:
+ g_value_set_uint (value, device->priv->technology);
+ break;
+ case PROP_CAPACITY:
+ g_value_set_double (value, device->priv->capacity);
+ break;
+ case PROP_ENERGY:
+ g_value_set_double (value, device->priv->energy);
+ break;
+ case PROP_ENERGY_EMPTY:
+ g_value_set_double (value, device->priv->energy_empty);
+ break;
+ case PROP_ENERGY_FULL:
+ g_value_set_double (value, device->priv->energy_full);
+ break;
+ case PROP_ENERGY_FULL_DESIGN:
+ g_value_set_double (value, device->priv->energy_full_design);
+ break;
+ case PROP_ENERGY_RATE:
+ g_value_set_double (value, device->priv->energy_rate);
+ break;
+ case PROP_VOLTAGE:
+ g_value_set_double (value, device->priv->voltage);
+ break;
+ case PROP_TIME_TO_EMPTY:
+ g_value_set_int64 (value, device->priv->time_to_empty);
+ break;
+ case PROP_TIME_TO_FULL:
+ g_value_set_int64 (value, device->priv->time_to_full);
+ break;
+ case PROP_PERCENTAGE:
+ g_value_set_double (value, device->priv->percentage);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+/**
* dkp_device_class_init:
* @klass: The DkpDeviceClass
**/
@@ -416,11 +733,13 @@ dkp_device_class_init (DkpDeviceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = dkp_device_finalize;
+ object_class->set_property = dkp_device_set_property;
+ object_class->get_property = dkp_device_get_property;
/**
* PkClient::changed:
* @device: the #DkpDevice instance that emitted the signal
- * @obj: the #DkpObject that has changed
+ * @obj: the #DkpObject that has changed //TODO
*
* The ::changed signal is emitted when the device data has changed.
**/
@@ -431,6 +750,219 @@ dkp_device_class_init (DkpDeviceClass *klass)
NULL, NULL, g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE, 1, G_TYPE_POINTER);
+ /**
+ * DkpDevice:update-time:
+ */
+ g_object_class_install_property (object_class,
+ PROP_UPDATE_TIME,
+ g_param_spec_uint64 ("update-time",
+ NULL, NULL,
+ 0, G_MAXUINT64, 0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:vendor:
+ */
+ g_object_class_install_property (object_class,
+ PROP_VENDOR,
+ g_param_spec_string ("vendor",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:model:
+ */
+ g_object_class_install_property (object_class,
+ PROP_MODEL,
+ g_param_spec_string ("model",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:serial:
+ */
+ g_object_class_install_property (object_class,
+ PROP_SERIAL,
+ g_param_spec_string ("serial",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:native-path:
+ */
+ g_object_class_install_property (object_class,
+ PROP_NATIVE_PATH,
+ g_param_spec_string ("native-path",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:power-supply:
+ */
+ g_object_class_install_property (object_class,
+ PROP_POWER_SUPPLY,
+ g_param_spec_boolean ("power-supply",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:online:
+ */
+ g_object_class_install_property (object_class,
+ PROP_ONLINE,
+ g_param_spec_boolean ("online",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:is-present:
+ */
+ g_object_class_install_property (object_class,
+ PROP_IS_PRESENT,
+ g_param_spec_boolean ("is-present",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:is-rechargeable:
+ */
+ g_object_class_install_property (object_class,
+ PROP_IS_RECHARGEABLE,
+ g_param_spec_boolean ("is-rechargeable",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:has-history:
+ */
+ g_object_class_install_property (object_class,
+ PROP_HAS_HISTORY,
+ g_param_spec_boolean ("has-history",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:has-statistics:
+ */
+ g_object_class_install_property (object_class,
+ PROP_HAS_STATISTICS,
+ g_param_spec_boolean ("has-statistics",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:type:
+ */
+ g_object_class_install_property (object_class,
+ PROP_TYPE,
+ g_param_spec_uint ("type",
+ NULL, NULL,
+ 0,
+ DKP_DEVICE_TYPE_UNKNOWN,
+ DKP_DEVICE_TYPE_UNKNOWN,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:state:
+ */
+ g_object_class_install_property (object_class,
+ PROP_STATE,
+ g_param_spec_uint ("state",
+ NULL, NULL,
+ 0,
+ DKP_DEVICE_STATE_UNKNOWN,
+ DKP_DEVICE_STATE_UNKNOWN,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:technology:
+ */
+ g_object_class_install_property (object_class,
+ PROP_TECHNOLOGY,
+ g_param_spec_uint ("technology",
+ NULL, NULL,
+ 0,
+ DKP_DEVICE_TECHNOLOGY_UNKNOWN,
+ DKP_DEVICE_TECHNOLOGY_UNKNOWN,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:capacity:
+ */
+ g_object_class_install_property (object_class,
+ PROP_CAPACITY,
+ g_param_spec_double ("capacity", NULL, NULL,
+ 0.0, 100.f, 100.0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:energy:
+ */
+ g_object_class_install_property (object_class,
+ PROP_ENERGY,
+ g_param_spec_double ("energy", NULL, NULL,
+ 0.0, G_MAXDOUBLE, 0.0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:energy-empty:
+ */
+ g_object_class_install_property (object_class,
+ PROP_ENERGY_EMPTY,
+ g_param_spec_double ("energy-empty", NULL, NULL,
+ 0.0, G_MAXDOUBLE, 0.0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:energy-full:
+ */
+ g_object_class_install_property (object_class,
+ PROP_ENERGY_FULL,
+ g_param_spec_double ("energy-full", NULL, NULL,
+ 0.0, G_MAXDOUBLE, 0.0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:energy-full-design:
+ */
+ g_object_class_install_property (object_class,
+ PROP_ENERGY_FULL_DESIGN,
+ g_param_spec_double ("energy-full-design", NULL, NULL,
+ 0.0, G_MAXDOUBLE, 0.0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:energy-rate:
+ */
+ g_object_class_install_property (object_class,
+ PROP_ENERGY_RATE,
+ g_param_spec_double ("energy-rate", NULL, NULL,
+ 0.0, G_MAXDOUBLE, 0.0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:voltage:
+ */
+ g_object_class_install_property (object_class,
+ PROP_VOLTAGE,
+ g_param_spec_double ("voltage", NULL, NULL,
+ 0.0, G_MAXDOUBLE, 0.0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:time-to-empty:
+ */
+ g_object_class_install_property (object_class,
+ PROP_TIME_TO_EMPTY,
+ g_param_spec_int64 ("time-to-empty", NULL, NULL,
+ 0, G_MAXINT64, 0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:time-to-full:
+ */
+ g_object_class_install_property (object_class,
+ PROP_TIME_TO_FULL,
+ g_param_spec_int64 ("time-to-full", NULL, NULL,
+ 0, G_MAXINT64, 0,
+ G_PARAM_READABLE));
+ /**
+ * DkpDevice:percentage:
+ */
+ g_object_class_install_property (object_class,
+ PROP_PERCENTAGE,
+ g_param_spec_double ("percentage", NULL, NULL,
+ 0.0, 100.f, 100.0,
+ G_PARAM_READABLE));
+
g_type_class_add_private (klass, sizeof (DkpDevicePrivate));
}
@@ -445,7 +977,6 @@ dkp_device_init (DkpDevice *device)
device->priv->object_path = NULL;
device->priv->proxy_device = NULL;
device->priv->proxy_props = NULL;
- device->priv->obj = dkp_object_new ();
}
/**
@@ -462,7 +993,10 @@ dkp_device_finalize (GObject *object)
device = DKP_DEVICE (object);
g_free (device->priv->object_path);
- dkp_object_free (device->priv->obj);
+ g_free (device->priv->vendor);
+ g_free (device->priv->model);
+ g_free (device->priv->serial);
+ g_free (device->priv->native_path);
if (device->priv->proxy_device != NULL)
g_object_unref (device->priv->proxy_device);
if (device->priv->proxy_props != NULL)
diff --git a/libdevkit-power/dkp-device.h b/libdevkit-power/dkp-device.h
index a6c444e..a3a8294 100644
--- a/libdevkit-power/dkp-device.h
+++ b/libdevkit-power/dkp-device.h
@@ -28,7 +28,6 @@
#include <glib-object.h>
#include <libdevkit-power/dkp-enum.h>
-#include <libdevkit-power/dkp-object.h>
G_BEGIN_DECLS
@@ -53,13 +52,22 @@ typedef struct
{
GObjectClass parent_class;
void (*changed) (DkpDevice *device,
- const DkpObject *obj);
+ gpointer *obj);
+ /*< private >*/
+ /* Padding for future expansion */
+ void (*_dkp_device_reserved1) (void);
+ void (*_dkp_device_reserved2) (void);
+ void (*_dkp_device_reserved3) (void);
+ void (*_dkp_device_reserved4) (void);
+ void (*_dkp_device_reserved5) (void);
+ void (*_dkp_device_reserved6) (void);
+ void (*_dkp_device_reserved7) (void);
+ void (*_dkp_device_reserved8) (void);
} DkpDeviceClass;
GType dkp_device_get_type (void);
DkpDevice *dkp_device_new (void);
-const DkpObject *dkp_device_get_object (const DkpDevice *device);
const gchar *dkp_device_get_object_path (const DkpDevice *device);
gboolean dkp_device_set_object_path (DkpDevice *device,
const gchar *object_path);
diff --git a/libdevkit-power/dkp-enum.c b/libdevkit-power/dkp-enum.c
index 8cdcee9..6f22dd0 100644
--- a/libdevkit-power/dkp-enum.c
+++ b/libdevkit-power/dkp-enum.c
@@ -152,25 +152,25 @@ dkp_device_technology_to_text (DkpDeviceTechnology technology_enum)
{
const gchar *technology = NULL;
switch (technology_enum) {
- case DKP_DEVICE_TECHNOLGY_LITHIUM_ION:
+ case DKP_DEVICE_TECHNOLOGY_LITHIUM_ION:
technology = "lithium-ion";
break;
- case DKP_DEVICE_TECHNOLGY_LITHIUM_POLYMER:
+ case DKP_DEVICE_TECHNOLOGY_LITHIUM_POLYMER:
technology = "lithium-polymer";
break;
- case DKP_DEVICE_TECHNOLGY_LITHIUM_IRON_PHOSPHATE:
+ case DKP_DEVICE_TECHNOLOGY_LITHIUM_IRON_PHOSPHATE:
technology = "lithium-iron-phosphate";
break;
- case DKP_DEVICE_TECHNOLGY_LEAD_ACID:
+ case DKP_DEVICE_TECHNOLOGY_LEAD_ACID:
technology = "lead-acid";
break;
- case DKP_DEVICE_TECHNOLGY_NICKEL_CADMIUM:
+ case DKP_DEVICE_TECHNOLOGY_NICKEL_CADMIUM:
technology = "nickel-cadmium";
break;
- case DKP_DEVICE_TECHNOLGY_NICKEL_METAL_HYDRIDE:
+ case DKP_DEVICE_TECHNOLOGY_NICKEL_METAL_HYDRIDE:
technology = "nickel-metal-hydride";
break;
- case DKP_DEVICE_TECHNOLGY_UNKNOWN:
+ case DKP_DEVICE_TECHNOLOGY_UNKNOWN:
technology = "unknown";
break;
default:
@@ -187,20 +187,20 @@ DkpDeviceTechnology
dkp_device_technology_from_text (const gchar *technology)
{
if (technology == NULL)
- return DKP_DEVICE_TECHNOLGY_UNKNOWN;
+ return DKP_DEVICE_TECHNOLOGY_UNKNOWN;
if (egg_strequal (technology, "lithium-ion"))
- return DKP_DEVICE_TECHNOLGY_LITHIUM_ION;
+ return DKP_DEVICE_TECHNOLOGY_LITHIUM_ION;
if (egg_strequal (technology, "lithium-polymer"))
- return DKP_DEVICE_TECHNOLGY_LITHIUM_POLYMER;
+ return DKP_DEVICE_TECHNOLOGY_LITHIUM_POLYMER;
if (egg_strequal (technology, "lithium-iron-phosphate"))
- return DKP_DEVICE_TECHNOLGY_LITHIUM_IRON_PHOSPHATE;
+ return DKP_DEVICE_TECHNOLOGY_LITHIUM_IRON_PHOSPHATE;
if (egg_strequal (technology, "lead-acid"))
- return DKP_DEVICE_TECHNOLGY_LEAD_ACID;
+ return DKP_DEVICE_TECHNOLOGY_LEAD_ACID;
if (egg_strequal (technology, "nickel-cadmium"))
- return DKP_DEVICE_TECHNOLGY_NICKEL_CADMIUM;
+ return DKP_DEVICE_TECHNOLOGY_NICKEL_CADMIUM;
if (egg_strequal (technology, "nickel-metal-hydride"))
- return DKP_DEVICE_TECHNOLGY_NICKEL_METAL_HYDRIDE;
- return DKP_DEVICE_TECHNOLGY_UNKNOWN;
+ return DKP_DEVICE_TECHNOLOGY_NICKEL_METAL_HYDRIDE;
+ return DKP_DEVICE_TECHNOLOGY_UNKNOWN;
}
/**
diff --git a/libdevkit-power/dkp-enum.h b/libdevkit-power/dkp-enum.h
index 166b3b1..28ec8d7 100644
--- a/libdevkit-power/dkp-enum.h
+++ b/libdevkit-power/dkp-enum.h
@@ -31,6 +31,7 @@
G_BEGIN_DECLS
typedef enum {
+ DKP_DEVICE_TYPE_UNKNOWN,
DKP_DEVICE_TYPE_LINE_POWER,
DKP_DEVICE_TYPE_BATTERY,
DKP_DEVICE_TYPE_UPS,
@@ -39,31 +40,34 @@ typedef enum {
DKP_DEVICE_TYPE_KEYBOARD,
DKP_DEVICE_TYPE_PDA,
DKP_DEVICE_TYPE_PHONE,
- DKP_DEVICE_TYPE_UNKNOWN
+ DKP_DEVICE_TYPE_LAST
} DkpDeviceType;
typedef enum {
+ DKP_DEVICE_STATE_UNKNOWN,
DKP_DEVICE_STATE_CHARGING,
DKP_DEVICE_STATE_DISCHARGING,
DKP_DEVICE_STATE_EMPTY,
DKP_DEVICE_STATE_FULLY_CHARGED,
- DKP_DEVICE_STATE_UNKNOWN
+ DKP_DEVICE_STATE_LAST
} DkpDeviceState;
typedef enum {
- DKP_DEVICE_TECHNOLGY_LITHIUM_ION,
- DKP_DEVICE_TECHNOLGY_LITHIUM_POLYMER,
- DKP_DEVICE_TECHNOLGY_LITHIUM_IRON_PHOSPHATE,
- DKP_DEVICE_TECHNOLGY_LEAD_ACID,
- DKP_DEVICE_TECHNOLGY_NICKEL_CADMIUM,
- DKP_DEVICE_TECHNOLGY_NICKEL_METAL_HYDRIDE,
- DKP_DEVICE_TECHNOLGY_UNKNOWN
+ DKP_DEVICE_TECHNOLOGY_UNKNOWN,
+ DKP_DEVICE_TECHNOLOGY_LITHIUM_ION,
+ DKP_DEVICE_TECHNOLOGY_LITHIUM_POLYMER,
+ DKP_DEVICE_TECHNOLOGY_LITHIUM_IRON_PHOSPHATE,
+ DKP_DEVICE_TECHNOLOGY_LEAD_ACID,
+ DKP_DEVICE_TECHNOLOGY_NICKEL_CADMIUM,
+ DKP_DEVICE_TECHNOLOGY_NICKEL_METAL_HYDRIDE,
+ DKP_DEVICE_TECHNOLOGY_LAST
} DkpDeviceTechnology;
typedef enum {
+ DKP_QOS_TYPE_UNKNOWN,
DKP_QOS_TYPE_NETWORK,
DKP_QOS_TYPE_CPU_DMA,
- DKP_QOS_TYPE_UNKNOWN
+ DKP_QOS_TYPE_LAST
} DkpQosType;
const gchar *dkp_device_type_to_text (DkpDeviceType type_enum);
diff --git a/libdevkit-power/dkp-object.c b/libdevkit-power/dkp-object.c
deleted file mode 100644
index 17298de..0000000
--- a/libdevkit-power/dkp-object.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard@hughsie.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <glib.h>
-#include <glib-object.h>
-#include <string.h>
-
-#include "egg-debug.h"
-#include "egg-string.h"
-
-#include "dkp-enum.h"
-#include "dkp-object.h"
-
-/**
- * dkp_object_clear_internal:
- **/
-static void
-dkp_object_clear_internal (DkpObject *obj)
-{
- obj->type = DKP_DEVICE_TYPE_UNKNOWN;
- obj->update_time = 0;
- obj->energy = 0;
- obj->energy_full = 0;
- obj->energy_full_design = 0;
- obj->energy_rate = 0;
- obj->voltage = 0;
- obj->percentage = 0;
- obj->capacity = 0;
- obj->time_to_empty = 0;
- obj->time_to_full = 0;
- obj->state = DKP_DEVICE_STATE_UNKNOWN;
- obj->technology = DKP_DEVICE_TECHNOLGY_UNKNOWN;
- obj->vendor = NULL;
- obj->model = NULL;
- obj->serial = NULL;
- obj->native_path = NULL;
- obj->online = FALSE;
- obj->is_present = FALSE;
- obj->power_supply = FALSE;
- obj->is_rechargeable = FALSE;
- obj->has_history = FALSE;
- obj->has_statistics = FALSE;
-}
-
-/**
- * dkp_object_collect_props:
- **/
-static void
-dkp_object_collect_props (const char *key, const GValue *value, DkpObject *obj)
-{
- gboolean handled = TRUE;
-
- if (g_strcmp0 (key, "native-path") == 0)
- obj->native_path = g_strdup (g_value_get_string (value));
- else if (g_strcmp0 (key, "vendor") == 0)
- obj->vendor = g_strdup (g_value_get_string (value));
- else if (g_strcmp0 (key, "model") == 0)
- obj->model = g_strdup (g_value_get_string (value));
- else if (g_strcmp0 (key, "serial") == 0)
- obj->serial = g_strdup (g_value_get_string (value));
- else if (g_strcmp0 (key, "update-time") == 0)
- obj->update_time = g_value_get_uint64 (value);
- else if (g_strcmp0 (key, "type") == 0)
- obj->type = dkp_device_type_from_text (g_value_get_string (value));
- else if (g_strcmp0 (key, "online") == 0)
- obj->online = g_value_get_boolean (value);
- else if (g_strcmp0 (key, "has-history") == 0)
- obj->has_history = g_value_get_boolean (value);
- else if (g_strcmp0 (key, "has-statistics") == 0)
- obj->has_statistics = g_value_get_boolean (value);
- else if (g_strcmp0 (key, "energy") == 0)
- obj->energy = g_value_get_double (value);
- else if (g_strcmp0 (key, "energy-empty") == 0)
- obj->energy_empty = g_value_get_double (value);
- else if (g_strcmp0 (key, "energy-full") == 0)
- obj->energy_full = g_value_get_double (value);
- else if (g_strcmp0 (key, "energy-full-design") == 0)
- obj->energy_full_design = g_value_get_double (value);
- else if (g_strcmp0 (key, "energy-rate") == 0)
- obj->energy_rate = g_value_get_double (value);
- else if (g_strcmp0 (key, "voltage") == 0)
- obj->voltage = g_value_get_double (value);
- else if (g_strcmp0 (key, "time-to-full") == 0)
- obj->time_to_full = g_value_get_int64 (value);
- else if (g_strcmp0 (key, "time-to-empty") == 0)
- obj->time_to_empty = g_value_get_int64 (value);
- else if (g_strcmp0 (key, "percentage") == 0)
- obj->percentage = g_value_get_double (value);
- else if (g_strcmp0 (key, "technology") == 0)
- obj->technology = dkp_device_technology_from_text (g_value_get_string (value));
- else if (g_strcmp0 (key, "is-present") == 0)
- obj->is_present = g_value_get_boolean (value);
- else if (g_strcmp0 (key, "is-rechargeable") == 0)
- obj->is_rechargeable = g_value_get_boolean (value);
- else if (g_strcmp0 (key, "power-supply") == 0)
- obj->power_supply = g_value_get_boolean (value);
- else if (g_strcmp0 (key, "capacity") == 0)
- obj->capacity = g_value_get_double (value);
- else if (g_strcmp0 (key, "state") == 0)
- obj->state = dkp_device_state_from_text (g_value_get_string (value));
- else
- handled = FALSE;
-
- if (!handled)
- egg_warning ("unhandled property '%s'", key);
-}
-
-/**
- * dkp_object_set_from_map:
- **/
-gboolean
-dkp_object_set_from_map (DkpObject *obj, GHashTable *hash_table)
-{
- g_hash_table_foreach (hash_table, (GHFunc) dkp_object_collect_props, obj);
- return TRUE;
-}
-
-/**
- * dkp_object_copy:
- **/
-DkpObject *
-dkp_object_copy (const DkpObject *cobj)
-{
- DkpObject *obj;
- obj = g_new0 (DkpObject, 1);
-
- obj->type = cobj->type;
- obj->update_time = cobj->update_time;
- obj->energy = cobj->energy;
- obj->energy_full = cobj->energy_full;
- obj->energy_full_design = cobj->energy_full_design;
- obj->energy_rate = cobj->energy_rate;
- obj->voltage = cobj->voltage;
- obj->percentage = cobj->percentage;
- obj->capacity = cobj->capacity;
- obj->time_to_empty = cobj->time_to_empty;
- obj->time_to_full = cobj->time_to_full;
- obj->state = cobj->state;
- obj->technology = cobj->technology;
- obj->vendor = g_strdup (cobj->vendor);
- obj->model = g_strdup (cobj->model);
- obj->serial = g_strdup (cobj->serial);
- obj->native_path = g_strdup (cobj->native_path);
- obj->online = cobj->online;
- obj->is_present = cobj->is_present;
- obj->power_supply = cobj->power_supply;
- obj->is_rechargeable = cobj->is_rechargeable;
- obj->has_history = cobj->has_history;
- obj->has_statistics = cobj->has_statistics;
-
- return obj;
-}
-
-/**
- * dkp_object_equal:
- **/
-gboolean
-dkp_object_equal (const DkpObject *obj1, const DkpObject *obj2)
-{
- if (obj1->type == obj2->type &&
- obj1->update_time == obj2->update_time &&
- obj1->energy == obj2->energy &&
- obj1->energy_full == obj2->energy_full &&
- obj1->energy_full_design == obj2->energy_full_design &&
- obj1->voltage == obj2->voltage &&
- obj1->energy_rate == obj2->energy_rate &&
- obj1->percentage == obj2->percentage &&
- obj1->has_history == obj2->has_history &&
- obj1->has_statistics == obj2->has_statistics &&
- obj1->capacity == obj2->capacity &&
- obj1->time_to_empty == obj2->time_to_empty &&
- obj1->time_to_full == obj2->time_to_full &&
- obj1->state == obj2->state &&
- obj1->technology == obj2->technology &&
- g_strcmp0 (obj1->vendor, obj2->vendor) == 0 &&
- g_strcmp0 (obj1->model, obj2->model) == 0 &&
- g_strcmp0 (obj1->serial, obj2->serial) == 0 &&
- g_strcmp0 (obj1->native_path, obj2->native_path) == 0 &&
- obj1->online == obj2->online &&
- obj1->is_present == obj2->is_present &&
- obj1->power_supply == obj2->power_supply &&
- obj1->is_rechargeable == obj2->is_rechargeable)
- return TRUE;
- return FALSE;
-}
-
-/**
- * dkp_object_time_to_text:
- **/
-static gchar *
-dkp_object_time_to_text (gint seconds)
-{
- gfloat value = seconds;
-
- if (value < 0)
- return g_strdup ("unknown");
- if (value < 60)
- return g_strdup_printf ("%.0f seconds", value);
- value /= 60.0;
- if (value < 60)
- return g_strdup_printf ("%.1f minutes", value);
- value /= 60.0;
- if (value < 60)
- return g_strdup_printf ("%.1f hours", value);
- value /= 24.0;
- return g_strdup_printf ("%.1f days", value);
-}
-
-/**
- * dkp_object_bool_to_text:
- **/
-static const gchar *
-dkp_object_bool_to_text (gboolean ret)
-{
- return ret ? "yes" : "no";
-}
-
-/**
- * dkp_object_print:
- **/
-gboolean
-dkp_object_print (const DkpObject *obj)
-{
- gboolean ret = TRUE;
- struct tm *time_tm;
- time_t t;
- gchar time_buf[256];
- gchar *time_str;
-
- /* get a human readable time */
- t = (time_t) obj->update_time;
- time_tm = localtime (&t);
- strftime (time_buf, sizeof time_buf, "%c", time_tm);
-
- g_print (" native-path: %s\n", obj->native_path);
- if (!egg_strzero (obj->vendor))
- g_print (" vendor: %s\n", obj->vendor);
- if (!egg_strzero (obj->model))
- g_print (" model: %s\n", obj->model);
- if (!egg_strzero (obj->serial))
- g_print (" serial: %s\n", obj->serial);
- g_print (" power supply: %s\n", dkp_object_bool_to_text (obj->power_supply));
- g_print (" updated: %s (%d seconds ago)\n", time_buf, (int) (time (NULL) - obj->update_time));
- g_print (" has history: %s\n", dkp_object_bool_to_text (obj->has_history));
- g_print (" has statistics: %s\n", dkp_object_bool_to_text (obj->has_statistics));
- g_print (" %s\n", dkp_device_type_to_text (obj->type));
-
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MOUSE ||
- obj->type == DKP_DEVICE_TYPE_KEYBOARD ||
- obj->type == DKP_DEVICE_TYPE_UPS)
- g_print (" present: %s\n", dkp_object_bool_to_text (obj->is_present));
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MOUSE ||
- obj->type == DKP_DEVICE_TYPE_KEYBOARD)
- g_print (" rechargeable: %s\n", dkp_object_bool_to_text (obj->is_rechargeable));
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MOUSE ||
- obj->type == DKP_DEVICE_TYPE_KEYBOARD)
- g_print (" state: %s\n", dkp_device_state_to_text (obj->state));
- if (obj->type == DKP_DEVICE_TYPE_BATTERY) {
- g_print (" energy: %g Wh\n", obj->energy);
- g_print (" energy-empty: %g Wh\n", obj->energy_empty);
- g_print (" energy-full: %g Wh\n", obj->energy_full);
- g_print (" energy-full-design: %g Wh\n", obj->energy_full_design);
- }
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MONITOR)
- g_print (" energy-rate: %g W\n", obj->energy_rate);
- if (obj->type == DKP_DEVICE_TYPE_UPS ||
- obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MONITOR)
- g_print (" voltage: %g V\n", obj->voltage);
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_UPS) {
- if (obj->time_to_full >= 0) {
- time_str = dkp_object_time_to_text (obj->time_to_full);
- g_print (" time to full: %s\n", time_str);
- g_free (time_str);
- }
- if (obj->time_to_empty >= 0) {
- time_str = dkp_object_time_to_text (obj->time_to_empty);
- g_print (" time to empty: %s\n", time_str);
- g_free (time_str);
- }
- }
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MOUSE ||
- obj->type == DKP_DEVICE_TYPE_KEYBOARD ||
- obj->type == DKP_DEVICE_TYPE_UPS)
- g_print (" percentage: %g%%\n", obj->percentage);
- if (obj->type == DKP_DEVICE_TYPE_BATTERY)
- g_print (" capacity: %g%%\n", obj->capacity);
- if (obj->type == DKP_DEVICE_TYPE_BATTERY)
- g_print (" technology: %s\n", dkp_device_technology_to_text (obj->technology));
- if (obj->type == DKP_DEVICE_TYPE_LINE_POWER)
- g_print (" online: %s\n", dkp_object_bool_to_text (obj->online));
-
- return ret;
-}
-
-/**
- * dkp_object_diff:
- **/
-gboolean
-dkp_object_diff (const DkpObject *old, const DkpObject *obj)
-{
- gchar *time_str;
- gchar *time_str_old;
-
- g_print (" native-path: %s\n", obj->native_path);
- if (g_strcmp0 (obj->vendor, old->vendor) != 0)
- g_print (" vendor: %s -> %s\n", old->vendor, obj->vendor);
- if (g_strcmp0 (obj->model, old->model) != 0)
- g_print (" model: %s -> %s\n", old->model, obj->model);
- if (g_strcmp0 (obj->serial, old->serial) != 0)
- g_print (" serial: %s -> %s\n", old->serial, obj->serial);
- if (obj->has_history != old->has_history)
- g_print (" has history: %s -> %s\n",
- dkp_object_bool_to_text (old->has_history),
- dkp_object_bool_to_text (obj->has_history));
- if (obj->has_statistics != old->has_statistics)
- g_print (" has statistics: %s -> %s\n",
- dkp_object_bool_to_text (old->has_statistics),
- dkp_object_bool_to_text (obj->has_statistics));
-
- g_print (" %s\n", dkp_device_type_to_text (obj->type));
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MOUSE ||
- obj->type == DKP_DEVICE_TYPE_KEYBOARD)
- if (old->is_present != obj->is_present)
- g_print (" present: %s -> %s\n",
- dkp_object_bool_to_text (old->is_present),
- dkp_object_bool_to_text (obj->is_present));
- if (obj->type == DKP_DEVICE_TYPE_BATTERY)
- if (old->is_rechargeable != obj->is_rechargeable)
- g_print (" rechargeable: %s -> %s\n",
- dkp_object_bool_to_text (old->is_rechargeable),
- dkp_object_bool_to_text (obj->is_rechargeable));
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MOUSE ||
- obj->type == DKP_DEVICE_TYPE_KEYBOARD ||
- obj->type == DKP_DEVICE_TYPE_UPS)
- if (old->state != obj->state)
- g_print (" state: %s -> %s\n",
- dkp_device_state_to_text (old->state),
- dkp_device_state_to_text (obj->state));
- if (obj->type == DKP_DEVICE_TYPE_BATTERY) {
- if (old->energy != obj->energy)
- g_print (" energy: %g -> %g Wh\n",
- old->energy,
- obj->energy);
- if (old->energy_empty != obj->energy_empty)
- g_print (" energy-empty: %g -> %g Wh\n",
- old->energy_empty,
- obj->energy_empty);
- if (old->energy_full != obj->energy_full)
- g_print (" energy-full: %g -> %g Wh\n",
- old->energy_full,
- obj->energy_full);
- if (old->energy_full_design != obj->energy_full_design)
- g_print (" energy-full-design: %g -> %g Wh\n",
- old->energy_full_design,
- obj->energy_full_design);
- }
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MONITOR)
- if (old->energy_rate != obj->energy_rate)
- g_print (" energy-rate: %g -> %g W\n",
- old->energy_rate, obj->energy_rate);
- if (obj->type == DKP_DEVICE_TYPE_UPS ||
- obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_MONITOR)
- if (old->voltage != obj->voltage)
- g_print (" voltage: %g -> %g V\n",
- old->voltage, obj->voltage);
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_UPS) {
- if (old->time_to_full != obj->time_to_full) {
- time_str_old = dkp_object_time_to_text (old->time_to_full);
- time_str = dkp_object_time_to_text (obj->time_to_full);
- g_print (" time to full: %s -> %s\n", time_str_old, time_str);
- g_free (time_str_old);
- g_free (time_str);
- }
- if (old->time_to_empty != obj->time_to_empty) {
- time_str_old = dkp_object_time_to_text (old->time_to_empty);
- time_str = dkp_object_time_to_text (obj->time_to_empty);
- g_print (" time to empty: %s -> %s\n", time_str_old, time_str);
- g_free (time_str_old);
- g_free (time_str);
- }
- }
- if (obj->type == DKP_DEVICE_TYPE_BATTERY ||
- obj->type == DKP_DEVICE_TYPE_UPS ||
- obj->type == DKP_DEVICE_TYPE_MOUSE ||
- obj->type == DKP_DEVICE_TYPE_KEYBOARD)
- if (old->percentage != obj->percentage)
- g_print (" percentage: %g%% -> %g%%\n",
- old->percentage, obj->percentage);
- if (obj->type == DKP_DEVICE_TYPE_BATTERY)
- if (old->capacity != obj->capacity)
- g_print (" capacity: %g%% -> %g%%\n",
- old->capacity, obj->capacity);
- if (obj->type == DKP_DEVICE_TYPE_BATTERY)
- if (old->technology != obj->technology)
- g_print (" technology: %s -> %s\n",
- dkp_device_technology_to_text (old->technology),
- dkp_device_technology_to_text (obj->technology));
- if (obj->type == DKP_DEVICE_TYPE_LINE_POWER)
- if (old->online != obj->online)
- g_print (" online: %s -> %s\n",
- dkp_object_bool_to_text (old->online),
- dkp_object_bool_to_text (obj->online));
- return TRUE;
-}
-
-/**
- * dkp_object_new:
- **/
-DkpObject *
-dkp_object_new (void)
-{
- DkpObject *obj;
- obj = g_new0 (DkpObject, 1);
- dkp_object_clear_internal (obj);
- return obj;
-}
-
-/**
- * dkp_object_free_internal:
- **/
-static gboolean
-dkp_object_free_internal (DkpObject *obj)
-{
- g_free (obj->vendor);
- g_free (obj->model);
- g_free (obj->serial);
- g_free (obj->native_path);
- return TRUE;
-}
-
-/**
- * dkp_object_free:
- **/
-gboolean
-dkp_object_free (DkpObject *obj)
-{
- if (obj == NULL)
- return FALSE;
- dkp_object_free_internal (obj);
- g_free (obj);
- return TRUE;
-}
-
-/**
- * dkp_object_clear:
- **/
-gboolean
-dkp_object_clear (DkpObject *obj)
-{
- if (obj == NULL)
- return FALSE;
- dkp_object_free_internal (obj);
- dkp_object_clear_internal (obj);
- return TRUE;
-}
-
-/**
- * dkp_object_get_id:
- **/
-gchar *
-dkp_object_get_id (DkpObject *obj)
-{
- GString *string;
- gchar *id = NULL;
-
- /* line power */
- if (obj->type == DKP_DEVICE_TYPE_LINE_POWER) {
- goto out;
-
- /* batteries */
- } else if (obj->type == DKP_DEVICE_TYPE_BATTERY) {
- /* we don't have an ID if we are not present */
- if (!obj->is_present)
- goto out;
-
- string = g_string_new ("");
-
- /* in an ideal world, model-capacity-serial */
- if (obj->model != NULL && strlen (obj->model) > 2) {
- g_string_append (string, obj->model);
- g_string_append_c (string, '-');
- }
- if (obj->energy_full_design > 0) {
- /* FIXME: this may not be stable if we are using voltage_now */
- g_string_append_printf (string, "%i", (guint) obj->energy_full_design);
- g_string_append_c (string, '-');
- }
- if (obj->serial != NULL && strlen (obj->serial) > 2) {
- g_string_append (string, obj->serial);
- g_string_append_c (string, '-');
- }
-
- /* make sure we are sane */
- if (string->len == 0) {
- /* just use something generic */
- g_string_append (string, "generic_id");
- } else {
- /* remove trailing '-' */
- g_string_set_size (string, string->len - 1);
- }
-
- /* the id may have invalid chars that need to be replaced */
- id = g_string_free (string, FALSE);
-
- } else {
- /* generic fallback */
- id = g_strdup_printf ("%s-%s-%s", obj->vendor, obj->model, obj->serial);
- }
-
- g_strdelimit (id, "\\\t\"?' /,.", '_');
-
-out:
- return id;
-}
-
diff --git a/libdevkit-power/dkp-object.h b/libdevkit-power/dkp-object.h
deleted file mode 100644
index 55946c9..0000000
--- a/libdevkit-power/dkp-object.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2008 Richard Hughes <richard@hughsie.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#if !defined (__DEVICEKIT_POWER_H_INSIDE__) && !defined (DKP_COMPILATION)
-#error "Only <devicekit-power.h> can be included directly."
-#endif
-
-#ifndef __DKP_OBJECT_H__
-#define __DKP_OBJECT_H__
-
-#include <glib.h>
-#include <libdevkit-power/dkp-enum.h>
-
-G_BEGIN_DECLS
-
-typedef struct {
- guint64 update_time;
- gchar *vendor;
- gchar *model;
- gchar *serial;
- gchar *native_path;
- gboolean power_supply;
- gboolean online;
- gboolean is_present;
- gboolean is_rechargeable;
- gboolean has_history;
- gboolean has_statistics;
- DkpDeviceType type;
- DkpDeviceState state;
- DkpDeviceTechnology technology;
- gdouble capacity; /* percent */
- gdouble energy; /* Watt Hours */
- gdouble energy_empty; /* Watt Hours */
- gdouble energy_full; /* Watt Hours */
- gdouble energy_full_design; /* Watt Hours */
- gdouble energy_rate; /* Watts */
- gdouble voltage; /* Volts */
- gint64 time_to_empty; /* seconds */
- gint64 time_to_full; /* seconds */
- gdouble percentage; /* percent */
-} DkpObject;
-
-DkpObject *dkp_object_new (void);
-gboolean dkp_object_clear (DkpObject *obj);
-gboolean dkp_object_free (DkpObject *obj);
-gchar *dkp_object_get_id (DkpObject *obj);
-DkpObject *dkp_object_copy (const DkpObject *cobj);
-gboolean dkp_object_print (const DkpObject *obj);
-gboolean dkp_object_diff (const DkpObject *old,
- const DkpObject *obj);
-gboolean dkp_object_equal (const DkpObject *obj1,
- const DkpObject *obj2);
-gboolean dkp_object_set_from_map (DkpObject *obj,
- GHashTable *hash_table);
-
-G_END_DECLS
-
-#endif /* __DKP_OBJECT_H__ */
-