summaryrefslogtreecommitdiff
path: root/src/dkp-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dkp-device.c')
-rw-r--r--src/dkp-device.c666
1 files changed, 517 insertions, 149 deletions
diff --git a/src/dkp-device.c b/src/dkp-device.c
index 1e6fa43..03362f6 100644
--- a/src/dkp-device.c
+++ b/src/dkp-device.c
@@ -54,8 +54,33 @@ struct DkpDevicePrivate
DkpDaemon *daemon;
DkpHistory *history;
DevkitDevice *d;
- DkpObject *obj;
gboolean has_ever_refresh;
+
+ /* 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 */
};
static void dkp_device_class_init (DkpDeviceClass *klass);
@@ -72,24 +97,24 @@ enum
PROP_SERIAL,
PROP_UPDATE_TIME,
PROP_TYPE,
- PROP_LINE_POWER_ONLINE,
+ PROP_ONLINE,
PROP_POWER_SUPPLY,
- PROP_BATTERY_CAPACITY,
- PROP_BATTERY_IS_PRESENT,
- PROP_BATTERY_IS_RECHARGEABLE,
- PROP_BATTERY_HAS_HISTORY,
- PROP_BATTERY_HAS_STATISTICS,
- PROP_BATTERY_STATE,
- PROP_BATTERY_ENERGY,
- PROP_BATTERY_ENERGY_EMPTY,
- PROP_BATTERY_ENERGY_FULL,
- PROP_BATTERY_ENERGY_FULL_DESIGN,
- PROP_BATTERY_ENERGY_RATE,
- PROP_BATTERY_VOLTAGE,
- PROP_BATTERY_TIME_TO_EMPTY,
- PROP_BATTERY_TIME_TO_FULL,
- PROP_BATTERY_PERCENTAGE,
- PROP_BATTERY_TECHNOLOGY,
+ PROP_CAPACITY,
+ PROP_IS_PRESENT,
+ PROP_IS_RECHARGEABLE,
+ PROP_HAS_HISTORY,
+ PROP_HAS_STATISTICS,
+ PROP_STATE,
+ 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,
+ PROP_TECHNOLOGY,
};
enum
@@ -102,8 +127,8 @@ static guint signals[LAST_SIGNAL] = { 0 };
G_DEFINE_TYPE (DkpDevice, dkp_device, G_TYPE_OBJECT)
#define DKP_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), DKP_TYPE_DEVICE, DkpDevicePrivate))
-#define DKP_DBUS_STRUCT_UINT_DOUBLE_STRING (dbus_g_type_get_struct ("GValueArray", \
- G_TYPE_UINT, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_INVALID))
+#define DKP_DBUS_STRUCT_UINT_DOUBLE_UINT (dbus_g_type_get_struct ("GValueArray", \
+ G_TYPE_UINT, G_TYPE_DOUBLE, G_TYPE_UINT, G_TYPE_INVALID))
#define DKP_DBUS_STRUCT_DOUBLE_DOUBLE (dbus_g_type_get_struct ("GValueArray", \
G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_INVALID))
@@ -152,82 +177,170 @@ static void
dkp_device_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
DkpDevice *device = DKP_DEVICE (object);
- DkpObject *obj = device->priv->obj;
-
switch (prop_id) {
case PROP_NATIVE_PATH:
- g_value_set_string (value, obj->native_path);
+ g_value_set_string (value, device->priv->native_path);
break;
case PROP_VENDOR:
- g_value_set_string (value, obj->vendor);
+ g_value_set_string (value, device->priv->vendor);
break;
case PROP_MODEL:
- g_value_set_string (value, obj->model);
+ g_value_set_string (value, device->priv->model);
break;
case PROP_SERIAL:
- g_value_set_string (value, obj->serial);
+ g_value_set_string (value, device->priv->serial);
break;
case PROP_UPDATE_TIME:
- g_value_set_uint64 (value, obj->update_time);
+ g_value_set_uint64 (value, device->priv->update_time);
break;
case PROP_TYPE:
- g_value_set_string (value, dkp_device_type_to_text (obj->type));
+ g_value_set_uint (value, device->priv->type);
break;
case PROP_POWER_SUPPLY:
- g_value_set_boolean (value, obj->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_LINE_POWER_ONLINE:
- g_value_set_boolean (value, obj->online);
+ case PROP_IS_PRESENT:
+ g_value_set_boolean (value, device->priv->is_present);
break;
- case PROP_BATTERY_IS_PRESENT:
- g_value_set_boolean (value, obj->is_present);
+ case PROP_IS_RECHARGEABLE:
+ g_value_set_boolean (value, device->priv->is_rechargeable);
break;
- case PROP_BATTERY_IS_RECHARGEABLE:
- g_value_set_boolean (value, obj->is_rechargeable);
+ case PROP_HAS_HISTORY:
+ g_value_set_boolean (value, device->priv->has_history);
break;
- case PROP_BATTERY_HAS_HISTORY:
- g_value_set_boolean (value, obj->has_history);
+ case PROP_HAS_STATISTICS:
+ g_value_set_boolean (value, device->priv->has_statistics);
break;
- case PROP_BATTERY_HAS_STATISTICS:
- g_value_set_boolean (value, obj->has_statistics);
+ case PROP_STATE:
+ g_value_set_uint (value, device->priv->state);
break;
- case PROP_BATTERY_STATE:
- g_value_set_string (value, dkp_device_state_to_text (obj->state));
+ case PROP_CAPACITY:
+ g_value_set_double (value, device->priv->capacity);
break;
- case PROP_BATTERY_CAPACITY:
- g_value_set_double (value, obj->capacity);
+ case PROP_ENERGY:
+ g_value_set_double (value, device->priv->energy);
break;
- case PROP_BATTERY_ENERGY:
- g_value_set_double (value, obj->energy);
+ case PROP_ENERGY_EMPTY:
+ g_value_set_double (value, device->priv->energy_empty);
break;
- case PROP_BATTERY_ENERGY_EMPTY:
- g_value_set_double (value, obj->energy_empty);
+ case PROP_ENERGY_FULL:
+ g_value_set_double (value, device->priv->energy_full);
break;
- case PROP_BATTERY_ENERGY_FULL:
- g_value_set_double (value, obj->energy_full);
+ case PROP_ENERGY_FULL_DESIGN:
+ g_value_set_double (value, device->priv->energy_full_design);
break;
- case PROP_BATTERY_ENERGY_FULL_DESIGN:
- g_value_set_double (value, obj->energy_full_design);
+ case PROP_ENERGY_RATE:
+ g_value_set_double (value, device->priv->energy_rate);
break;
- case PROP_BATTERY_ENERGY_RATE:
- g_value_set_double (value, obj->energy_rate);
+ case PROP_VOLTAGE:
+ g_value_set_double (value, device->priv->voltage);
break;
- case PROP_BATTERY_VOLTAGE:
- g_value_set_double (value, obj->voltage);
+ case PROP_TIME_TO_EMPTY:
+ g_value_set_int64 (value, device->priv->time_to_empty);
break;
- case PROP_BATTERY_TIME_TO_EMPTY:
- g_value_set_int64 (value, obj->time_to_empty);
+ case PROP_TIME_TO_FULL:
+ g_value_set_int64 (value, device->priv->time_to_full);
break;
- case PROP_BATTERY_TIME_TO_FULL:
- g_value_set_int64 (value, obj->time_to_full);
+ case PROP_PERCENTAGE:
+ g_value_set_double (value, device->priv->percentage);
break;
- case PROP_BATTERY_PERCENTAGE:
- g_value_set_double (value, obj->percentage);
+ case PROP_TECHNOLOGY:
+ g_value_set_uint (value, device->priv->technology);
break;
- case PROP_BATTERY_TECHNOLOGY:
- g_value_set_string (value, dkp_device_technology_to_text (obj->technology));
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
+ }
+}
+/**
+ * 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_NATIVE_PATH:
+// g_free (device->priv->native_path);
+// device->priv->native_path = g_strdup (g_value_get_string (value));
+// break;
+ case PROP_VENDOR:
+ g_free (device->priv->vendor);
+ device->priv->vendor = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_MODEL:
+ g_free (device->priv->model);
+ device->priv->model = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_SERIAL:
+ g_free (device->priv->serial);
+ device->priv->serial = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_UPDATE_TIME:
+ device->priv->update_time = g_value_get_uint64 (value);
+ break;
+ case PROP_TYPE:
+ device->priv->type = g_value_get_uint (value);
+ break;
+ case PROP_POWER_SUPPLY:
+ device->priv->power_supply = g_value_get_boolean (value);
+ break;
+ case PROP_ONLINE:
+ device->priv->online = g_value_get_boolean (value);
+ break;
+ case PROP_IS_PRESENT:
+ device->priv->is_present = g_value_get_boolean (value);
+ break;
+ case PROP_IS_RECHARGEABLE:
+ device->priv->is_rechargeable = g_value_get_boolean (value);
+ break;
+ case PROP_HAS_HISTORY:
+ device->priv->has_history = g_value_get_boolean (value);
+ break;
+ case PROP_HAS_STATISTICS:
+ device->priv->has_statistics = g_value_get_boolean (value);
+ break;
+ case PROP_STATE:
+ device->priv->state = g_value_get_uint (value);
+ break;
+ case PROP_CAPACITY:
+ device->priv->capacity = g_value_get_double (value);
+ break;
+ case PROP_ENERGY:
+ device->priv->energy = g_value_get_double (value);
+ break;
+ case PROP_ENERGY_EMPTY:
+ device->priv->energy_empty = g_value_get_double (value);
+ break;
+ case PROP_ENERGY_FULL:
+ device->priv->energy_full = g_value_get_double (value);
+ break;
+ case PROP_ENERGY_FULL_DESIGN:
+ device->priv->energy_full_design = g_value_get_double (value);
+ break;
+ case PROP_ENERGY_RATE:
+ device->priv->energy_rate = g_value_get_double (value);
+ break;
+ case PROP_VOLTAGE:
+ device->priv->voltage = g_value_get_double (value);
+ break;
+ case PROP_TIME_TO_EMPTY:
+ device->priv->time_to_empty = g_value_get_int64 (value);
+ break;
+ case PROP_TIME_TO_FULL:
+ device->priv->time_to_full = g_value_get_int64 (value);
+ break;
+ case PROP_PERCENTAGE:
+ device->priv->percentage = g_value_get_double (value);
+ break;
+ case PROP_TECHNOLOGY:
+ device->priv->technology = g_value_get_uint (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -285,6 +398,65 @@ dkp_device_get_low_battery (DkpDevice *device, gboolean *low_battery)
}
/**
+ * dkp_device_get_id:
+ **/
+static gchar *
+dkp_device_get_id (DkpDevice *device)
+{
+ GString *string;
+ gchar *id = NULL;
+
+ /* line power */
+ if (device->priv->type == DKP_DEVICE_TYPE_LINE_POWER) {
+ goto out;
+
+ /* batteries */
+ } else if (device->priv->type == DKP_DEVICE_TYPE_BATTERY) {
+ /* we don't have an ID if we are not present */
+ if (!device->priv->is_present)
+ goto out;
+
+ string = g_string_new ("");
+
+ /* in an ideal world, model-capacity-serial */
+ if (device->priv->model != NULL && strlen (device->priv->model) > 2) {
+ g_string_append (string, device->priv->model);
+ g_string_append_c (string, '-');
+ }
+ if (device->priv->energy_full_design > 0) {
+ /* FIXME: this may not be stable if we are using voltage_now */
+ g_string_append_printf (string, "%i", (guint) device->priv->energy_full_design);
+ g_string_append_c (string, '-');
+ }
+ if (device->priv->serial != NULL && strlen (device->priv->serial) > 2) {
+ g_string_append (string, device->priv->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", device->priv->vendor, device->priv->model, device->priv->serial);
+ }
+
+ g_strdelimit (id, "\\\t\"?' /,.", '_');
+
+out:
+ return id;
+}
+
+/**
* dkp_device_coldplug:
**/
gboolean
@@ -302,7 +474,7 @@ dkp_device_coldplug (DkpDevice *device, DkpDaemon *daemon, DevkitDevice *d)
device->priv->daemon = g_object_ref (daemon);
native_path = devkit_device_get_native_path (d);
- device->priv->obj->native_path = g_strdup (native_path);
+ device->priv->native_path = g_strdup (native_path);
/* coldplug source */
ret = klass->coldplug (device);
@@ -320,7 +492,7 @@ dkp_device_coldplug (DkpDevice *device, DkpDaemon *daemon, DevkitDevice *d)
goto out;
/* get the id so we can load the old history */
- id = dkp_object_get_id (device->priv->obj);
+ id = dkp_device_get_id (device);
if (id != NULL)
dkp_history_set_id (device->priv->history, id);
g_free (id);
@@ -346,7 +518,7 @@ dkp_device_get_statistics (DkpDevice *device, const gchar *type, DBusGMethodInvo
g_return_val_if_fail (type != NULL, FALSE);
/* doesn't even try to support this */
- if (!device->priv->obj->has_statistics) {
+ if (!device->priv->has_statistics) {
error = g_error_new (DKP_DAEMON_ERROR, DKP_DAEMON_ERROR_GENERAL, "device does not support getting stats");
dbus_g_method_return_error (context, error);
goto out;
@@ -411,7 +583,7 @@ dkp_device_get_history (DkpDevice *device, const gchar *type_string, guint times
g_return_val_if_fail (type_string != NULL, FALSE);
/* doesn't even try to support this */
- if (!device->priv->obj->has_history) {
+ if (!device->priv->has_history) {
error = g_error_new (DKP_DAEMON_ERROR, DKP_DAEMON_ERROR_GENERAL, "device does not support getting history");
dbus_g_method_return_error (context, error);
goto out;
@@ -443,9 +615,9 @@ dkp_device_get_history (DkpDevice *device, const gchar *type_string, guint times
for (i=0; i<array->len; i++) {
obj = (const DkpHistoryObj *) g_ptr_array_index (array, i);
value = g_new0 (GValue, 1);
- g_value_init (value, DKP_DBUS_STRUCT_UINT_DOUBLE_STRING);
- g_value_take_boxed (value, dbus_g_type_specialized_construct (DKP_DBUS_STRUCT_UINT_DOUBLE_STRING));
- dbus_g_type_struct_set (value, 0, obj->time, 1, obj->value, 2, dkp_device_state_to_text (obj->state), -1);
+ g_value_init (value, DKP_DBUS_STRUCT_UINT_DOUBLE_UINT);
+ g_value_take_boxed (value, dbus_g_type_specialized_construct (DKP_DBUS_STRUCT_UINT_DOUBLE_UINT));
+ dbus_g_type_struct_set (value, 0, obj->time, 1, obj->value, 2, obj->state, -1);
g_ptr_array_add (complex, g_value_get_boxed (value));
g_free (value);
}
@@ -465,38 +637,24 @@ out:
static gboolean
dkp_device_refresh_internal (DkpDevice *device)
{
- DkpObject *obj = dkp_device_get_obj (device);
- DkpObject *obj_old;
gboolean ret;
- gboolean success;
DkpDeviceClass *klass = DKP_DEVICE_GET_CLASS (device);
- /* make a copy so we can see if anything changed */
- obj_old = dkp_object_copy (obj);
-
/* do the refresh */
- success = klass->refresh (device);
- if (!success) {
- egg_warning ("failed to reresh");
+ ret = klass->refresh (device);
+ if (!ret) {
+ egg_debug ("no changes");
goto out;
}
/* the first time, print all properties */
if (!device->priv->has_ever_refresh) {
- egg_debug ("iniital fillup");
- dkp_object_print (obj);
+ egg_debug ("added native-path: %s\n", device->priv->native_path);
device->priv->has_ever_refresh = TRUE;
goto out;
}
-
- /* print difference */
- ret = !dkp_object_equal (obj, obj_old);
- if (ret)
- dkp_object_diff (obj_old, obj);
-
out:
- dkp_object_free (obj_old);
- return success;
+ return ret;
}
/**
@@ -551,13 +709,6 @@ dkp_device_get_object_path (DkpDevice *device)
return device->priv->object_path;
}
-DkpObject *
-dkp_device_get_obj (DkpDevice *device)
-{
- g_return_val_if_fail (DKP_IS_DEVICE (device), NULL);
- return device->priv->obj;
-}
-
DevkitDevice *
dkp_device_get_d (DkpDevice *device)
{
@@ -571,18 +722,16 @@ dkp_device_get_d (DkpDevice *device)
void
dkp_device_emit_changed (DkpDevice *device)
{
- DkpObject *obj = dkp_device_get_obj (device);
-
g_return_if_fail (DKP_IS_DEVICE (device));
/* save new history */
- dkp_history_set_state (device->priv->history, obj->state);
- dkp_history_set_charge_data (device->priv->history, obj->percentage);
- dkp_history_set_rate_data (device->priv->history, obj->energy_rate);
- dkp_history_set_time_full_data (device->priv->history, obj->time_to_full);
- dkp_history_set_time_empty_data (device->priv->history, obj->time_to_empty);
+ dkp_history_set_state (device->priv->history, device->priv->state);
+ dkp_history_set_charge_data (device->priv->history, device->priv->percentage);
+ dkp_history_set_rate_data (device->priv->history, device->priv->energy_rate);
+ dkp_history_set_time_full_data (device->priv->history, device->priv->time_to_full);
+ dkp_history_set_time_empty_data (device->priv->history, device->priv->time_to_empty);
- egg_debug ("emitting changed on %s", device->priv->obj->native_path);
+ egg_debug ("emitting changed on %s", device->priv->native_path);
/* The order here matters; we want Device::Changed() before
* the DeviceChanged() signal on the main object; otherwise
@@ -607,8 +756,8 @@ dkp_device_compute_object_path (DkpDevice *device)
const gchar *type;
guint i;
- type = dkp_device_type_to_text (device->priv->obj->type);
- native_path = device->priv->obj->native_path;
+ type = dkp_device_type_to_text (device->priv->type);
+ native_path = device->priv->native_path;
basename = g_path_get_basename (native_path);
id = g_strjoin ("_", type, basename, NULL);
@@ -665,7 +814,6 @@ dkp_device_init (DkpDevice *device)
device->priv->daemon = NULL;
device->priv->d = NULL;
device->priv->has_ever_refresh = FALSE;
- device->priv->obj = dkp_object_new ();
device->priv->history = dkp_history_new ();
device->priv->system_bus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
@@ -691,7 +839,11 @@ dkp_device_finalize (GObject *object)
g_object_unref (device->priv->d);
g_object_unref (device->priv->daemon);
g_object_unref (device->priv->history);
- dkp_object_free (device->priv->obj);
+ g_free (device->priv->object_path);
+ g_free (device->priv->vendor);
+ g_free (device->priv->model);
+ g_free (device->priv->serial);
+ g_free (device->priv->native_path);
G_OBJECT_CLASS (dkp_device_parent_class)->finalize (object);
}
@@ -704,6 +856,7 @@ dkp_device_class_init (DkpDeviceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->get_property = dkp_device_get_property;
+ object_class->set_property = dkp_device_set_property;
object_class->finalize = dkp_device_finalize;
g_type_class_add_private (klass, sizeof (DkpDevicePrivate));
@@ -718,102 +871,317 @@ dkp_device_class_init (DkpDeviceClass *klass)
dbus_g_object_type_install_info (DKP_TYPE_DEVICE, &dbus_glib_dkp_device_object_info);
+ /**
+ * 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_READWRITE));
+ /**
+ * DkpDevice:vendor:
+ */
+ g_object_class_install_property (object_class,
+ PROP_VENDOR,
+ g_param_spec_string ("vendor",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:model:
+ */
+ g_object_class_install_property (object_class,
+ PROP_MODEL,
+ g_param_spec_string ("model",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:serial:
+ */
+ g_object_class_install_property (object_class,
+ PROP_SERIAL,
+ g_param_spec_string ("serial",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:native-path:
+ */
+ g_object_class_install_property (object_class,
+ PROP_NATIVE_PATH,
+ g_param_spec_string ("native-path",
+ NULL, NULL,
+ NULL,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:power-supply:
+ */
+ g_object_class_install_property (object_class,
+ PROP_POWER_SUPPLY,
+ g_param_spec_boolean ("power-supply",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:online:
+ */
+ g_object_class_install_property (object_class,
+ PROP_ONLINE,
+ g_param_spec_boolean ("online",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:is-present:
+ */
+ g_object_class_install_property (object_class,
+ PROP_IS_PRESENT,
+ g_param_spec_boolean ("is-present",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:is-rechargeable:
+ */
+ g_object_class_install_property (object_class,
+ PROP_IS_RECHARGEABLE,
+ g_param_spec_boolean ("is-rechargeable",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:has-history:
+ */
+ g_object_class_install_property (object_class,
+ PROP_HAS_HISTORY,
+ g_param_spec_boolean ("has-history",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:has-statistics:
+ */
+ g_object_class_install_property (object_class,
+ PROP_HAS_STATISTICS,
+ g_param_spec_boolean ("has-statistics",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:type:
+ */
+ g_object_class_install_property (object_class,
+ PROP_TYPE,
+ g_param_spec_uint ("type",
+ NULL, NULL,
+ 0,
+ DKP_DEVICE_TYPE_LAST,
+ DKP_DEVICE_TYPE_UNKNOWN,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:state:
+ */
+ g_object_class_install_property (object_class,
+ PROP_STATE,
+ g_param_spec_uint ("state",
+ NULL, NULL,
+ 0,
+ DKP_DEVICE_STATE_LAST,
+ DKP_DEVICE_STATE_UNKNOWN,
+ G_PARAM_READWRITE));
+ /**
+ * DkpDevice:technology:
+ */
+ g_object_class_install_property (object_class,
+ PROP_TECHNOLOGY,
+ g_param_spec_uint ("technology",
+ NULL, NULL,
+ 0,
+ DKP_DEVICE_TECHNOLOGY_LAST,
+ DKP_DEVICE_TECHNOLOGY_UNKNOWN,
+ G_PARAM_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+ /**
+ * 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_READWRITE));
+
+#if 0
g_object_class_install_property (
object_class,
PROP_NATIVE_PATH,
- g_param_spec_string ("native-path", NULL, NULL, NULL, G_PARAM_READABLE));
+ g_param_spec_string ("native-path", NULL, NULL, NULL, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_VENDOR,
- g_param_spec_string ("vendor", NULL, NULL, NULL, G_PARAM_READABLE));
+ g_param_spec_string ("vendor", NULL, NULL, NULL, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_MODEL,
- g_param_spec_string ("model", NULL, NULL, NULL, G_PARAM_READABLE));
+ g_param_spec_string ("model", NULL, NULL, NULL, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_SERIAL,
- g_param_spec_string ("serial", NULL, NULL, NULL, G_PARAM_READABLE));
+ g_param_spec_string ("serial", NULL, NULL, NULL, G_PARAM_READWRITE));
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));
+ g_param_spec_uint64 ("update-time", NULL, NULL, 0, G_MAXUINT64, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_TYPE,
- g_param_spec_string ("type", NULL, NULL, NULL, G_PARAM_READABLE));
+ g_param_spec_string ("type", NULL, NULL, NULL, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_POWER_SUPPLY,
- g_param_spec_boolean ("power-supply", NULL, NULL, FALSE, G_PARAM_READABLE));
+ g_param_spec_boolean ("power-supply", NULL, NULL, FALSE, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_LINE_POWER_ONLINE,
- g_param_spec_boolean ("online", NULL, NULL, FALSE, G_PARAM_READABLE));
+ PROP_ONLINE,
+ g_param_spec_boolean ("online", NULL, NULL, FALSE, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_ENERGY,
- g_param_spec_double ("energy", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READABLE));
+ PROP_ENERGY,
+ g_param_spec_double ("energy", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_IS_PRESENT,
- g_param_spec_boolean ("is-present", NULL, NULL, FALSE, G_PARAM_READABLE));
+ PROP_IS_PRESENT,
+ g_param_spec_boolean ("is-present", NULL, NULL, FALSE, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_IS_RECHARGEABLE,
- g_param_spec_boolean ("is-rechargeable", NULL, NULL, FALSE, G_PARAM_READABLE));
+ PROP_IS_RECHARGEABLE,
+ g_param_spec_boolean ("is-rechargeable", NULL, NULL, FALSE, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_HAS_HISTORY,
- g_param_spec_boolean ("has-history", NULL, NULL, FALSE, G_PARAM_READABLE));
+ PROP_HAS_HISTORY,
+ g_param_spec_boolean ("has-history", NULL, NULL, FALSE, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_HAS_STATISTICS,
- g_param_spec_boolean ("has-statistics", NULL, NULL, FALSE, G_PARAM_READABLE));
+ PROP_HAS_STATISTICS,
+ g_param_spec_boolean ("has-statistics", NULL, NULL, FALSE, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_STATE,
- g_param_spec_string ("state", NULL, NULL, NULL, G_PARAM_READABLE));
+ PROP_STATE,
+ g_param_spec_uint ("state", 0, NULL, NULL, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_CAPACITY,
- g_param_spec_double ("capacity", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READABLE));
+ PROP_CAPACITY,
+ g_param_spec_double ("capacity", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_ENERGY_EMPTY,
- g_param_spec_double ("energy-empty", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READABLE));
+ PROP_ENERGY_EMPTY,
+ g_param_spec_double ("energy-empty", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_ENERGY_FULL,
- g_param_spec_double ("energy-full", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READABLE));
+ PROP_ENERGY_FULL,
+ g_param_spec_double ("energy-full", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_ENERGY_FULL_DESIGN,
- g_param_spec_double ("energy-full-design", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READABLE));
+ PROP_ENERGY_FULL_DESIGN,
+ g_param_spec_double ("energy-full-design", NULL, NULL, 0, G_MAXDOUBLE, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_ENERGY_RATE,
- g_param_spec_double ("energy-rate", NULL, NULL, -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READABLE));
+ PROP_ENERGY_RATE,
+ g_param_spec_double ("energy-rate", NULL, NULL, -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_VOLTAGE,
- g_param_spec_double ("voltage", NULL, NULL, -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READABLE));
+ PROP_VOLTAGE,
+ g_param_spec_double ("voltage", NULL, NULL, -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_TIME_TO_EMPTY,
- g_param_spec_int64 ("time-to-empty", NULL, NULL, 0, G_MAXINT64, 0, G_PARAM_READABLE));
+ PROP_TIME_TO_EMPTY,
+ g_param_spec_int64 ("time-to-empty", NULL, NULL, 0, G_MAXINT64, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_TIME_TO_FULL,
- g_param_spec_int64 ("time-to-full", NULL, NULL, 0, G_MAXINT64, 0, G_PARAM_READABLE));
+ PROP_TIME_TO_FULL,
+ g_param_spec_int64 ("time-to-full", NULL, NULL, 0, G_MAXINT64, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_PERCENTAGE,
- g_param_spec_double ("percentage", NULL, NULL, 0, 100, 0, G_PARAM_READABLE));
+ PROP_PERCENTAGE,
+ g_param_spec_double ("percentage", NULL, NULL, 0, 100, 0, G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
- PROP_BATTERY_TECHNOLOGY,
- g_param_spec_string ("technology", NULL, NULL, NULL, G_PARAM_READABLE));
+ PROP_TECHNOLOGY,
+ g_param_spec_string ("technology", NULL, NULL, NULL, G_PARAM_READWRITE));
+#endif
dbus_g_error_domain_register (DKP_DEVICE_ERROR, NULL, DKP_DEVICE_TYPE_ERROR);
}