fix sdr printing of deassertion events and negative values for min/max

This commit is contained in:
Duncan Laurie 2005-06-16 23:47:15 +00:00
parent 380f330e15
commit 1fe48e8a36

View File

@ -154,9 +154,6 @@ sdr_convert_sensor_reading(struct sdr_record_full_sensor * sensor,
} }
switch (sensor->linearization & 0x7f) { switch (sensor->linearization & 0x7f) {
default:
case SDR_SENSOR_L_LINEAR:
break;
case SDR_SENSOR_L_LN: case SDR_SENSOR_L_LN:
result = log(result); result = log(result);
break; break;
@ -190,6 +187,9 @@ sdr_convert_sensor_reading(struct sdr_record_full_sensor * sensor,
case SDR_SENSOR_L_CUBERT: case SDR_SENSOR_L_CUBERT:
result = cbrt(result); result = cbrt(result);
break; break;
case SDR_SENSOR_L_LINEAR:
default:
break;
} }
return result; return result;
@ -883,7 +883,7 @@ ipmi_sdr_print_sensor_event_enable(struct ipmi_intf * intf,
} }
printf("\n"); printf("\n");
if ((rsp->data_len == 4 && rsp->data[3] != 0) || if ((rsp->data_len == 4 && rsp->data[3] != 0) ||
(rsp->data_len > 4 && (rsp->data[3] != 0 && rsp->data[4] != 0))) { (rsp->data_len > 4 && (rsp->data[3] != 0 || rsp->data[4] != 0))) {
printf(" Deassertions Enabled : "); printf(" Deassertions Enabled : ");
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
if (rsp->data[3] & (1<<i)) if (rsp->data[3] & (1<<i))
@ -923,7 +923,7 @@ ipmi_sdr_print_sensor_full(struct ipmi_intf * intf,
{ {
char sval[16], unitstr[16], desc[17]; char sval[16], unitstr[16], desc[17];
int i=0, validread=1, do_unit=1; int i=0, validread=1, do_unit=1;
double val = 0.0; double val = 0.0, creading = 0.0;
struct ipmi_rs * rsp; struct ipmi_rs * rsp;
uint8_t min_reading, max_reading; uint8_t min_reading, max_reading;
@ -1208,37 +1208,39 @@ ipmi_sdr_print_sensor_full(struct ipmi_intf * intf,
SENSOR_PRINT_THRESH("Lower critical", lower.critical, lcr); SENSOR_PRINT_THRESH("Lower critical", lower.critical, lcr);
SENSOR_PRINT_THRESH("Lower non-critical", lower.non_critical, lnc); SENSOR_PRINT_THRESH("Lower non-critical", lower.non_critical, lnc);
min_reading = (uint8_t)sdr_convert_sensor_reading( creading = sdr_convert_sensor_reading(sensor, sensor->threshold.hysteresis.positive);
sensor, sensor->threshold.hysteresis.positive); if (sensor->threshold.hysteresis.positive == 0x00 ||
if (min_reading == 0 || min_reading == 0xff) sensor->threshold.hysteresis.positive == 0xff ||
creading == 0)
printf(" Positive Hysteresis : Unspecified\n"); printf(" Positive Hysteresis : Unspecified\n");
else else
printf(" Positive Hysteresis : %.3f\n", (double)min_reading); printf(" Positive Hysteresis : %.3f\n", creading);
min_reading = (uint8_t)sdr_convert_sensor_reading( creading = sdr_convert_sensor_reading(sensor, sensor->threshold.hysteresis.negative);
sensor, sensor->threshold.hysteresis.negative); if (sensor->threshold.hysteresis.negative == 0x00 ||
if (min_reading == 0 || min_reading == 0xff) sensor->threshold.hysteresis.negative == 0xff ||
creading == 0.0)
printf(" Negative Hysteresis : Unspecified\n"); printf(" Negative Hysteresis : Unspecified\n");
else else
printf(" Negative Hysteresis : %.3f\n", (double)min_reading); printf(" Negative Hysteresis : %.3f\n", creading);
min_reading = (uint8_t)sdr_convert_sensor_reading( creading = sdr_convert_sensor_reading(sensor, sensor->sensor_min);
sensor, sensor->sensor_min);
if ((sensor->unit.analog == 0 && sensor->sensor_min == 0x00) || if ((sensor->unit.analog == 0 && sensor->sensor_min == 0x00) ||
(sensor->unit.analog == 1 && sensor->sensor_min == 0xff) || (sensor->unit.analog == 1 && sensor->sensor_min == 0xff) ||
(sensor->unit.analog == 2 && sensor->sensor_min == 0x80)) (sensor->unit.analog == 2 && sensor->sensor_min == 0x80) ||
creading == 0.0)
printf(" Minimum sensor range : Unspecified\n"); printf(" Minimum sensor range : Unspecified\n");
else else
printf(" Minimum sensor range : %.3f\n", (double)min_reading); printf(" Minimum sensor range : %.3f\n", creading);
max_reading = (uint8_t)sdr_convert_sensor_reading( creading = sdr_convert_sensor_reading(sensor, sensor->sensor_max);
sensor, sensor->sensor_max);
if ((sensor->unit.analog == 0 && sensor->sensor_max == 0xff) || if ((sensor->unit.analog == 0 && sensor->sensor_max == 0xff) ||
(sensor->unit.analog == 1 && sensor->sensor_max == 0x00) || (sensor->unit.analog == 1 && sensor->sensor_max == 0x00) ||
(sensor->unit.analog == 2 && sensor->sensor_max == 0x7f)) (sensor->unit.analog == 2 && sensor->sensor_max == 0x7f) ||
creading == 0.0)
printf(" Maximum sensor range : Unspecified\n"); printf(" Maximum sensor range : Unspecified\n");
else else
printf(" Maximum sensor range : %.3f\n", (double)max_reading); printf(" Maximum sensor range : %.3f\n", creading);
printf(" Event Message Control : "); printf(" Event Message Control : ");
switch (sensor->sensor.capabilities.event_msg) { switch (sensor->sensor.capabilities.event_msg) {