/** * up_backend_init: **/ static void up_backend_init (UpBackend *backend) { GError *err = NULL; GTimeVal timeval; UpDeviceClass *device_class; backend->priv = UP_BACKEND_GET_PRIVATE (backend); backend->priv->daemon = NULL; backend->priv->is_laptop = up_native_is_laptop(); g_debug("is_laptop:%d",backend->priv->is_laptop); if (backend->priv->is_laptop) { backend->priv->ac = UP_DEVICE(up_device_new()); backend->priv->battery = UP_DEVICE(up_device_new ()); device_class = UP_DEVICE_GET_CLASS (backend->priv->battery); device_class->get_on_battery = up_apm_device_get_on_battery; device_class->get_low_battery = up_apm_device_get_low_battery; device_class->get_online = up_apm_device_get_online; device_class->refresh = up_apm_device_refresh; device_class = UP_DEVICE_GET_CLASS (backend->priv->ac); device_class->get_on_battery = up_apm_device_get_on_battery; device_class->get_low_battery = up_apm_device_get_low_battery; device_class->get_online = up_apm_device_get_online; device_class->refresh = up_apm_device_refresh; g_thread_init (NULL); /* creates thread */ if((backend->priv->apm_thread = (GThread*) g_thread_create((GThreadFunc)up_backend_apm_event_thread, (void*) backend, FALSE, &err) == NULL)) { g_warning("Thread create failed: %s", err->message); g_error_free (err); } /* setup dummy */ g_get_current_time (&timeval); g_object_set (backend->priv->battery, "type", UP_DEVICE_KIND_BATTERY, "power-supply", TRUE, "is-present", TRUE, "is-rechargeable", TRUE, "has-history", TRUE, "state", UP_DEVICE_STATE_UNKNOWN, "percentage", 0.0f, "time-to-empty", (gint64) 0, "update-time", (guint64) timeval.tv_sec, (void*) NULL); g_object_set (backend->priv->ac, "type", UP_DEVICE_KIND_LINE_POWER, "online", TRUE, "power-supply", TRUE, "update-time", (guint64) timeval.tv_sec, (void*) NULL); } else { backend->priv->ac = NULL; backend->priv->battery = NULL; } }
/** * up_device_finalize: **/ static void up_device_finalize (GObject *object) { UpDevice *device; g_return_if_fail (object != NULL); g_return_if_fail (UP_IS_DEVICE (object)); device = UP_DEVICE (object); g_return_if_fail (device->priv != NULL); if (device->priv->native != NULL) g_object_unref (device->priv->native); if (device->priv->daemon != NULL) g_object_unref (device->priv->daemon); g_object_unref (device->priv->history); 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_free (device->priv->recall_vendor); g_free (device->priv->recall_url); G_OBJECT_CLASS (up_device_parent_class)->finalize (object); }
/** * up_device_new: **/ UpDevice * up_device_new (void) { UpDevice *device; device = UP_DEVICE (g_object_new (UP_TYPE_DEVICE, NULL)); return device; }
/** * up_device_set_property: **/ static void up_device_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { UpDevice *device = UP_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; case PROP_RECALL_NOTICE: device->priv->recall_notice = g_value_get_boolean (value); break; case PROP_RECALL_VENDOR: g_free (device->priv->recall_vendor); device->priv->recall_vendor = g_strdup (g_value_get_string (value)); break; case PROP_RECALL_URL: g_free (device->priv->recall_url); device->priv->recall_url = g_strdup (g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
/** * up_device_new: **/ UpDevice * up_device_new (void) { return UP_DEVICE (g_object_new (UP_TYPE_DEVICE, NULL)); }