void is_temperature_sensor_set_celsius_value(IsTemperatureSensor *self, gdouble value) { IsTemperatureSensorPrivate *priv; g_return_if_fail(IS_IS_TEMPERATURE_SENSOR(self)); priv = self->priv; switch (priv->scale) { case IS_TEMPERATURE_SENSOR_SCALE_CELSIUS: break; case IS_TEMPERATURE_SENSOR_SCALE_FAHRENHEIT: value = celcius_to_fahrenheit(value); break; case IS_TEMPERATURE_SENSOR_SCALE_INVALID: case NUM_IS_TEMPERATURE_SENSOR_SCALE: default: g_assert_not_reached(); } is_sensor_set_value(IS_SENSOR(self), value); }
static void update_sensor_value(IsSensor *sensor, IsATIConfigPlugin *self) { const gchar *path; gint gpu; gdouble value = 0.0; gboolean ret = FALSE; GError *error = NULL; path = is_sensor_get_path(sensor); gpu = g_ascii_strtoll(path + strlen(ATICONFIG_PATH_PREFIX), NULL, 10); if (IS_IS_TEMPERATURE_SENSOR(sensor)) { ret = aticonfig_get_temperature(self, gpu, &value, &error); if (ret) { is_temperature_sensor_set_celsius_value(IS_TEMPERATURE_SENSOR(sensor), value); } } else { /* is a fan sensor */ ret = aticonfig_get_fanspeed(self, gpu, &value, &error); if (ret) { is_sensor_set_value(sensor, value); } } /* emit any error which may have occurred */ if (error) { is_sensor_emit_error(sensor, error); g_error_free(error); } }
static void update_sensor_value(IsSensor *sensor, IsFakePlugin *self) { /* fake value */ is_sensor_set_value(sensor, g_rand_double_range(self->priv->rand, is_sensor_get_low_value(sensor), is_sensor_get_high_value(sensor))); }
static void update_sensor_from_max(IsMaxPlugin *self) { IsMaxPluginPrivate *priv; gchar *label; priv = self->priv; label = g_strdup_printf("↑%s", is_sensor_get_label(priv->max)); is_sensor_set_label(priv->sensor, label); is_sensor_set_icon(priv->sensor, is_sensor_get_icon(priv->max)); is_sensor_set_value(priv->sensor, is_sensor_get_value(priv->max)); is_sensor_set_units(priv->sensor, is_sensor_get_units(priv->max)); is_sensor_set_digits(priv->sensor, is_sensor_get_digits(priv->max)); g_free(label); }
static void update_sensor_value(IsSensor *sensor, IsNvidiaPlugin *self) { IsNvidiaPluginPrivate *priv; const gchar *path; guint i; priv = self->priv; path = is_sensor_get_path(sensor); for (i = 0; i < G_N_ELEMENTS(map); i++) { Bool ret; int value; int idx; if (g_strrstr(path, map[i].description) == NULL) { continue; } idx = g_ascii_strtoll(g_strrstr(path, map[i].description) + strlen(map[i].description), NULL, 10); ret = XNVCTRLQueryTargetAttribute(priv->display, map[i].target, idx, 0, map[i].attribute, &value); if (!ret) { GError *error = g_error_new(g_quark_from_string("nvidia-plugin-error-quark"), 0, /* first placeholder is * sensor name */ _("Error getting sensor value for sensor %s"), path); is_sensor_emit_error(sensor, error); g_error_free(error); continue; } if (IS_IS_TEMPERATURE_SENSOR(sensor)) { is_temperature_sensor_set_celsius_value(IS_TEMPERATURE_SENSOR(sensor), value); } else { is_sensor_set_value(sensor, value); } } }
static void on_sensor_disabled(IsManager *manager, IsSensor *sensor, gpointer data) { IsMaxPlugin *self = (IsMaxPlugin *)data; IsMaxPluginPrivate *priv = self->priv; // don't bother monitoring non-temperature sensors if (IS_IS_TEMPERATURE_SENSOR(sensor)) { is_debug("max", "sensor disabled: %s", is_sensor_get_label(sensor)); g_signal_handlers_disconnect_by_func(sensor, G_CALLBACK(on_sensor_value_notify), self); if (priv->max == sensor) { // get all sensors and find the one with the maximum value and switch to // this GSList *sensors, *_list; priv->max = NULL; priv->max_value = 0.0; is_sensor_set_label(priv->sensor, "Δ"); is_sensor_set_icon(priv->sensor, IS_STOCK_CHIP); is_sensor_set_value(priv->sensor, 0.0); is_sensor_set_units(priv->sensor, ""); is_sensor_set_digits(priv->sensor, 1); sensors = is_manager_get_enabled_sensors_list(manager); for (_list = sensors; _list != NULL; _list = _list->next) { if (IS_IS_TEMPERATURE_SENSOR(_list->data)) { on_sensor_value_notify(IS_SENSOR(_list->data), NULL, self); } } } } }
static void is_max_plugin_activate(PeasActivatable *activatable) { IsMaxPlugin *self = IS_MAX_PLUGIN(activatable); IsMaxPluginPrivate *priv = self->priv; IsManager *manager; GSList *sensors, *_list; int i = 0; manager = is_application_get_manager(priv->application); // create our virtual sensor which mimics the current highest value sensor's // value and label is_debug("max", "creating virtual sensor"); priv->sensor = is_sensor_new(MAX_SENSOR_PATH); is_sensor_set_label(priv->sensor, "Δ"); is_sensor_set_icon(priv->sensor, IS_STOCK_CHIP); is_sensor_set_value(priv->sensor, 0.0); is_sensor_set_units(priv->sensor, ""); is_sensor_set_digits(priv->sensor, 1); is_manager_add_sensor(manager, priv->sensor); is_debug("max", "attaching to signals"); sensors = is_manager_get_enabled_sensors_list(manager); for (_list = sensors; _list != NULL; _list = _list->next) { IsSensor *sensor = IS_SENSOR(_list->data); on_sensor_enabled(manager, sensor, i, self); g_object_unref(sensor); i++; } g_slist_free(sensors); g_signal_connect(manager, "sensor-enabled", G_CALLBACK(on_sensor_enabled), self); g_signal_connect(manager, "sensor-disabled", G_CALLBACK(on_sensor_disabled), self); }