Ejemplo n.º 1
0
/* Execute all set statements for this particular chip. The chip may not 
   contain wildcards!  This function will return 0 on success, and <0 on 
   failure. */
static int sensors_do_this_chip_sets(const sensors_chip_name *name)
{
	const sensors_chip_features *chip_features;
	sensors_chip *chip;
	double value;
	int i;
	int err = 0, res;
	const sensors_subfeature *subfeature;

	chip_features = sensors_lookup_chip(name);	/* Can't fail */

	for (chip = NULL; (chip = sensors_for_all_config_chips(name, chip));)
		for (i = 0; i < chip->sets_count; i++) {
			subfeature = sensors_lookup_subfeature_name(chip_features,
							chip->sets[i].name);
			if (!subfeature) {
				sensors_parse_error_wfn("Unknown feature name",
						    chip->sets[i].line.filename,
						    chip->sets[i].line.lineno);
				err = -SENSORS_ERR_NO_ENTRY;
				continue;
			}

			res = sensors_eval_expr(chip_features,
						chip->sets[i].value, 0,
						0, &value);
			if (res) {
				sensors_parse_error_wfn("Error parsing expression",
						    chip->sets[i].line.filename,
						    chip->sets[i].line.lineno);
				err = res;
				continue;
			}
			if ((res = sensors_set_value(name, subfeature->number,
						     value))) {
				sensors_parse_error_wfn("Failed to set value",
						chip->sets[i].line.filename,
						chip->sets[i].line.lineno);
				err = res;
				continue;
			}
		}
	return err;
}
Ejemplo n.º 2
0
static PyObject*
set_value(ChipName *self, PyObject *args, PyObject *kwargs)
{
    char *kwlist[] = {"subfeat_nr", "value", NULL};
    int subfeat_nr = -1;
    double value = 0.0;

    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "id", kwlist,
                                     &subfeat_nr, &value))
    {
        return NULL;
    }

    int status = sensors_set_value(&self->chip_name, subfeat_nr, value);

    if (status < 0)
    {
        PyErr_SetString(SensorsException, sensors_strerror(status));
        return NULL;
    }

    Py_RETURN_NONE;
}