From 104c29ea4675cfc4a5265455ccb439eed6b22229 Mon Sep 17 00:00:00 2001 From: pgoyette Date: Sat, 4 Jun 2011 02:02:55 +0000 Subject: Enable creation of value_{max,min,avg} entries via the proplist, as well as setting the ENVSYS_FPERCENT flag --- sys/dev/sysmon/swsensor.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/sysmon/swsensor.c b/sys/dev/sysmon/swsensor.c index 24d20bd5b60..f61f7ef2057 100644 --- a/sys/dev/sysmon/swsensor.c +++ b/sys/dev/sysmon/swsensor.c @@ -1,4 +1,4 @@ -/* $NetBSD: swsensor.c,v 1.7 2010/12/17 13:37:37 pooka Exp $ */ +/* $NetBSD: swsensor.c,v 1.8 2011/06/04 02:02:55 pgoyette Exp $ */ /* * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: swsensor.c,v 1.7 2010/12/17 13:37:37 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: swsensor.c,v 1.8 2011/06/04 02:02:55 pgoyette Exp $"); #include #include @@ -234,6 +234,40 @@ swsensor_init(void *arg) if (po != NULL && prop_object_type(po) == PROP_TYPE_NUMBER) sw_sensor_value = prop_number_integer_value(po); + /* Retrieve any value_{max,min,avg} that might be present */ + if (pd != NULL) { + po = prop_dictionary_get(pd, "value_max"); + if (po != NULL && prop_object_type(po) == PROP_TYPE_NUMBER) { + swsensor_edata.value_max = + prop_number_integer_value(po); + swsensor_edata.flags |= ENVSYS_FVALID_MAX; + } + + po = prop_dictionary_get(pd, "value_min"); + if (po != NULL && prop_object_type(po) == PROP_TYPE_NUMBER) { + swsensor_edata.value_min = + prop_number_integer_value(po); + swsensor_edata.flags |= ENVSYS_FVALID_MIN; + } + + po = prop_dictionary_get(pd, "value_avg"); + if (po != NULL && prop_object_type(po) == PROP_TYPE_NUMBER) { + swsensor_edata.value_avg = + prop_number_integer_value(po); + swsensor_edata.flags |= ENVSYS_FVALID_AVG; + } + } + + /* See if this sensor should report percentages vs raw values */ + if (pd != NULL) { + po = prop_dictionary_get(pd, "percentage"); + if (po != NULL && + prop_object_type(po) == PROP_TYPE_BOOL && + prop_bool_true(po)) + swsensor_edata.flags |= ENVSYS_FPERCENT; + } + + swsensor_edata.state = ENVSYS_SVALID; swsensor_edata.value_cur = 0; strlcpy(swsensor_edata.desc, "sensor", ENVSYS_DESCLEN); -- cgit