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);
	}
}
Exemplo n.º 3
0
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)));
}
Exemplo n.º 4
0
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);
		}
	}
}
Exemplo n.º 6
0
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);
        }
      }
    }
  }
}
Exemplo n.º 7
0
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);

}