2010-01-25 15:20:09 +00:00
|
|
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
|
|
|
|
|
*
|
|
|
|
|
* Copyright (C) 2008 Richard Hughes <richard@hughsie.com>
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the GNU General Public License Version 2
|
|
|
|
|
*
|
|
|
|
|
* 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
|
2010-01-27 16:27:15 +00:00
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
2010-01-25 15:20:09 +00:00
|
|
|
*/
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/**
|
|
|
|
|
* SECTION:up-device
|
|
|
|
|
* @short_description: Client object for accessing information about UPower devices
|
|
|
|
|
*
|
|
|
|
|
* A helper GObject to use for accessing UPower devices, and to be notified
|
|
|
|
|
* when it is changed.
|
|
|
|
|
*
|
|
|
|
|
* See also: #UpClient
|
|
|
|
|
*/
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
#include "config.h"
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <stdio.h>
|
2013-10-10 17:10:26 +02:00
|
|
|
#include <glib-object.h>
|
2010-01-25 15:20:09 +00:00
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
#include "up-device.h"
|
2013-10-10 17:10:26 +02:00
|
|
|
#include "up-device-glue.h"
|
2010-01-26 12:09:03 +00:00
|
|
|
#include "up-stats-item.h"
|
|
|
|
|
#include "up-history-item.h"
|
2010-01-25 15:20:09 +00:00
|
|
|
|
|
|
|
|
static void up_device_class_init (UpDeviceClass *klass);
|
|
|
|
|
static void up_device_init (UpDevice *device);
|
|
|
|
|
static void up_device_finalize (GObject *object);
|
|
|
|
|
|
|
|
|
|
#define UP_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UP_TYPE_DEVICE, UpDevicePrivate))
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/**
|
|
|
|
|
* UpDevicePrivate:
|
|
|
|
|
*
|
|
|
|
|
* Private #PkDevice data
|
|
|
|
|
**/
|
|
|
|
|
struct _UpDevicePrivate
|
2010-01-25 15:20:09 +00:00
|
|
|
{
|
2013-10-10 17:10:26 +02:00
|
|
|
UpDeviceGlue *proxy_device;
|
2013-10-12 15:03:31 +02:00
|
|
|
|
|
|
|
|
/* For use when a UpDevice isn't backed by a D-Bus object
|
|
|
|
|
* by the UPower daemon */
|
|
|
|
|
GHashTable *offline_props;
|
2010-01-25 15:20:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
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,
|
2010-01-26 10:53:04 +00:00
|
|
|
PROP_KIND,
|
2010-01-25 15:20:09 +00:00
|
|
|
PROP_STATE,
|
|
|
|
|
PROP_TECHNOLOGY,
|
|
|
|
|
PROP_CAPACITY,
|
|
|
|
|
PROP_ENERGY,
|
|
|
|
|
PROP_ENERGY_EMPTY,
|
|
|
|
|
PROP_ENERGY_FULL,
|
|
|
|
|
PROP_ENERGY_FULL_DESIGN,
|
|
|
|
|
PROP_ENERGY_RATE,
|
|
|
|
|
PROP_VOLTAGE,
|
2012-10-30 15:12:16 +01:00
|
|
|
PROP_LUMINOSITY,
|
2010-01-25 15:20:09 +00:00
|
|
|
PROP_TIME_TO_EMPTY,
|
|
|
|
|
PROP_TIME_TO_FULL,
|
|
|
|
|
PROP_PERCENTAGE,
|
2013-08-13 10:51:48 -05:00
|
|
|
PROP_TEMPERATURE,
|
2013-10-11 14:29:28 +02:00
|
|
|
PROP_WARNING_LEVEL,
|
2013-10-13 15:21:25 +02:00
|
|
|
PROP_ICON_NAME,
|
2010-01-25 15:20:09 +00:00
|
|
|
PROP_LAST
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
SIGNAL_CHANGED,
|
|
|
|
|
SIGNAL_LAST
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static guint signals [SIGNAL_LAST] = { 0 };
|
|
|
|
|
|
|
|
|
|
G_DEFINE_TYPE (UpDevice, up_device, G_TYPE_OBJECT)
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_changed_cb:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static void
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_changed_cb (UpDeviceGlue *proxy, UpDevice *device)
|
2010-01-25 15:20:09 +00:00
|
|
|
{
|
|
|
|
|
g_return_if_fail (UP_IS_DEVICE (device));
|
|
|
|
|
g_signal_emit (device, signals [SIGNAL_CHANGED], 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* up_device_set_object_path_sync:
|
2010-01-26 12:15:15 +00:00
|
|
|
* @device: a #UpDevice instance.
|
|
|
|
|
* @object_path: The UPower object path.
|
2010-02-05 09:41:06 +00:00
|
|
|
* @cancellable: a #GCancellable or %NULL
|
2010-01-26 12:15:15 +00:00
|
|
|
* @error: a #GError, or %NULL.
|
2010-01-25 15:20:09 +00:00
|
|
|
*
|
|
|
|
|
* Sets the object path of the object and fills up initial properties.
|
|
|
|
|
*
|
|
|
|
|
* Return value: #TRUE for success, else #FALSE and @error is used
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
gboolean
|
2010-02-05 09:41:06 +00:00
|
|
|
up_device_set_object_path_sync (UpDevice *device, const gchar *object_path, GCancellable *cancellable, GError **error)
|
2010-01-25 15:20:09 +00:00
|
|
|
{
|
2013-10-10 17:10:26 +02:00
|
|
|
UpDeviceGlue *proxy_device;
|
2010-01-25 15:20:09 +00:00
|
|
|
|
|
|
|
|
g_return_val_if_fail (UP_IS_DEVICE (device), FALSE);
|
2013-10-10 17:10:26 +02:00
|
|
|
g_return_val_if_fail (object_path != NULL, FALSE);
|
2010-01-25 15:20:09 +00:00
|
|
|
|
2013-10-10 17:10:26 +02:00
|
|
|
if (device->priv->proxy_device != NULL)
|
2010-01-25 15:20:09 +00:00
|
|
|
return FALSE;
|
|
|
|
|
|
2013-10-12 15:03:31 +02:00
|
|
|
g_clear_pointer (&device->priv->offline_props, g_hash_table_unref);
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
/* connect to the correct path for all the other methods */
|
2013-10-10 17:10:26 +02:00
|
|
|
proxy_device = up_device_glue_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
|
|
|
|
|
G_DBUS_PROXY_FLAGS_NONE,
|
|
|
|
|
"org.freedesktop.UPower",
|
|
|
|
|
object_path,
|
|
|
|
|
cancellable,
|
|
|
|
|
error);
|
|
|
|
|
if (proxy_device == NULL)
|
|
|
|
|
return FALSE;
|
2010-01-25 15:20:09 +00:00
|
|
|
|
|
|
|
|
/* listen to Changed */
|
2013-10-10 17:10:26 +02:00
|
|
|
g_signal_connect (proxy_device, "changed",
|
|
|
|
|
G_CALLBACK (up_device_changed_cb), device);
|
2010-01-25 15:20:09 +00:00
|
|
|
|
|
|
|
|
/* yay */
|
|
|
|
|
device->priv->proxy_device = proxy_device;
|
|
|
|
|
|
2013-10-10 17:10:26 +02:00
|
|
|
return TRUE;
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* up_device_get_object_path:
|
2010-01-26 12:15:15 +00:00
|
|
|
* @device: a #UpDevice instance.
|
2010-01-25 15:20:09 +00:00
|
|
|
*
|
|
|
|
|
* Gets the object path for the device.
|
|
|
|
|
*
|
|
|
|
|
* Return value: the object path, or %NULL
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
const gchar *
|
|
|
|
|
up_device_get_object_path (UpDevice *device)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (UP_IS_DEVICE (device), NULL);
|
2013-10-10 17:10:26 +02:00
|
|
|
return g_dbus_proxy_get_object_path (G_DBUS_PROXY (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-26 12:09:03 +00:00
|
|
|
* up_device_to_text_history:
|
|
|
|
|
*/
|
|
|
|
|
static void
|
|
|
|
|
up_device_to_text_history (UpDevice *device, GString *string, const gchar *type)
|
|
|
|
|
{
|
|
|
|
|
guint i;
|
|
|
|
|
GPtrArray *array;
|
|
|
|
|
UpHistoryItem *item;
|
|
|
|
|
|
|
|
|
|
/* get a fair chunk of data */
|
2010-02-05 09:41:06 +00:00
|
|
|
array = up_device_get_history_sync (device, type, 120, 10, NULL, NULL);
|
2010-01-26 12:09:03 +00:00
|
|
|
if (array == NULL)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
/* pretty print */
|
2010-02-05 09:25:08 +00:00
|
|
|
g_string_append_printf (string, " History (%s):\n", type);
|
2010-01-26 12:09:03 +00:00
|
|
|
for (i=0; i<array->len; i++) {
|
|
|
|
|
item = (UpHistoryItem *) g_ptr_array_index (array, i);
|
2010-02-05 09:25:08 +00:00
|
|
|
g_string_append_printf (string, " %i\t%.3f\t%s\n",
|
2010-01-26 12:09:03 +00:00
|
|
|
up_history_item_get_time (item),
|
|
|
|
|
up_history_item_get_value (item),
|
|
|
|
|
up_device_state_to_string (up_history_item_get_state (item)));
|
|
|
|
|
}
|
|
|
|
|
g_ptr_array_unref (array);
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-26 12:15:15 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_bool_to_string:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static const gchar *
|
|
|
|
|
up_device_bool_to_string (gboolean ret)
|
|
|
|
|
{
|
|
|
|
|
return ret ? "yes" : "no";
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_to_text_time_to_string:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static gchar *
|
|
|
|
|
up_device_to_text_time_to_string (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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* up_device_to_text:
|
2010-01-26 12:15:15 +00:00
|
|
|
* @device: a #UpDevice instance.
|
2010-01-25 15:20:09 +00:00
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* Converts the device to a string description.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Return value: text representation of #UpDevice
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
gchar *
|
|
|
|
|
up_device_to_text (UpDevice *device)
|
|
|
|
|
{
|
|
|
|
|
struct tm *time_tm;
|
|
|
|
|
time_t t;
|
|
|
|
|
gchar time_buf[256];
|
|
|
|
|
gchar *time_str;
|
|
|
|
|
GString *string;
|
2013-10-10 17:10:26 +02:00
|
|
|
UpDevicePrivate *priv;
|
|
|
|
|
const gchar *vendor;
|
|
|
|
|
const gchar *model;
|
|
|
|
|
const gchar *serial;
|
|
|
|
|
UpDeviceKind kind;
|
2010-01-25 15:20:09 +00:00
|
|
|
|
|
|
|
|
g_return_val_if_fail (UP_IS_DEVICE (device), NULL);
|
2013-10-12 15:32:34 +02:00
|
|
|
g_return_val_if_fail (device->priv->proxy_device != NULL, NULL);
|
2010-01-25 15:20:09 +00:00
|
|
|
|
2013-10-10 17:10:26 +02:00
|
|
|
priv = device->priv;
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
/* get a human readable time */
|
2013-10-10 17:10:26 +02:00
|
|
|
t = (time_t) up_device_glue_get_update_time (priv->proxy_device);
|
2010-01-25 15:20:09 +00:00
|
|
|
time_tm = localtime (&t);
|
|
|
|
|
strftime (time_buf, sizeof time_buf, "%c", time_tm);
|
|
|
|
|
|
|
|
|
|
string = g_string_new ("");
|
2013-10-10 17:10:26 +02:00
|
|
|
g_string_append_printf (string, " native-path: %s\n", up_device_glue_get_native_path (priv->proxy_device));
|
|
|
|
|
vendor = up_device_glue_get_vendor (priv->proxy_device);
|
|
|
|
|
if (vendor != NULL && vendor[0] != '\0')
|
|
|
|
|
g_string_append_printf (string, " vendor: %s\n", vendor);
|
|
|
|
|
model = up_device_glue_get_model (priv->proxy_device);
|
|
|
|
|
if (model != NULL && model[0] != '\0')
|
|
|
|
|
g_string_append_printf (string, " model: %s\n", model);
|
|
|
|
|
serial = up_device_glue_get_serial (priv->proxy_device);
|
|
|
|
|
if (serial != NULL && serial[0] != '\0')
|
|
|
|
|
g_string_append_printf (string, " serial: %s\n", serial);
|
|
|
|
|
g_string_append_printf (string, " power supply: %s\n", up_device_bool_to_string (up_device_glue_get_power_supply (priv->proxy_device)));
|
|
|
|
|
g_string_append_printf (string, " updated: %s (%d seconds ago)\n", time_buf, (int) (time (NULL) - up_device_glue_get_update_time (priv->proxy_device)));
|
|
|
|
|
g_string_append_printf (string, " has history: %s\n", up_device_bool_to_string (up_device_glue_get_has_history (priv->proxy_device)));
|
|
|
|
|
g_string_append_printf (string, " has statistics: %s\n", up_device_bool_to_string (up_device_glue_get_has_statistics (priv->proxy_device)));
|
|
|
|
|
|
|
|
|
|
kind = up_device_glue_get_type_ (priv->proxy_device);
|
|
|
|
|
g_string_append_printf (string, " %s\n", up_device_kind_to_string (kind));
|
|
|
|
|
|
|
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY ||
|
|
|
|
|
kind == UP_DEVICE_KIND_MOUSE ||
|
|
|
|
|
kind == UP_DEVICE_KIND_KEYBOARD ||
|
|
|
|
|
kind == UP_DEVICE_KIND_UPS)
|
|
|
|
|
g_string_append_printf (string, " present: %s\n", up_device_bool_to_string (up_device_glue_get_is_present (priv->proxy_device)));
|
|
|
|
|
if (kind == UP_DEVICE_KIND_PHONE ||
|
|
|
|
|
kind == UP_DEVICE_KIND_BATTERY ||
|
|
|
|
|
kind == UP_DEVICE_KIND_MOUSE ||
|
|
|
|
|
kind == UP_DEVICE_KIND_KEYBOARD)
|
|
|
|
|
g_string_append_printf (string, " rechargeable: %s\n", up_device_bool_to_string (up_device_glue_get_is_rechargeable (priv->proxy_device)));
|
|
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY ||
|
|
|
|
|
kind == UP_DEVICE_KIND_MOUSE ||
|
|
|
|
|
kind == UP_DEVICE_KIND_KEYBOARD ||
|
|
|
|
|
kind == UP_DEVICE_KIND_UPS)
|
|
|
|
|
g_string_append_printf (string, " state: %s\n", up_device_state_to_string (up_device_glue_get_state (priv->proxy_device)));
|
2013-10-11 14:29:28 +02:00
|
|
|
g_string_append_printf (string, " warning-level: %s\n", up_device_level_to_string (up_device_glue_get_warning_level (priv->proxy_device)));
|
2013-10-10 17:10:26 +02:00
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY) {
|
|
|
|
|
g_string_append_printf (string, " energy: %g Wh\n", up_device_glue_get_energy (priv->proxy_device));
|
|
|
|
|
g_string_append_printf (string, " energy-empty: %g Wh\n", up_device_glue_get_energy_empty (priv->proxy_device));
|
|
|
|
|
g_string_append_printf (string, " energy-full: %g Wh\n", up_device_glue_get_energy_full (priv->proxy_device));
|
|
|
|
|
g_string_append_printf (string, " energy-full-design: %g Wh\n", up_device_glue_get_energy_full_design (priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY ||
|
|
|
|
|
kind == UP_DEVICE_KIND_MONITOR)
|
|
|
|
|
g_string_append_printf (string, " energy-rate: %g W\n", up_device_glue_get_energy_rate (priv->proxy_device));
|
|
|
|
|
if (kind == UP_DEVICE_KIND_UPS ||
|
|
|
|
|
kind == UP_DEVICE_KIND_BATTERY ||
|
|
|
|
|
kind == UP_DEVICE_KIND_MONITOR) {
|
|
|
|
|
if (up_device_glue_get_voltage (priv->proxy_device) > 0)
|
|
|
|
|
g_string_append_printf (string, " voltage: %g V\n", up_device_glue_get_voltage (priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
if (kind == UP_DEVICE_KIND_KEYBOARD) {
|
|
|
|
|
if (up_device_glue_get_luminosity (priv->proxy_device) > 0)
|
|
|
|
|
g_string_append_printf (string, " luminosity: %g lx\n", up_device_glue_get_luminosity (priv->proxy_device));
|
2012-10-30 15:12:16 +01:00
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY ||
|
|
|
|
|
kind == UP_DEVICE_KIND_UPS) {
|
|
|
|
|
if (up_device_glue_get_time_to_full (priv->proxy_device) > 0) {
|
|
|
|
|
time_str = up_device_to_text_time_to_string (up_device_glue_get_time_to_full (priv->proxy_device));
|
2010-02-05 09:25:08 +00:00
|
|
|
g_string_append_printf (string, " time to full: %s\n", time_str);
|
2010-01-25 15:20:09 +00:00
|
|
|
g_free (time_str);
|
|
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
if (up_device_glue_get_time_to_empty (priv->proxy_device) > 0) {
|
|
|
|
|
time_str = up_device_to_text_time_to_string (up_device_glue_get_time_to_empty (priv->proxy_device));
|
2010-02-05 09:25:08 +00:00
|
|
|
g_string_append_printf (string, " time to empty: %s\n", time_str);
|
2010-01-25 15:20:09 +00:00
|
|
|
g_free (time_str);
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY ||
|
|
|
|
|
kind == UP_DEVICE_KIND_MOUSE ||
|
|
|
|
|
kind == UP_DEVICE_KIND_KEYBOARD ||
|
|
|
|
|
kind == UP_DEVICE_KIND_PHONE ||
|
|
|
|
|
kind == UP_DEVICE_KIND_TABLET ||
|
|
|
|
|
kind == UP_DEVICE_KIND_COMPUTER ||
|
|
|
|
|
kind == UP_DEVICE_KIND_MEDIA_PLAYER ||
|
|
|
|
|
kind == UP_DEVICE_KIND_UPS)
|
|
|
|
|
g_string_append_printf (string, " percentage: %g%%\n", up_device_glue_get_percentage (priv->proxy_device));
|
|
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY) {
|
|
|
|
|
if (up_device_glue_get_temperature (priv->proxy_device) > 0)
|
|
|
|
|
g_string_append_printf (string, " temperature: %g degrees C\n", up_device_glue_get_temperature (priv->proxy_device));
|
|
|
|
|
if (up_device_glue_get_capacity (priv->proxy_device) > 0)
|
|
|
|
|
g_string_append_printf (string, " capacity: %g%%\n", up_device_glue_get_capacity (priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
if (kind == UP_DEVICE_KIND_BATTERY) {
|
|
|
|
|
if (up_device_glue_get_technology (priv->proxy_device) != UP_DEVICE_TECHNOLOGY_UNKNOWN)
|
|
|
|
|
g_string_append_printf (string, " technology: %s\n", up_device_technology_to_string (up_device_glue_get_technology (priv->proxy_device)));
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
if (kind == UP_DEVICE_KIND_LINE_POWER)
|
2013-10-11 14:32:28 +02:00
|
|
|
g_string_append_printf (string, " online: %s\n", up_device_bool_to_string (up_device_glue_get_online (priv->proxy_device)));
|
2010-01-25 15:20:09 +00:00
|
|
|
|
2013-10-13 15:21:25 +02:00
|
|
|
g_string_append_printf (string, " icon-name: '%s'\n", up_device_glue_get_icon_name (priv->proxy_device));
|
|
|
|
|
|
2010-01-26 12:09:03 +00:00
|
|
|
/* if we can, get history */
|
2013-10-10 17:10:26 +02:00
|
|
|
if (up_device_glue_get_has_history (priv->proxy_device)) {
|
2010-01-26 12:09:03 +00:00
|
|
|
up_device_to_text_history (device, string, "charge");
|
|
|
|
|
up_device_to_text_history (device, string, "rate");
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
return g_string_free (string, FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* up_device_refresh_sync:
|
2010-01-26 12:15:15 +00:00
|
|
|
* @device: a #UpDevice instance.
|
2010-02-05 09:41:06 +00:00
|
|
|
* @cancellable: a #GCancellable or %NULL
|
2010-01-26 12:15:15 +00:00
|
|
|
* @error: a #GError, or %NULL.
|
2010-01-25 15:20:09 +00:00
|
|
|
*
|
|
|
|
|
* Refreshes properties on the device.
|
|
|
|
|
* This function is normally not required.
|
|
|
|
|
*
|
|
|
|
|
* Return value: #TRUE for success, else #FALSE and @error is used
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
gboolean
|
2010-02-05 09:41:06 +00:00
|
|
|
up_device_refresh_sync (UpDevice *device, GCancellable *cancellable, GError **error)
|
2010-01-25 15:20:09 +00:00
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (UP_IS_DEVICE (device), FALSE);
|
|
|
|
|
g_return_val_if_fail (device->priv->proxy_device != NULL, FALSE);
|
|
|
|
|
|
2013-10-10 17:10:26 +02:00
|
|
|
return up_device_glue_call_refresh_sync (device->priv->proxy_device, cancellable, error);
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
|
|
|
|
|
2010-01-26 12:09:03 +00:00
|
|
|
/**
|
|
|
|
|
* up_device_get_history_sync:
|
2010-01-26 12:15:15 +00:00
|
|
|
* @device: a #UpDevice instance.
|
|
|
|
|
* @type: The type of history, known values are "rate" and "charge".
|
|
|
|
|
* @timespec: the amount of time to look back into time.
|
|
|
|
|
* @resolution: the resolution of data.
|
2010-02-05 09:41:06 +00:00
|
|
|
* @cancellable: a #GCancellable or %NULL
|
2010-01-26 12:15:15 +00:00
|
|
|
* @error: a #GError, or %NULL.
|
2010-01-26 12:09:03 +00:00
|
|
|
*
|
|
|
|
|
* Gets the device history.
|
|
|
|
|
*
|
2013-10-10 22:28:26 +02:00
|
|
|
* Return value: (element-type UpHistoryItem) (transfer full): an array of #UpHistoryItem's, with the most
|
2013-08-21 18:11:52 +02:00
|
|
|
* recent one being first; %NULL if @error is set or @device is
|
|
|
|
|
* invalid
|
2010-01-26 12:09:03 +00:00
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
GPtrArray *
|
2010-02-05 09:41:06 +00:00
|
|
|
up_device_get_history_sync (UpDevice *device, const gchar *type, guint timespec, guint resolution, GCancellable *cancellable, GError **error)
|
2010-01-26 12:09:03 +00:00
|
|
|
{
|
|
|
|
|
GError *error_local = NULL;
|
2013-10-10 17:10:26 +02:00
|
|
|
GVariant *gva;
|
2010-01-26 12:09:03 +00:00
|
|
|
guint i;
|
|
|
|
|
GPtrArray *array = NULL;
|
|
|
|
|
gboolean ret;
|
2013-10-10 17:10:26 +02:00
|
|
|
gsize len;
|
|
|
|
|
GVariantIter *iter;
|
2010-01-26 12:09:03 +00:00
|
|
|
|
|
|
|
|
g_return_val_if_fail (UP_IS_DEVICE (device), NULL);
|
|
|
|
|
g_return_val_if_fail (device->priv->proxy_device != NULL, NULL);
|
|
|
|
|
|
|
|
|
|
/* get compound data */
|
2013-10-10 17:10:26 +02:00
|
|
|
ret = up_device_glue_call_get_history_sync (device->priv->proxy_device,
|
|
|
|
|
type,
|
|
|
|
|
timespec,
|
|
|
|
|
resolution,
|
|
|
|
|
&gva,
|
|
|
|
|
NULL,
|
|
|
|
|
&error_local);
|
2010-01-26 12:09:03 +00:00
|
|
|
if (!ret) {
|
|
|
|
|
g_set_error (error, 1, 0, "GetHistory(%s,%i) on %s failed: %s", type, timespec,
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_get_object_path (device), error_local->message);
|
2010-01-26 12:09:03 +00:00
|
|
|
g_error_free (error_local);
|
|
|
|
|
goto out;
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-10 17:10:26 +02:00
|
|
|
iter = g_variant_iter_new (gva);
|
|
|
|
|
len = g_variant_iter_n_children (iter);
|
|
|
|
|
|
2010-01-26 12:09:03 +00:00
|
|
|
/* no data */
|
2013-10-10 17:10:26 +02:00
|
|
|
if (len == 0) {
|
2010-01-26 12:09:03 +00:00
|
|
|
g_set_error_literal (error, 1, 0, "no data");
|
2013-10-10 17:10:26 +02:00
|
|
|
g_variant_iter_free (iter);
|
2010-01-26 12:09:03 +00:00
|
|
|
goto out;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* convert */
|
|
|
|
|
array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
|
2013-10-10 17:10:26 +02:00
|
|
|
for (i = 0; i < len; i++) {
|
|
|
|
|
UpHistoryItem *obj;
|
|
|
|
|
GVariant *v;
|
|
|
|
|
gdouble value;
|
|
|
|
|
guint32 time, state;
|
|
|
|
|
|
|
|
|
|
v = g_variant_iter_next_value (iter);
|
|
|
|
|
g_variant_get (v, "(udu)",
|
|
|
|
|
&time, &value, &state);
|
|
|
|
|
g_variant_unref (v);
|
|
|
|
|
|
|
|
|
|
obj = up_history_item_new ();
|
|
|
|
|
up_history_item_set_time (obj, time);
|
|
|
|
|
up_history_item_set_value (obj, value);
|
|
|
|
|
up_history_item_set_state (obj, state);
|
|
|
|
|
|
|
|
|
|
g_ptr_array_add (array, obj);
|
2010-01-26 12:09:03 +00:00
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
g_variant_iter_free (iter);
|
2010-01-26 12:09:03 +00:00
|
|
|
|
|
|
|
|
out:
|
2013-10-10 17:10:26 +02:00
|
|
|
if (gva != NULL)
|
|
|
|
|
g_variant_unref (gva);
|
2010-01-26 12:09:03 +00:00
|
|
|
return array;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* up_device_get_statistics_sync:
|
2010-01-26 12:15:15 +00:00
|
|
|
* @device: a #UpDevice instance.
|
|
|
|
|
* @type: the type of statistics.
|
2010-02-05 09:41:06 +00:00
|
|
|
* @cancellable: a #GCancellable or %NULL
|
2010-01-26 12:15:15 +00:00
|
|
|
* @error: a #GError, or %NULL.
|
2010-01-26 12:09:03 +00:00
|
|
|
*
|
|
|
|
|
* Gets the device current statistics.
|
|
|
|
|
*
|
2013-10-10 22:28:26 +02:00
|
|
|
* Return value: (element-type UpStatsItem) (transfer full): an array of #UpStatsItem's, else #NULL and @error is used
|
2010-01-26 12:09:03 +00:00
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
GPtrArray *
|
2010-02-05 09:41:06 +00:00
|
|
|
up_device_get_statistics_sync (UpDevice *device, const gchar *type, GCancellable *cancellable, GError **error)
|
2010-01-26 12:09:03 +00:00
|
|
|
{
|
|
|
|
|
GError *error_local = NULL;
|
2013-10-10 17:10:26 +02:00
|
|
|
GVariant *gva;
|
2010-01-26 12:09:03 +00:00
|
|
|
guint i;
|
|
|
|
|
GPtrArray *array = NULL;
|
|
|
|
|
gboolean ret;
|
2013-10-10 17:10:26 +02:00
|
|
|
gsize len;
|
|
|
|
|
GVariantIter *iter;
|
2010-01-26 12:09:03 +00:00
|
|
|
|
|
|
|
|
g_return_val_if_fail (UP_IS_DEVICE (device), NULL);
|
|
|
|
|
g_return_val_if_fail (device->priv->proxy_device != NULL, NULL);
|
|
|
|
|
|
|
|
|
|
/* get compound data */
|
2013-10-10 17:10:26 +02:00
|
|
|
ret = up_device_glue_call_get_statistics_sync (device->priv->proxy_device,
|
|
|
|
|
type,
|
|
|
|
|
&gva,
|
|
|
|
|
NULL,
|
|
|
|
|
&error_local);
|
2010-01-26 12:09:03 +00:00
|
|
|
if (!ret) {
|
|
|
|
|
g_set_error (error, 1, 0, "GetStatistics(%s) on %s failed: %s", type,
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_get_object_path (device), error_local->message);
|
2010-01-26 12:09:03 +00:00
|
|
|
g_error_free (error_local);
|
|
|
|
|
goto out;
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-10 17:10:26 +02:00
|
|
|
iter = g_variant_iter_new (gva);
|
|
|
|
|
len = g_variant_iter_n_children (iter);
|
|
|
|
|
|
2010-01-26 12:09:03 +00:00
|
|
|
/* no data */
|
2013-10-10 17:10:26 +02:00
|
|
|
if (len == 0) {
|
2010-01-26 12:09:03 +00:00
|
|
|
g_set_error_literal (error, 1, 0, "no data");
|
2013-10-10 17:10:26 +02:00
|
|
|
g_variant_iter_free (iter);
|
2010-01-26 12:09:03 +00:00
|
|
|
goto out;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* convert */
|
2013-10-10 17:10:26 +02:00
|
|
|
array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
|
|
|
|
|
for (i = 0; i < len; i++) {
|
|
|
|
|
UpStatsItem *obj;
|
|
|
|
|
GVariant *v;
|
|
|
|
|
gdouble value, accuracy;
|
|
|
|
|
|
|
|
|
|
v = g_variant_iter_next_value (iter);
|
|
|
|
|
g_variant_get (v, "(dd)",
|
|
|
|
|
&value, &accuracy);
|
|
|
|
|
g_variant_unref (v);
|
|
|
|
|
|
|
|
|
|
obj = up_stats_item_new ();
|
|
|
|
|
up_stats_item_set_value (obj, value);
|
|
|
|
|
up_stats_item_set_accuracy (obj, accuracy);
|
|
|
|
|
|
|
|
|
|
g_ptr_array_add (array, obj);
|
2010-01-26 12:09:03 +00:00
|
|
|
}
|
2013-10-10 17:10:26 +02:00
|
|
|
g_variant_iter_free (iter);
|
|
|
|
|
|
2010-01-26 12:09:03 +00:00
|
|
|
out:
|
2013-10-10 17:10:26 +02:00
|
|
|
if (gva != NULL)
|
|
|
|
|
g_variant_unref (gva);
|
2010-01-26 12:09:03 +00:00
|
|
|
return array;
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_set_property:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static void
|
|
|
|
|
up_device_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
|
|
|
|
|
{
|
|
|
|
|
UpDevice *device = UP_DEVICE (object);
|
|
|
|
|
|
2013-10-12 15:03:31 +02:00
|
|
|
if (device->priv->proxy_device == NULL) {
|
|
|
|
|
GValue *v;
|
|
|
|
|
|
|
|
|
|
v = g_memdup (value, sizeof(GValue));
|
|
|
|
|
g_value_copy (value, v);
|
|
|
|
|
g_hash_table_insert (device->priv->offline_props, GUINT_TO_POINTER (prop_id), v);
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
switch (prop_id) {
|
|
|
|
|
case PROP_NATIVE_PATH:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_native_path (device->priv->proxy_device, g_value_get_string (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_VENDOR:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_vendor (device->priv->proxy_device, g_value_get_string (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_MODEL:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_model (device->priv->proxy_device, g_value_get_string (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_SERIAL:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_serial (device->priv->proxy_device, g_value_get_string (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_UPDATE_TIME:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_update_time (device->priv->proxy_device, g_value_get_uint64 (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
2010-01-26 10:53:04 +00:00
|
|
|
case PROP_KIND:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_type_ (device->priv->proxy_device, g_value_get_uint (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_POWER_SUPPLY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_power_supply (device->priv->proxy_device, g_value_get_boolean (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ONLINE:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_online (device->priv->proxy_device, g_value_get_boolean (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_IS_PRESENT:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_is_present (device->priv->proxy_device, g_value_get_boolean (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_IS_RECHARGEABLE:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_is_rechargeable (device->priv->proxy_device, g_value_get_boolean (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_HAS_HISTORY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_has_history (device->priv->proxy_device, g_value_get_boolean (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_HAS_STATISTICS:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_has_statistics (device->priv->proxy_device, g_value_get_boolean (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_STATE:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_state (device->priv->proxy_device, g_value_get_uint (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_CAPACITY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_capacity (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_energy (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_EMPTY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_energy_empty (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_FULL:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_energy_full (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_FULL_DESIGN:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_energy_full_design (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_RATE:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_energy_rate (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_VOLTAGE:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_voltage (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
2012-10-30 15:12:16 +01:00
|
|
|
case PROP_LUMINOSITY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_luminosity (device->priv->proxy_device, g_value_get_double (value));
|
2012-10-30 15:12:16 +01:00
|
|
|
break;
|
2010-01-25 15:20:09 +00:00
|
|
|
case PROP_TIME_TO_EMPTY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_time_to_empty (device->priv->proxy_device, g_value_get_int64 (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_TIME_TO_FULL:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_time_to_full (device->priv->proxy_device, g_value_get_int64 (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_PERCENTAGE:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_percentage (device->priv->proxy_device, g_value_get_double (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
2013-08-13 10:51:48 -05:00
|
|
|
case PROP_TEMPERATURE:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_temperature (device->priv->proxy_device, g_value_get_double (value));
|
2013-08-13 10:51:48 -05:00
|
|
|
break;
|
2010-01-25 15:20:09 +00:00
|
|
|
case PROP_TECHNOLOGY:
|
2013-10-10 17:10:26 +02:00
|
|
|
up_device_glue_set_technology (device->priv->proxy_device, g_value_get_uint (value));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
2013-10-11 14:29:28 +02:00
|
|
|
case PROP_WARNING_LEVEL:
|
|
|
|
|
up_device_glue_set_warning_level (device->priv->proxy_device, g_value_get_uint (value));
|
|
|
|
|
break;
|
2013-10-13 15:21:25 +02:00
|
|
|
case PROP_ICON_NAME:
|
|
|
|
|
up_device_glue_set_icon_name (device->priv->proxy_device, g_value_get_string (value));
|
|
|
|
|
break;
|
2010-01-25 15:20:09 +00:00
|
|
|
default:
|
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_get_property:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static void
|
|
|
|
|
up_device_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
|
|
|
|
{
|
|
|
|
|
UpDevice *device = UP_DEVICE (object);
|
|
|
|
|
|
2013-10-12 15:03:31 +02:00
|
|
|
if (device->priv->proxy_device == NULL) {
|
|
|
|
|
GValue *v;
|
|
|
|
|
|
|
|
|
|
v = g_hash_table_lookup (device->priv->offline_props, GUINT_TO_POINTER(prop_id));
|
|
|
|
|
if (v)
|
|
|
|
|
g_value_copy (v, value);
|
|
|
|
|
else
|
|
|
|
|
g_warning ("Property ID %d was never set", prop_id);
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
switch (prop_id) {
|
|
|
|
|
case PROP_UPDATE_TIME:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_uint64 (value, up_device_glue_get_update_time (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_VENDOR:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_string (value, up_device_glue_get_vendor (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_MODEL:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_string (value, up_device_glue_get_model (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_SERIAL:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_string (value, up_device_glue_get_serial (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_NATIVE_PATH:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_string (value, up_device_glue_get_native_path (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_POWER_SUPPLY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_boolean (value, up_device_glue_get_power_supply (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ONLINE:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_boolean (value, up_device_glue_get_online (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_IS_PRESENT:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_boolean (value, up_device_glue_get_is_present (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_IS_RECHARGEABLE:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_boolean (value, up_device_glue_get_is_rechargeable (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_HAS_HISTORY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_boolean (value, up_device_glue_get_has_history (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_HAS_STATISTICS:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_boolean (value, up_device_glue_get_has_statistics (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
2010-01-26 10:53:04 +00:00
|
|
|
case PROP_KIND:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_uint (value, up_device_glue_get_type_ (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_STATE:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_uint (value, up_device_glue_get_state (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_TECHNOLOGY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_uint (value, up_device_glue_get_technology (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_CAPACITY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_capacity (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_energy (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_EMPTY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_energy_empty (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_FULL:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_energy_full (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_FULL_DESIGN:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_energy_full_design (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_ENERGY_RATE:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_energy_rate (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_VOLTAGE:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_voltage (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
2012-10-30 15:12:16 +01:00
|
|
|
case PROP_LUMINOSITY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_luminosity (device->priv->proxy_device));
|
2012-10-30 15:12:16 +01:00
|
|
|
break;
|
2010-01-25 15:20:09 +00:00
|
|
|
case PROP_TIME_TO_EMPTY:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_int64 (value, up_device_glue_get_time_to_empty (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_TIME_TO_FULL:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_int64 (value, up_device_glue_get_time_to_full (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
|
|
|
|
case PROP_PERCENTAGE:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_percentage (device->priv->proxy_device));
|
2010-01-25 15:20:09 +00:00
|
|
|
break;
|
2013-08-13 10:51:48 -05:00
|
|
|
case PROP_TEMPERATURE:
|
2013-10-10 17:10:26 +02:00
|
|
|
g_value_set_double (value, up_device_glue_get_temperature (device->priv->proxy_device));
|
2013-08-13 10:51:48 -05:00
|
|
|
break;
|
2013-10-11 14:29:28 +02:00
|
|
|
case PROP_WARNING_LEVEL:
|
|
|
|
|
g_value_set_uint (value, up_device_glue_get_warning_level (device->priv->proxy_device));
|
|
|
|
|
break;
|
2013-10-13 15:21:25 +02:00
|
|
|
case PROP_ICON_NAME:
|
|
|
|
|
g_value_set_string (value, up_device_glue_get_icon_name (device->priv->proxy_device));
|
|
|
|
|
break;
|
2010-01-25 15:20:09 +00:00
|
|
|
default:
|
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_class_init:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static void
|
|
|
|
|
up_device_class_init (UpDeviceClass *klass)
|
|
|
|
|
{
|
|
|
|
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
|
|
|
object_class->finalize = up_device_finalize;
|
|
|
|
|
object_class->set_property = up_device_set_property;
|
|
|
|
|
object_class->get_property = up_device_get_property;
|
|
|
|
|
|
|
|
|
|
/**
|
2010-01-25 16:26:47 +00:00
|
|
|
* UpDevice::changed:
|
2010-01-25 15:20:09 +00:00
|
|
|
* @device: the #UpDevice instance that emitted the signal
|
|
|
|
|
*
|
|
|
|
|
* The ::changed signal is emitted when the device data has changed.
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
signals [SIGNAL_CHANGED] =
|
|
|
|
|
g_signal_new ("changed",
|
|
|
|
|
G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
|
|
|
|
|
G_STRUCT_OFFSET (UpDeviceClass, changed),
|
|
|
|
|
NULL, NULL, g_cclosure_marshal_VOID__VOID,
|
|
|
|
|
G_TYPE_NONE, 0);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:update-time:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The last time the device was updated.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:vendor:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The vendor of the device.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_VENDOR,
|
|
|
|
|
g_param_spec_string ("vendor",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:model:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The model of the device.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_MODEL,
|
|
|
|
|
g_param_spec_string ("model",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:serial:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The serial number of the device.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_SERIAL,
|
|
|
|
|
g_param_spec_string ("serial",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:native-path:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The native path of the device, useful for direct device access.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_NATIVE_PATH,
|
|
|
|
|
g_param_spec_string ("native-path",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:power-supply:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* If the device is powering the system.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_POWER_SUPPLY,
|
|
|
|
|
g_param_spec_boolean ("power-supply",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
FALSE,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:online:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* If the device is online, i.e. connected.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_ONLINE,
|
|
|
|
|
g_param_spec_boolean ("online",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
FALSE,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:is-present:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* If the device is present, as some devices like laptop batteries
|
|
|
|
|
* can be removed, leaving an empty bay that is still technically a
|
|
|
|
|
* device.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_IS_PRESENT,
|
|
|
|
|
g_param_spec_boolean ("is-present",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
FALSE,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:is-rechargeable:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* If the device has a rechargable battery.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_IS_RECHARGEABLE,
|
|
|
|
|
g_param_spec_boolean ("is-rechargeable",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
FALSE,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:has-history:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* If the device has history data that might be useful.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_HAS_HISTORY,
|
|
|
|
|
g_param_spec_boolean ("has-history",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
FALSE,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:has-statistics:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* If the device has statistics data that might be useful.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_HAS_STATISTICS,
|
|
|
|
|
g_param_spec_boolean ("has-statistics",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
FALSE,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
2010-01-26 10:53:04 +00:00
|
|
|
* UpDevice:kind:
|
2010-01-25 15:20:09 +00:00
|
|
|
*
|
2010-01-26 10:53:04 +00:00
|
|
|
* The device kind, e.g. %UP_DEVICE_KIND_KEYBOARD.
|
2010-01-25 16:26:47 +00:00
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
2010-01-26 10:53:04 +00:00
|
|
|
PROP_KIND,
|
|
|
|
|
g_param_spec_uint ("kind",
|
2010-01-25 15:20:09 +00:00
|
|
|
NULL, NULL,
|
2010-01-26 10:53:04 +00:00
|
|
|
UP_DEVICE_KIND_UNKNOWN,
|
|
|
|
|
UP_DEVICE_KIND_LAST,
|
|
|
|
|
UP_DEVICE_KIND_UNKNOWN,
|
2010-01-25 15:20:09 +00:00
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:state:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The state the device is in at this time, e.g. %UP_DEVICE_STATE_EMPTY.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_STATE,
|
|
|
|
|
g_param_spec_uint ("state",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
UP_DEVICE_STATE_UNKNOWN,
|
|
|
|
|
UP_DEVICE_STATE_LAST,
|
|
|
|
|
UP_DEVICE_STATE_UNKNOWN,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:technology:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The battery technology e.g. %UP_DEVICE_TECHNOLOGY_LITHIUM_ION.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_TECHNOLOGY,
|
|
|
|
|
g_param_spec_uint ("technology",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
UP_DEVICE_TECHNOLOGY_UNKNOWN,
|
|
|
|
|
UP_DEVICE_TECHNOLOGY_LAST,
|
|
|
|
|
UP_DEVICE_TECHNOLOGY_UNKNOWN,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:capacity:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The percentage capacity of the device where 100% means the device has
|
|
|
|
|
* the same charge potential as when it was manufactured.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:energy:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The energy left in the device. Measured in mWh.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:energy-empty:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The energy the device will have when it is empty. This is usually zero.
|
|
|
|
|
* Measured in mWh.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:energy-full:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The amount of energy when the device is fully charged. Measured in mWh.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:energy-full-design:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The amount of energy when the device was brand new. Measured in mWh.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:energy-rate:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The rate of discharge or charge. Measured in mW.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:voltage:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The current voltage of the device.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
2012-10-30 15:12:16 +01:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:luminosity:
|
|
|
|
|
*
|
|
|
|
|
* The current luminosity of the device.
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.19
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_LUMINOSITY,
|
|
|
|
|
g_param_spec_double ("luminosity", NULL, NULL,
|
|
|
|
|
0.0, G_MAXDOUBLE, 0.0,
|
|
|
|
|
G_PARAM_READWRITE));
|
2010-01-25 15:20:09 +00:00
|
|
|
/**
|
|
|
|
|
* UpDevice:time-to-empty:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The amount of time until the device is empty.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:time-to-full:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The amount of time until the device is fully charged.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
|
|
|
|
/**
|
|
|
|
|
* UpDevice:percentage:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* The percentage charge of the device.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
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));
|
2013-08-13 10:51:48 -05:00
|
|
|
/**
|
|
|
|
|
* UpDevice:temperature:
|
|
|
|
|
*
|
|
|
|
|
* The temperature of the device in degrees Celsius.
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.22
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_TEMPERATURE,
|
|
|
|
|
g_param_spec_double ("temperature", NULL, NULL,
|
|
|
|
|
0.0, G_MAXDOUBLE, 0.0,
|
|
|
|
|
G_PARAM_READWRITE));
|
2013-10-11 14:29:28 +02:00
|
|
|
/**
|
|
|
|
|
* UpDevice:warning-level:
|
|
|
|
|
*
|
|
|
|
|
* The warning level e.g. %UP_DEVICE_LEVEL_WARNING.
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_WARNING_LEVEL,
|
|
|
|
|
g_param_spec_uint ("warning-level",
|
|
|
|
|
NULL, NULL,
|
|
|
|
|
UP_DEVICE_LEVEL_UNKNOWN,
|
|
|
|
|
UP_DEVICE_LEVEL_LAST,
|
|
|
|
|
UP_DEVICE_LEVEL_UNKNOWN,
|
|
|
|
|
G_PARAM_READWRITE));
|
2010-01-25 15:20:09 +00:00
|
|
|
|
2013-10-13 15:21:25 +02:00
|
|
|
/**
|
|
|
|
|
* UpDevice:icon-name:
|
|
|
|
|
*
|
|
|
|
|
* The icon name, following the Icon Naming Speficiation
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.0
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property (object_class,
|
|
|
|
|
PROP_ICON_NAME,
|
|
|
|
|
g_param_spec_string ("icon-name",
|
|
|
|
|
NULL, NULL, NULL,
|
|
|
|
|
G_PARAM_READWRITE));
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
g_type_class_add_private (klass, sizeof (UpDevicePrivate));
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-12 15:03:31 +02:00
|
|
|
static void
|
|
|
|
|
value_free (GValue *value)
|
|
|
|
|
{
|
|
|
|
|
g_value_unset (value);
|
|
|
|
|
g_free (value);
|
|
|
|
|
}
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_init:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static void
|
|
|
|
|
up_device_init (UpDevice *device)
|
|
|
|
|
{
|
|
|
|
|
device->priv = UP_DEVICE_GET_PRIVATE (device);
|
2013-10-12 15:03:31 +02:00
|
|
|
device->priv->offline_props = g_hash_table_new_full (g_direct_hash,
|
|
|
|
|
g_direct_equal,
|
|
|
|
|
NULL,
|
|
|
|
|
(GDestroyNotify) value_free);
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|
|
|
|
|
|
2010-01-25 16:26:47 +00:00
|
|
|
/*
|
2010-01-25 15:20:09 +00:00
|
|
|
* up_device_finalize:
|
2010-01-25 16:26:47 +00:00
|
|
|
*/
|
2010-01-25 15:20:09 +00:00
|
|
|
static void
|
|
|
|
|
up_device_finalize (GObject *object)
|
|
|
|
|
{
|
|
|
|
|
UpDevice *device;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (UP_IS_DEVICE (object));
|
|
|
|
|
|
|
|
|
|
device = UP_DEVICE (object);
|
|
|
|
|
|
|
|
|
|
if (device->priv->proxy_device != NULL)
|
|
|
|
|
g_object_unref (device->priv->proxy_device);
|
|
|
|
|
|
2013-10-12 15:03:31 +02:00
|
|
|
g_clear_pointer (&device->priv->offline_props, g_hash_table_unref);
|
|
|
|
|
|
2010-01-25 15:20:09 +00:00
|
|
|
G_OBJECT_CLASS (up_device_parent_class)->finalize (object);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* up_device_new:
|
|
|
|
|
*
|
2010-01-25 16:26:47 +00:00
|
|
|
* Creates a new #UpDevice object.
|
|
|
|
|
*
|
2010-01-25 15:20:09 +00:00
|
|
|
* Return value: a new UpDevice object.
|
|
|
|
|
*
|
|
|
|
|
* Since: 0.9.0
|
|
|
|
|
**/
|
|
|
|
|
UpDevice *
|
|
|
|
|
up_device_new (void)
|
|
|
|
|
{
|
2013-10-10 16:02:05 +02:00
|
|
|
return UP_DEVICE (g_object_new (UP_TYPE_DEVICE, NULL));
|
2010-01-25 15:20:09 +00:00
|
|
|
}
|