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); }
IsTemperatureSensorScale is_temperature_sensor_get_scale(IsTemperatureSensor *self) { g_return_val_if_fail(IS_IS_TEMPERATURE_SENSOR(self), 0); return self->priv->scale; }
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 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); } } } } }
void is_temperature_sensor_set_scale(IsTemperatureSensor *self, IsTemperatureSensorScale scale) { IsTemperatureSensorPrivate *priv; g_return_if_fail(IS_IS_TEMPERATURE_SENSOR(self)); g_return_if_fail(scale == IS_TEMPERATURE_SENSOR_SCALE_CELSIUS || scale == IS_TEMPERATURE_SENSOR_SCALE_FAHRENHEIT); priv = self->priv; if (scale != priv->scale) { gdouble value = is_sensor_get_value(IS_SENSOR(self)); gdouble alarm_value = is_sensor_get_alarm_value(IS_SENSOR(self)); gdouble low_value = is_sensor_get_low_value(IS_SENSOR(self)); gdouble high_value = is_sensor_get_high_value(IS_SENSOR(self)); /* convert from current scale to new */ switch (priv->scale) { case IS_TEMPERATURE_SENSOR_SCALE_CELSIUS: value = celcius_to_fahrenheit(value); alarm_value = celcius_to_fahrenheit(alarm_value); low_value = celcius_to_fahrenheit(low_value); high_value = celcius_to_fahrenheit(high_value); break; case IS_TEMPERATURE_SENSOR_SCALE_FAHRENHEIT: value = fahrenheit_to_celcius(value); alarm_value = fahrenheit_to_celcius(alarm_value); low_value = fahrenheit_to_celcius(low_value); high_value = fahrenheit_to_celcius(high_value); break; case IS_TEMPERATURE_SENSOR_SCALE_INVALID: case NUM_IS_TEMPERATURE_SENSOR_SCALE: default: g_assert_not_reached(); break; } priv->scale = scale; is_sensor_set_units(IS_SENSOR(self), is_temperature_sensor_scale_to_string(priv->scale)); /* set all in one go */ g_object_set(self, "value", value, "alarm-value", alarm_value, "low-value", low_value, "high-value", high_value, NULL); } }
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_enabled(IsManager *manager, IsSensor *sensor, gint index, gpointer data) { IsMaxPlugin *self = (IsMaxPlugin *)data; // don't bother monitoring non-temperature sensors if (IS_IS_TEMPERATURE_SENSOR(sensor)) { is_debug("max", "sensor enabled: %s", is_sensor_get_label(sensor)); on_sensor_value_notify(sensor, NULL, self); g_signal_connect(sensor, "notify::value", G_CALLBACK(on_sensor_value_notify), self); } }