/* 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; }
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; }