* [lm-sensors] [PATCH 2/2] libsensors: Add support for current sensors
@ 2008-10-22 11:57 Jean Delvare
2008-10-22 12:47 ` [lm-sensors] [PATCH 2/2] libsensors: Add support for current Hans de Goede
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Jean Delvare @ 2008-10-22 11:57 UTC (permalink / raw)
To: lm-sensors
Add support for current sensors.
---
The code for function print_chip_curr() is duplicated directly from
print_chip_in() with IN subfeature names replaced by their CURR
counterparts and V changed to A.
Applies on top of the previous patch. I'd appreciate review and testing
of this patch. Vincent, this should show you the current values you
were missing so far.
doc/libsensors-API.txt | 9 ++++++
lib/sensors.h | 9 ++++++
lib/sysfs.c | 16 ++++++++++-
prog/sensors/chips.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 102 insertions(+), 1 deletion(-)
--- lm-sensors-3.orig/lib/sensors.h 2008-10-22 12:03:36.000000000 +0200
+++ lm-sensors-3/lib/sensors.h 2008-10-22 12:06:50.000000000 +0200
@@ -134,6 +134,7 @@ typedef enum sensors_feature_type {
SENSORS_FEATURE_TEMP = 0x02,
SENSORS_FEATURE_POWER = 0x03,
SENSORS_FEATURE_ENERGY = 0x04,
+ SENSORS_FEATURE_CURR = 0x05,
SENSORS_FEATURE_VID = 0x10,
SENSORS_FEATURE_BEEP_ENABLE = 0x18,
SENSORS_FEATURE_UNKNOWN = INT_MAX,
@@ -182,6 +183,14 @@ typedef enum sensors_subfeature_type {
SENSORS_SUBFEATURE_ENERGY_INPUT = SENSORS_FEATURE_ENERGY << 8,
+ SENSORS_SUBFEATURE_CURR_INPUT = SENSORS_FEATURE_CURR << 8,
+ SENSORS_SUBFEATURE_CURR_MIN,
+ SENSORS_SUBFEATURE_CURR_MAX,
+ SENSORS_SUBFEATURE_CURR_ALARM = (SENSORS_FEATURE_CURR << 8) | 0x80,
+ SENSORS_SUBFEATURE_CURR_MIN_ALARM,
+ SENSORS_SUBFEATURE_CURR_MAX_ALARM,
+ SENSORS_SUBFEATURE_CURR_BEEP,
+
SENSORS_SUBFEATURE_VID = SENSORS_FEATURE_VID << 8,
SENSORS_SUBFEATURE_BEEP_ENABLE = SENSORS_FEATURE_BEEP_ENABLE << 8,
--- lm-sensors-3.orig/lib/sysfs.c 2008-10-22 12:03:36.000000000 +0200
+++ lm-sensors-3/lib/sysfs.c 2008-10-22 12:06:50.000000000 +0200
@@ -138,7 +138,7 @@ char sensors_sysfs_mount[NAME_MAX];
#define MAX_SENSORS_PER_TYPE 20
#define MAX_SUBFEATURES 8
-#define MAX_SENSOR_TYPES 5
+#define MAX_SENSOR_TYPES 6
/* Room for all 5 types (in, fan, temp, power, energy) with all their
subfeatures + VID + misc features */
#define ALL_POSSIBLE_SUBFEATURES \
@@ -153,6 +153,7 @@ int get_type_scaling(sensors_subfeature_
switch (type & 0xFF80) {
case SENSORS_SUBFEATURE_IN_INPUT:
case SENSORS_SUBFEATURE_TEMP_INPUT:
+ case SENSORS_SUBFEATURE_CURR_INPUT:
return 1000;
case SENSORS_SUBFEATURE_FAN_INPUT:
return 1;
@@ -184,6 +185,7 @@ char *get_feature_name(sensors_feature_t
case SENSORS_FEATURE_TEMP:
case SENSORS_FEATURE_POWER:
case SENSORS_FEATURE_ENERGY:
+ case SENSORS_FEATURE_CURR:
underscore = strchr(sfname, '_');
name = strndup(sfname, underscore - sfname);
break;
@@ -259,6 +261,16 @@ static const struct subfeature_type_matc
{ NULL, 0 }
};
+static const struct subfeature_type_match curr_matches[] = {
+ { "input", SENSORS_SUBFEATURE_CURR_INPUT },
+ { "min", SENSORS_SUBFEATURE_CURR_MIN },
+ { "max", SENSORS_SUBFEATURE_CURR_MAX },
+ { "alarm", SENSORS_SUBFEATURE_CURR_ALARM },
+ { "min_alarm", SENSORS_SUBFEATURE_CURR_MIN_ALARM },
+ { "max_alarm", SENSORS_SUBFEATURE_CURR_MAX_ALARM },
+ { NULL, 0 }
+};
+
static const struct subfeature_type_match cpu_matches[] = {
{ "vid", SENSORS_SUBFEATURE_VID },
{ NULL, 0 }
@@ -270,6 +282,7 @@ static struct feature_type_match matches
{ "fan%d%c", fan_matches },
{ "cpu%d%c", cpu_matches },
{ "power%d%c", power_matches },
+ { "curr%d%c", curr_matches },
{ "energy%d%c", energy_matches },
};
@@ -360,6 +373,7 @@ static int sensors_read_dynamic_chip(sen
case SENSORS_SUBFEATURE_TEMP_INPUT:
case SENSORS_SUBFEATURE_POWER_AVERAGE:
case SENSORS_SUBFEATURE_ENERGY_INPUT:
+ case SENSORS_SUBFEATURE_CURR_INPUT:
nr--;
break;
}
--- lm-sensors-3.orig/prog/sensors/chips.c 2008-10-22 12:04:38.000000000 +0200
+++ lm-sensors-3/prog/sensors/chips.c 2008-10-22 12:06:50.000000000 +0200
@@ -578,6 +578,72 @@ static void print_chip_beep_enable(const
free(label);
}
+static void print_chip_curr(const sensors_chip_name *name,
+ const sensors_feature *feature,
+ int label_size)
+{
+ const sensors_subfeature *sf, *sfmin, *sfmax;
+ double alarm_max, alarm_min;
+ char *label;
+
+ if (!(label = sensors_get_label(name, feature))) {
+ fprintf(stderr, "ERROR: Can't get label of feature %s!\n",
+ feature->name);
+ return;
+ }
+ print_label(label, label_size);
+ free(label);
+
+ sf = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_INPUT);
+ if (sf)
+ printf("%+6.2f A", get_value(name, sf));
+ else
+ printf(" N/A");
+
+ sfmin = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_MIN);
+ sfmax = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_MAX);
+ if (sfmin && sfmax)
+ printf(" (min = %+6.2f A, max = %+6.2f A)",
+ get_value(name, sfmin),
+ get_value(name, sfmax));
+ else if (sfmin)
+ printf(" (min = %+6.2f A)",
+ get_value(name, sfmin));
+ else if (sfmax)
+ printf(" (max = %+6.2f A)",
+ get_value(name, sfmax));
+
+ sf = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_ALARM);
+ sfmin = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_MIN_ALARM);
+ sfmax = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_MAX_ALARM);
+ if (sfmin || sfmax) {
+ alarm_max = sfmax ? get_value(name, sfmax) : 0;
+ alarm_min = sfmin ? get_value(name, sfmin) : 0;
+
+ if (alarm_min || alarm_max) {
+ printf(" ALARM (");
+
+ if (alarm_min)
+ printf("MIN");
+ if (alarm_max)
+ printf("%sMAX", (alarm_min) ? ", " : "");
+
+ printf(")");
+ }
+ } else if (sf) {
+ printf(" %s",
+ get_value(name, sf) ? "ALARM" : "");
+ }
+
+ printf("\n");
+}
+
void print_chip(const sensors_chip_name *name)
{
const sensors_feature *feature;
@@ -609,6 +675,9 @@ void print_chip(const sensors_chip_name
case SENSORS_FEATURE_ENERGY:
print_chip_energy(name, feature, label_size);
break;
+ case SENSORS_FEATURE_CURR:
+ print_chip_curr(name, feature, label_size);
+ break;
default:
continue;
}
--- lm-sensors-3.orig/doc/libsensors-API.txt 2008-10-22 12:06:42.000000000 +0200
+++ lm-sensors-3/doc/libsensors-API.txt 2008-10-22 12:07:02.000000000 +0200
@@ -11,6 +11,15 @@ given new feature.
enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT
enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST
enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_LOWEST
+* Added support for current sensors
+ enum sensors_feature_type SENSORS_FEATURE_CURR
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_INPUT
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_ALARM
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN_ALARM
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX_ALARM
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_BEEP
0x401 lm-sensors 3.0.2 to 3.0.3
* Added bus type "virtual":
--
Jean Delvare
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [lm-sensors] [PATCH 2/2] libsensors: Add support for current
2008-10-22 11:57 [lm-sensors] [PATCH 2/2] libsensors: Add support for current sensors Jean Delvare
@ 2008-10-22 12:47 ` Hans de Goede
2008-10-22 13:22 ` Jean-Marc Spaggiari
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Hans de Goede @ 2008-10-22 12:47 UTC (permalink / raw)
To: lm-sensors
Jean Delvare wrote:
> Add support for current sensors.
> ---
> The code for function print_chip_curr() is duplicated directly from
> print_chip_in() with IN subfeature names replaced by their CURR
> counterparts and V changed to A.
>
> Applies on top of the previous patch. I'd appreciate review and testing
> of this patch. Vincent, this should show you the current values you
> were missing so far.
>
> doc/libsensors-API.txt | 9 ++++++
> lib/sensors.h | 9 ++++++
> lib/sysfs.c | 16 ++++++++++-
> prog/sensors/chips.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 102 insertions(+), 1 deletion(-)
>
I've reviewed this and it looks good.
Regards,
Hans
> --- lm-sensors-3.orig/lib/sensors.h 2008-10-22 12:03:36.000000000 +0200
> +++ lm-sensors-3/lib/sensors.h 2008-10-22 12:06:50.000000000 +0200
> @@ -134,6 +134,7 @@ typedef enum sensors_feature_type {
> SENSORS_FEATURE_TEMP = 0x02,
> SENSORS_FEATURE_POWER = 0x03,
> SENSORS_FEATURE_ENERGY = 0x04,
> + SENSORS_FEATURE_CURR = 0x05,
> SENSORS_FEATURE_VID = 0x10,
> SENSORS_FEATURE_BEEP_ENABLE = 0x18,
> SENSORS_FEATURE_UNKNOWN = INT_MAX,
> @@ -182,6 +183,14 @@ typedef enum sensors_subfeature_type {
>
> SENSORS_SUBFEATURE_ENERGY_INPUT = SENSORS_FEATURE_ENERGY << 8,
>
> + SENSORS_SUBFEATURE_CURR_INPUT = SENSORS_FEATURE_CURR << 8,
> + SENSORS_SUBFEATURE_CURR_MIN,
> + SENSORS_SUBFEATURE_CURR_MAX,
> + SENSORS_SUBFEATURE_CURR_ALARM = (SENSORS_FEATURE_CURR << 8) | 0x80,
> + SENSORS_SUBFEATURE_CURR_MIN_ALARM,
> + SENSORS_SUBFEATURE_CURR_MAX_ALARM,
> + SENSORS_SUBFEATURE_CURR_BEEP,
> +
> SENSORS_SUBFEATURE_VID = SENSORS_FEATURE_VID << 8,
>
> SENSORS_SUBFEATURE_BEEP_ENABLE = SENSORS_FEATURE_BEEP_ENABLE << 8,
> --- lm-sensors-3.orig/lib/sysfs.c 2008-10-22 12:03:36.000000000 +0200
> +++ lm-sensors-3/lib/sysfs.c 2008-10-22 12:06:50.000000000 +0200
> @@ -138,7 +138,7 @@ char sensors_sysfs_mount[NAME_MAX];
>
> #define MAX_SENSORS_PER_TYPE 20
> #define MAX_SUBFEATURES 8
> -#define MAX_SENSOR_TYPES 5
> +#define MAX_SENSOR_TYPES 6
> /* Room for all 5 types (in, fan, temp, power, energy) with all their
> subfeatures + VID + misc features */
> #define ALL_POSSIBLE_SUBFEATURES \
> @@ -153,6 +153,7 @@ int get_type_scaling(sensors_subfeature_
> switch (type & 0xFF80) {
> case SENSORS_SUBFEATURE_IN_INPUT:
> case SENSORS_SUBFEATURE_TEMP_INPUT:
> + case SENSORS_SUBFEATURE_CURR_INPUT:
> return 1000;
> case SENSORS_SUBFEATURE_FAN_INPUT:
> return 1;
> @@ -184,6 +185,7 @@ char *get_feature_name(sensors_feature_t
> case SENSORS_FEATURE_TEMP:
> case SENSORS_FEATURE_POWER:
> case SENSORS_FEATURE_ENERGY:
> + case SENSORS_FEATURE_CURR:
> underscore = strchr(sfname, '_');
> name = strndup(sfname, underscore - sfname);
> break;
> @@ -259,6 +261,16 @@ static const struct subfeature_type_matc
> { NULL, 0 }
> };
>
> +static const struct subfeature_type_match curr_matches[] = {
> + { "input", SENSORS_SUBFEATURE_CURR_INPUT },
> + { "min", SENSORS_SUBFEATURE_CURR_MIN },
> + { "max", SENSORS_SUBFEATURE_CURR_MAX },
> + { "alarm", SENSORS_SUBFEATURE_CURR_ALARM },
> + { "min_alarm", SENSORS_SUBFEATURE_CURR_MIN_ALARM },
> + { "max_alarm", SENSORS_SUBFEATURE_CURR_MAX_ALARM },
> + { NULL, 0 }
> +};
> +
> static const struct subfeature_type_match cpu_matches[] = {
> { "vid", SENSORS_SUBFEATURE_VID },
> { NULL, 0 }
> @@ -270,6 +282,7 @@ static struct feature_type_match matches
> { "fan%d%c", fan_matches },
> { "cpu%d%c", cpu_matches },
> { "power%d%c", power_matches },
> + { "curr%d%c", curr_matches },
> { "energy%d%c", energy_matches },
> };
>
> @@ -360,6 +373,7 @@ static int sensors_read_dynamic_chip(sen
> case SENSORS_SUBFEATURE_TEMP_INPUT:
> case SENSORS_SUBFEATURE_POWER_AVERAGE:
> case SENSORS_SUBFEATURE_ENERGY_INPUT:
> + case SENSORS_SUBFEATURE_CURR_INPUT:
> nr--;
> break;
> }
> --- lm-sensors-3.orig/prog/sensors/chips.c 2008-10-22 12:04:38.000000000 +0200
> +++ lm-sensors-3/prog/sensors/chips.c 2008-10-22 12:06:50.000000000 +0200
> @@ -578,6 +578,72 @@ static void print_chip_beep_enable(const
> free(label);
> }
>
> +static void print_chip_curr(const sensors_chip_name *name,
> + const sensors_feature *feature,
> + int label_size)
> +{
> + const sensors_subfeature *sf, *sfmin, *sfmax;
> + double alarm_max, alarm_min;
> + char *label;
> +
> + if (!(label = sensors_get_label(name, feature))) {
> + fprintf(stderr, "ERROR: Can't get label of feature %s!\n",
> + feature->name);
> + return;
> + }
> + print_label(label, label_size);
> + free(label);
> +
> + sf = sensors_get_subfeature(name, feature,
> + SENSORS_SUBFEATURE_CURR_INPUT);
> + if (sf)
> + printf("%+6.2f A", get_value(name, sf));
> + else
> + printf(" N/A");
> +
> + sfmin = sensors_get_subfeature(name, feature,
> + SENSORS_SUBFEATURE_CURR_MIN);
> + sfmax = sensors_get_subfeature(name, feature,
> + SENSORS_SUBFEATURE_CURR_MAX);
> + if (sfmin && sfmax)
> + printf(" (min = %+6.2f A, max = %+6.2f A)",
> + get_value(name, sfmin),
> + get_value(name, sfmax));
> + else if (sfmin)
> + printf(" (min = %+6.2f A)",
> + get_value(name, sfmin));
> + else if (sfmax)
> + printf(" (max = %+6.2f A)",
> + get_value(name, sfmax));
> +
> + sf = sensors_get_subfeature(name, feature,
> + SENSORS_SUBFEATURE_CURR_ALARM);
> + sfmin = sensors_get_subfeature(name, feature,
> + SENSORS_SUBFEATURE_CURR_MIN_ALARM);
> + sfmax = sensors_get_subfeature(name, feature,
> + SENSORS_SUBFEATURE_CURR_MAX_ALARM);
> + if (sfmin || sfmax) {
> + alarm_max = sfmax ? get_value(name, sfmax) : 0;
> + alarm_min = sfmin ? get_value(name, sfmin) : 0;
> +
> + if (alarm_min || alarm_max) {
> + printf(" ALARM (");
> +
> + if (alarm_min)
> + printf("MIN");
> + if (alarm_max)
> + printf("%sMAX", (alarm_min) ? ", " : "");
> +
> + printf(")");
> + }
> + } else if (sf) {
> + printf(" %s",
> + get_value(name, sf) ? "ALARM" : "");
> + }
> +
> + printf("\n");
> +}
> +
> void print_chip(const sensors_chip_name *name)
> {
> const sensors_feature *feature;
> @@ -609,6 +675,9 @@ void print_chip(const sensors_chip_name
> case SENSORS_FEATURE_ENERGY:
> print_chip_energy(name, feature, label_size);
> break;
> + case SENSORS_FEATURE_CURR:
> + print_chip_curr(name, feature, label_size);
> + break;
> default:
> continue;
> }
> --- lm-sensors-3.orig/doc/libsensors-API.txt 2008-10-22 12:06:42.000000000 +0200
> +++ lm-sensors-3/doc/libsensors-API.txt 2008-10-22 12:07:02.000000000 +0200
> @@ -11,6 +11,15 @@ given new feature.
> enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT
> enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST
> enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_LOWEST
> +* Added support for current sensors
> + enum sensors_feature_type SENSORS_FEATURE_CURR
> + enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_INPUT
> + enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN
> + enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX
> + enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_ALARM
> + enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN_ALARM
> + enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX_ALARM
> + enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_BEEP
>
> 0x401 lm-sensors 3.0.2 to 3.0.3
> * Added bus type "virtual":
>
>
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [lm-sensors] [PATCH 2/2] libsensors: Add support for current
2008-10-22 11:57 [lm-sensors] [PATCH 2/2] libsensors: Add support for current sensors Jean Delvare
2008-10-22 12:47 ` [lm-sensors] [PATCH 2/2] libsensors: Add support for current Hans de Goede
@ 2008-10-22 13:22 ` Jean-Marc Spaggiari
2008-10-22 13:24 ` Jean Delvare
2008-10-24 6:50 ` Hu Mingkai-B21284
3 siblings, 0 replies; 5+ messages in thread
From: Jean-Marc Spaggiari @ 2008-10-22 13:22 UTC (permalink / raw)
To: lm-sensors
2008/10/22 Hans de Goede <j.w.r.degoede@hhs.nl>:
> Jean Delvare wrote:
>> Add support for current sensors.
>> ---
>> The code for function print_chip_curr() is duplicated directly from
>> print_chip_in() with IN subfeature names replaced by their CURR
>> counterparts and V changed to A.
>>
>> Applies on top of the previous patch. I'd appreciate review and testing
>> of this patch. Vincent, this should show you the current values you
>> were missing so far.
>>
>> doc/libsensors-API.txt | 9 ++++++
>> lib/sensors.h | 9 ++++++
>> lib/sysfs.c | 16 ++++++++++-
>> prog/sensors/chips.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
>> 4 files changed, 102 insertions(+), 1 deletion(-)
>>
>
> I've reviewed this and it looks good.
>
> Regards,
>
> Hans
>
Hi,
I compiled and installed successfuly path 1/2 and patch 2/2 on my
system (2.6.27.2). Seems to be working fine. Don't see the difference
with the previous version.
JM
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [lm-sensors] [PATCH 2/2] libsensors: Add support for current
2008-10-22 11:57 [lm-sensors] [PATCH 2/2] libsensors: Add support for current sensors Jean Delvare
2008-10-22 12:47 ` [lm-sensors] [PATCH 2/2] libsensors: Add support for current Hans de Goede
2008-10-22 13:22 ` Jean-Marc Spaggiari
@ 2008-10-22 13:24 ` Jean Delvare
2008-10-24 6:50 ` Hu Mingkai-B21284
3 siblings, 0 replies; 5+ messages in thread
From: Jean Delvare @ 2008-10-22 13:24 UTC (permalink / raw)
To: lm-sensors
Hi Jean-Marc,
On Wed, 22 Oct 2008 09:22:46 -0400, Jean-Marc Spaggiari wrote:
> 2008/10/22 Hans de Goede <j.w.r.degoede@hhs.nl>:
> > Jean Delvare wrote:
> >> Add support for current sensors.
> >> ---
> >> The code for function print_chip_curr() is duplicated directly from
> >> print_chip_in() with IN subfeature names replaced by their CURR
> >> counterparts and V changed to A.
> >>
> >> Applies on top of the previous patch. I'd appreciate review and testing
> >> of this patch. Vincent, this should show you the current values you
> >> were missing so far.
> >>
> >> doc/libsensors-API.txt | 9 ++++++
> >> lib/sensors.h | 9 ++++++
> >> lib/sysfs.c | 16 ++++++++++-
> >> prog/sensors/chips.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
> >> 4 files changed, 102 insertions(+), 1 deletion(-)
> >>
> >
> > I've reviewed this and it looks good.
>
> I compiled and installed successfuly path 1/2 and patch 2/2 on my
> system (2.6.27.2). Seems to be working fine. Don't see the difference
> with the previous version.
If you do not have any current sensor nor power sensor on your system,
this is the expected result. Thanks for testing!
--
Jean Delvare
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [lm-sensors] [PATCH 2/2] libsensors: Add support for current
2008-10-22 11:57 [lm-sensors] [PATCH 2/2] libsensors: Add support for current sensors Jean Delvare
` (2 preceding siblings ...)
2008-10-22 13:24 ` Jean Delvare
@ 2008-10-24 6:50 ` Hu Mingkai-B21284
3 siblings, 0 replies; 5+ messages in thread
From: Hu Mingkai-B21284 @ 2008-10-24 6:50 UTC (permalink / raw)
To: lm-sensors
Hi Jean,
The patch works well. Thanks a lot.
-sh-2.05b# sensors
mcp3021-i2c-0-4d
Adapter: MPC adapter
in0: +0.19 V (min = +0.19 V, max = +0.21 V)
curr1: +0.99 A (min = +0.93 A, max = +1.05 A)
mcp3021-i2c-1-4d
Adapter: MPC adapter
in0: +0.40 V (min = +0.40 V, max = +0.41 V)
curr1: +2.01 A (min = +1.98 A, max = +2.02 A)
Best Regards,
Vincent
-----Original Message-----
From: Jean Delvare [mailto:khali@linux-fr.org]
Sent: Wednesday, October 22, 2008 7:58 PM
To: LM Sensors
Cc: Hu Mingkai-B21284; Ira Snyder; Darrick J. Wong
Subject: [PATCH 2/2] libsensors: Add support for current sensors
Add support for current sensors.
---
The code for function print_chip_curr() is duplicated directly from
print_chip_in() with IN subfeature names replaced by their CURR
counterparts and V changed to A.
Applies on top of the previous patch. I'd appreciate review and testing
of this patch. Vincent, this should show you the current values you were
missing so far.
doc/libsensors-API.txt | 9 ++++++
lib/sensors.h | 9 ++++++
lib/sysfs.c | 16 ++++++++++-
prog/sensors/chips.c | 69
++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 102 insertions(+), 1 deletion(-)
--- lm-sensors-3.orig/lib/sensors.h 2008-10-22 12:03:36.000000000
+0200
+++ lm-sensors-3/lib/sensors.h 2008-10-22 12:06:50.000000000 +0200
@@ -134,6 +134,7 @@ typedef enum sensors_feature_type {
SENSORS_FEATURE_TEMP = 0x02,
SENSORS_FEATURE_POWER = 0x03,
SENSORS_FEATURE_ENERGY = 0x04,
+ SENSORS_FEATURE_CURR = 0x05,
SENSORS_FEATURE_VID = 0x10,
SENSORS_FEATURE_BEEP_ENABLE = 0x18,
SENSORS_FEATURE_UNKNOWN = INT_MAX,
@@ -182,6 +183,14 @@ typedef enum sensors_subfeature_type {
SENSORS_SUBFEATURE_ENERGY_INPUT = SENSORS_FEATURE_ENERGY << 8,
+ SENSORS_SUBFEATURE_CURR_INPUT = SENSORS_FEATURE_CURR << 8,
+ SENSORS_SUBFEATURE_CURR_MIN,
+ SENSORS_SUBFEATURE_CURR_MAX,
+ SENSORS_SUBFEATURE_CURR_ALARM = (SENSORS_FEATURE_CURR << 8) |
0x80,
+ SENSORS_SUBFEATURE_CURR_MIN_ALARM,
+ SENSORS_SUBFEATURE_CURR_MAX_ALARM,
+ SENSORS_SUBFEATURE_CURR_BEEP,
+
SENSORS_SUBFEATURE_VID = SENSORS_FEATURE_VID << 8,
SENSORS_SUBFEATURE_BEEP_ENABLE = SENSORS_FEATURE_BEEP_ENABLE <<
8,
--- lm-sensors-3.orig/lib/sysfs.c 2008-10-22 12:03:36.000000000
+0200
+++ lm-sensors-3/lib/sysfs.c 2008-10-22 12:06:50.000000000 +0200
@@ -138,7 +138,7 @@ char sensors_sysfs_mount[NAME_MAX];
#define MAX_SENSORS_PER_TYPE 20
#define MAX_SUBFEATURES 8
-#define MAX_SENSOR_TYPES 5
+#define MAX_SENSOR_TYPES 6
/* Room for all 5 types (in, fan, temp, power, energy) with all their
subfeatures + VID + misc features */ #define
ALL_POSSIBLE_SUBFEATURES \ @@ -153,6 +153,7 @@ int
get_type_scaling(sensors_subfeature_
switch (type & 0xFF80) {
case SENSORS_SUBFEATURE_IN_INPUT:
case SENSORS_SUBFEATURE_TEMP_INPUT:
+ case SENSORS_SUBFEATURE_CURR_INPUT:
return 1000;
case SENSORS_SUBFEATURE_FAN_INPUT:
return 1;
@@ -184,6 +185,7 @@ char *get_feature_name(sensors_feature_t
case SENSORS_FEATURE_TEMP:
case SENSORS_FEATURE_POWER:
case SENSORS_FEATURE_ENERGY:
+ case SENSORS_FEATURE_CURR:
underscore = strchr(sfname, '_');
name = strndup(sfname, underscore - sfname);
break;
@@ -259,6 +261,16 @@ static const struct subfeature_type_matc
{ NULL, 0 }
};
+static const struct subfeature_type_match curr_matches[] = {
+ { "input", SENSORS_SUBFEATURE_CURR_INPUT },
+ { "min", SENSORS_SUBFEATURE_CURR_MIN },
+ { "max", SENSORS_SUBFEATURE_CURR_MAX },
+ { "alarm", SENSORS_SUBFEATURE_CURR_ALARM },
+ { "min_alarm", SENSORS_SUBFEATURE_CURR_MIN_ALARM },
+ { "max_alarm", SENSORS_SUBFEATURE_CURR_MAX_ALARM },
+ { NULL, 0 }
+};
+
static const struct subfeature_type_match cpu_matches[] = {
{ "vid", SENSORS_SUBFEATURE_VID },
{ NULL, 0 }
@@ -270,6 +282,7 @@ static struct feature_type_match matches
{ "fan%d%c", fan_matches },
{ "cpu%d%c", cpu_matches },
{ "power%d%c", power_matches },
+ { "curr%d%c", curr_matches },
{ "energy%d%c", energy_matches },
};
@@ -360,6 +373,7 @@ static int sensors_read_dynamic_chip(sen
case SENSORS_SUBFEATURE_TEMP_INPUT:
case SENSORS_SUBFEATURE_POWER_AVERAGE:
case SENSORS_SUBFEATURE_ENERGY_INPUT:
+ case SENSORS_SUBFEATURE_CURR_INPUT:
nr--;
break;
}
--- lm-sensors-3.orig/prog/sensors/chips.c 2008-10-22
12:04:38.000000000 +0200
+++ lm-sensors-3/prog/sensors/chips.c 2008-10-22 12:06:50.000000000
+0200
@@ -578,6 +578,72 @@ static void print_chip_beep_enable(const
free(label);
}
+static void print_chip_curr(const sensors_chip_name *name,
+ const sensors_feature *feature,
+ int label_size)
+{
+ const sensors_subfeature *sf, *sfmin, *sfmax;
+ double alarm_max, alarm_min;
+ char *label;
+
+ if (!(label = sensors_get_label(name, feature))) {
+ fprintf(stderr, "ERROR: Can't get label of feature
%s!\n",
+ feature->name);
+ return;
+ }
+ print_label(label, label_size);
+ free(label);
+
+ sf = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_INPUT);
+ if (sf)
+ printf("%+6.2f A", get_value(name, sf));
+ else
+ printf(" N/A");
+
+ sfmin = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_MIN);
+ sfmax = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_MAX);
+ if (sfmin && sfmax)
+ printf(" (min = %+6.2f A, max = %+6.2f A)",
+ get_value(name, sfmin),
+ get_value(name, sfmax));
+ else if (sfmin)
+ printf(" (min = %+6.2f A)",
+ get_value(name, sfmin));
+ else if (sfmax)
+ printf(" (max = %+6.2f A)",
+ get_value(name, sfmax));
+
+ sf = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_CURR_ALARM);
+ sfmin = sensors_get_subfeature(name, feature,
+
SENSORS_SUBFEATURE_CURR_MIN_ALARM);
+ sfmax = sensors_get_subfeature(name, feature,
+
SENSORS_SUBFEATURE_CURR_MAX_ALARM);
+ if (sfmin || sfmax) {
+ alarm_max = sfmax ? get_value(name, sfmax) : 0;
+ alarm_min = sfmin ? get_value(name, sfmin) : 0;
+
+ if (alarm_min || alarm_max) {
+ printf(" ALARM (");
+
+ if (alarm_min)
+ printf("MIN");
+ if (alarm_max)
+ printf("%sMAX", (alarm_min) ? ", " :
"");
+
+ printf(")");
+ }
+ } else if (sf) {
+ printf(" %s",
+ get_value(name, sf) ? "ALARM" : "");
+ }
+
+ printf("\n");
+}
+
void print_chip(const sensors_chip_name *name) {
const sensors_feature *feature;
@@ -609,6 +675,9 @@ void print_chip(const sensors_chip_name
case SENSORS_FEATURE_ENERGY:
print_chip_energy(name, feature, label_size);
break;
+ case SENSORS_FEATURE_CURR:
+ print_chip_curr(name, feature, label_size);
+ break;
default:
continue;
}
--- lm-sensors-3.orig/doc/libsensors-API.txt 2008-10-22
12:06:42.000000000 +0200
+++ lm-sensors-3/doc/libsensors-API.txt 2008-10-22 12:07:02.000000000
+0200
@@ -11,6 +11,15 @@ given new feature.
enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT
enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST
enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_LOWEST
+* Added support for current sensors
+ enum sensors_feature_type SENSORS_FEATURE_CURR
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_INPUT
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_ALARM
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MIN_ALARM
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_MAX_ALARM
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_BEEP
0x401 lm-sensors 3.0.2 to 3.0.3
* Added bus type "virtual":
--
Jean Delvare
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-10-24 6:50 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-22 11:57 [lm-sensors] [PATCH 2/2] libsensors: Add support for current sensors Jean Delvare
2008-10-22 12:47 ` [lm-sensors] [PATCH 2/2] libsensors: Add support for current Hans de Goede
2008-10-22 13:22 ` Jean-Marc Spaggiari
2008-10-22 13:24 ` Jean Delvare
2008-10-24 6:50 ` Hu Mingkai-B21284
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.