Module Name:    src
Committed By:   pgoyette
Date:           Mon Feb 15 22:32:04 UTC 2010

Modified Files:
        src/sys/dev/sysmon: sysmon_envsys.c sysmon_envsys_events.c
            sysmon_power.c
        src/sys/sys: envsys.h power.h

Log Message:
For symmetry, allow warning and critical upper-limits for capacity
sensors.


To generate a diff of this commit:
cvs rdiff -u -r1.95 -r1.96 src/sys/dev/sysmon/sysmon_envsys.c
cvs rdiff -u -r1.83 -r1.84 src/sys/dev/sysmon/sysmon_envsys_events.c
cvs rdiff -u -r1.42 -r1.43 src/sys/dev/sysmon/sysmon_power.c
cvs rdiff -u -r1.29 -r1.30 src/sys/sys/envsys.h
cvs rdiff -u -r1.14 -r1.15 src/sys/sys/power.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/sysmon/sysmon_envsys.c
diff -u src/sys/dev/sysmon/sysmon_envsys.c:1.95 src/sys/dev/sysmon/sysmon_envsys.c:1.96
--- src/sys/dev/sysmon/sysmon_envsys.c:1.95	Sun Feb 14 23:06:01 2010
+++ src/sys/dev/sysmon/sysmon_envsys.c	Mon Feb 15 22:32:04 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysmon_envsys.c,v 1.95 2010/02/14 23:06:01 pgoyette Exp $	*/
+/*	$NetBSD: sysmon_envsys.c,v 1.96 2010/02/15 22:32:04 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 Juan Romero Pardines.
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.95 2010/02/14 23:06:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.96 2010/02/15 22:32:04 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -1061,6 +1061,18 @@
 				    "warning-capacity");
 				ptype = PENVSYS_EVENT_CAPACITY;
 			}
+
+			if (edata->upropset & PROP_BATTHIGH) {
+				prop_dictionary_remove(sdict,
+				    "high-capacity");
+				ptype = PENVSYS_EVENT_CAPACITY;
+			}
+
+			if (edata->upropset & PROP_BATTMAX) {
+				prop_dictionary_remove(sdict,
+				    "maximum-capacity");
+				ptype = PENVSYS_EVENT_CAPACITY;
+			}
 			if (ptype != 0)
 				sme_event_unregister(sme, edata->desc, ptype);
 
@@ -1875,6 +1887,26 @@
 		}
 
 		/* 
+		 * did the user want to set a high capacity event?
+		 */
+		obj2 = prop_dictionary_get(udict, "high-capacity");
+		if (obj2 && prop_object_type(obj2) == PROP_TYPE_NUMBER) {
+			targetfound = true;
+			lims.sel_warnmin = prop_number_integer_value(obj2);
+			props |= PROP_BATTHIGH;
+		}
+
+		/* 
+		 * did the user want to set a maximum capacity event?
+		 */
+		obj2 = prop_dictionary_get(udict, "maximum-capacity");
+		if (obj2 && prop_object_type(obj2) == PROP_TYPE_NUMBER) {
+			targetfound = true;
+			lims.sel_warnmin = prop_number_integer_value(obj2);
+			props |= PROP_BATTMAX;
+		}
+
+		/* 
 		 * did the user want to set a critical max event?
 		 */
 		obj2 = prop_dictionary_get(udict, "critical-max");

Index: src/sys/dev/sysmon/sysmon_envsys_events.c
diff -u src/sys/dev/sysmon/sysmon_envsys_events.c:1.83 src/sys/dev/sysmon/sysmon_envsys_events.c:1.84
--- src/sys/dev/sysmon/sysmon_envsys_events.c:1.83	Sun Feb 14 23:30:52 2010
+++ src/sys/dev/sysmon/sysmon_envsys_events.c	Mon Feb 15 22:32:04 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: sysmon_envsys_events.c,v 1.83 2010/02/14 23:30:52 pgoyette Exp $ */
+/* $NetBSD: sysmon_envsys_events.c,v 1.84 2010/02/15 22:32:04 pgoyette Exp $ */
 
 /*-
  * Copyright (c) 2007, 2008 Juan Romero Pardines.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys_events.c,v 1.83 2010/02/14 23:30:52 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys_events.c,v 1.84 2010/02/15 22:32:04 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -63,6 +63,8 @@
 	{ ENVSYS_BATTERY_CAPACITY_NORMAL,	PENVSYS_EVENT_NORMAL },
 	{ ENVSYS_BATTERY_CAPACITY_WARNING,	PENVSYS_EVENT_BATT_WARN },
 	{ ENVSYS_BATTERY_CAPACITY_CRITICAL,	PENVSYS_EVENT_BATT_CRIT },
+	{ ENVSYS_BATTERY_CAPACITY_HIGH,		PENVSYS_EVENT_BATT_HIGH },
+	{ ENVSYS_BATTERY_CAPACITY_MAX,		PENVSYS_EVENT_BATT_MAX },
 	{ -1, 					-1 }
 };
 
@@ -137,19 +139,19 @@
 		    __func__, sme->sme_name, edata->desc, crittype));
 
 		see = osee;
-		if (props & PROP_CRITMAX) {
+		if (props & (PROP_CRITMAX | PROP_BATTMAX)) {
 			if (lims->sel_critmax == edata->limits.sel_critmax) {
 				DPRINTF(("%s: type=%d (critmax exists)\n",
 				    __func__, crittype));
 				error = EEXIST;
-				props &= ~PROP_CRITMAX;
+				props &= ~(PROP_CRITMAX | PROP_BATTMAX);
 			}
 		}
-		if (props & PROP_WARNMAX) {
+		if (props & (PROP_WARNMAX | PROP_BATTHIGH)) {
 			if (lims->sel_warnmax == edata->limits.sel_warnmax) {
 				DPRINTF(("%s: warnmax exists\n", __func__));
 				error = EEXIST;
-				props &= ~PROP_WARNMAX;
+				props &= ~(PROP_WARNMAX | PROP_BATTHIGH);
 			}
 		}
 		if (props & (PROP_WARNMIN | PROP_BATTWARN)) {
@@ -246,6 +248,8 @@
 	LIMIT_OP("critical-min", sel_critmin, PROP_CRITMIN);
 
 	/* %Capacity-based limits */
+	LIMIT_OP("maximum-capacity",  sel_critmax,  PROP_BATTMAX);
+	LIMIT_OP("high-capacity",     sel_warnmax,  PROP_BATTHIGH);
 	LIMIT_OP("warning-capacity",  sel_warnmin,  PROP_BATTWARN);
 	LIMIT_OP("critical-capacity", sel_critmin,  PROP_BATTCAP);
 
@@ -618,9 +622,11 @@
 			else if __EXCEED_LIM(PROP_WARNMIN | PROP_BATTWARN, 
 					sel_warnmin, <)
 				edata->state = ENVSYS_SWARNUNDER;
-			else if __EXCEED_LIM(PROP_CRITMAX, sel_critmax, >)
+			else if __EXCEED_LIM(PROP_CRITMAX | PROP_BATTMAX,
+					sel_critmax, >)
 				edata->state = ENVSYS_SCRITOVER;
-			else if __EXCEED_LIM(PROP_WARNMAX, sel_warnmax, >)
+			else if __EXCEED_LIM(PROP_WARNMAX | PROP_BATTHIGH,
+					sel_warnmax, >)
 				edata->state = ENVSYS_SWARNOVER;
 			else
 				edata->state = ENVSYS_SVALID;

Index: src/sys/dev/sysmon/sysmon_power.c
diff -u src/sys/dev/sysmon/sysmon_power.c:1.42 src/sys/dev/sysmon/sysmon_power.c:1.43
--- src/sys/dev/sysmon/sysmon_power.c:1.42	Fri Nov  6 18:28:10 2009
+++ src/sys/dev/sysmon/sysmon_power.c	Mon Feb 15 22:32:04 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysmon_power.c,v 1.42 2009/11/06 18:28:10 jakllsch Exp $	*/
+/*	$NetBSD: sysmon_power.c,v 1.43 2010/02/15 22:32:04 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2007 Juan Romero Pardines.
@@ -69,7 +69,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysmon_power.c,v 1.42 2009/11/06 18:28:10 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysmon_power.c,v 1.43 2010/02/15 22:32:04 pgoyette Exp $");
 
 #include "opt_compat_netbsd.h"
 #include <sys/param.h>
@@ -135,6 +135,8 @@
 	{ PENVSYS_EVENT_WARNUNDER,	"warning-under" },
 	{ PENVSYS_EVENT_BATT_CRIT,	"critical-capacity" },
 	{ PENVSYS_EVENT_BATT_WARN,	"warning-capacity" },
+	{ PENVSYS_EVENT_BATT_HIGH,	"high-capacity" },
+	{ PENVSYS_EVENT_BATT_MAX,	"maximum-capacity" },
 	{ PENVSYS_EVENT_STATE_CHANGED,	"state-changed" },
 	{ PENVSYS_EVENT_LOW_POWER,	"low-power" },
 	{ -1, NULL }
@@ -318,6 +320,8 @@
 	case PENVSYS_EVENT_WARNOVER:
 	case PENVSYS_EVENT_BATT_CRIT:
 	case PENVSYS_EVENT_BATT_WARN:
+	case PENVSYS_EVENT_BATT_HIGH:
+	case PENVSYS_EVENT_BATT_MAX:
 	case PENVSYS_EVENT_STATE_CHANGED:
 	case PENVSYS_EVENT_LOW_POWER:
 	    {
@@ -808,6 +812,14 @@
 			mystr = "warning capacity";
 			PENVSYS_SHOWSTATE(mystr);
 			break;
+		case PENVSYS_EVENT_BATT_HIGH:
+			mystr = "high capacity";
+			PENVSYS_SHOWSTATE(mystr);
+			break;
+		case PENVSYS_EVENT_BATT_MAX:
+			mystr = "maximum capacity";
+			PENVSYS_SHOWSTATE(mystr);
+			break;
 		case PENVSYS_EVENT_NORMAL:
 			printf("%s: normal capacity on '%s'\n",
 			    pes->pes_dvname, pes->pes_sensname);

Index: src/sys/sys/envsys.h
diff -u src/sys/sys/envsys.h:1.29 src/sys/sys/envsys.h:1.30
--- src/sys/sys/envsys.h:1.29	Sun Feb 14 23:06:01 2010
+++ src/sys/sys/envsys.h	Mon Feb 15 22:32:04 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: envsys.h,v 1.29 2010/02/14 23:06:01 pgoyette Exp $ */
+/* $NetBSD: envsys.h,v 1.30 2010/02/15 22:32:04 pgoyette Exp $ */
 
 /*-
  * Copyright (c) 1999, 2007 The NetBSD Foundation, Inc.
@@ -133,6 +133,8 @@
 	ENVSYS_BATTERY_CAPACITY_NORMAL	= 1,	/* normal cap in battery */
 	ENVSYS_BATTERY_CAPACITY_WARNING,	/* warning cap in battery */
 	ENVSYS_BATTERY_CAPACITY_CRITICAL,	/* critical cap in battery */
+	ENVSYS_BATTERY_CAPACITY_HIGH,		/* high cap in battery */
+	ENVSYS_BATTERY_CAPACITY_MAX,		/* maximum cap in battery */
 	ENVSYS_BATTERY_CAPACITY_LOW		/* low cap in battery */
 };
 
@@ -167,13 +169,16 @@
 #define	PROP_WARNMIN		0x0008
 #define	PROP_BATTCAP		0x0010
 #define	PROP_BATTWARN		0x0020
-#define	PROP_DESC		0x0040
-#define	PROP_RFACT		0x0080
+#define	PROP_BATTHIGH		0x0040
+#define	PROP_BATTMAX		0x0080
+#define	PROP_DESC		0x0100
+#define	PROP_RFACT		0x0200
 
 #define	PROP_DRIVER_LIMITS	0x8000
-#define	PROP_CAP_LIMITS		(PROP_BATTCAP | PROP_BATTWARN)
-#define	PROP_VAL_LIMITS		(PROP_CRITMAX | PROP_CRITMIN | \
-				 PROP_WARNMAX | PROP_WARNMIN)
+#define	PROP_CAP_LIMITS		(PROP_BATTCAP  | PROP_BATTWARN | \
+				 PROP_BATTHIGH | PROP_BATTMAX)
+#define	PROP_VAL_LIMITS		(PROP_CRITMAX  | PROP_CRITMIN | \
+				 PROP_WARNMAX  | PROP_WARNMIN)
 #define	PROP_LIMITS		(PROP_CAP_LIMITS | PROP_VAL_LIMITS)
 
 /*

Index: src/sys/sys/power.h
diff -u src/sys/sys/power.h:1.14 src/sys/sys/power.h:1.15
--- src/sys/sys/power.h:1.14	Fri Nov  6 18:28:10 2009
+++ src/sys/sys/power.h	Mon Feb 15 22:32:04 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: power.h,v 1.14 2009/11/06 18:28:10 jakllsch Exp $	*/
+/*	$NetBSD: power.h,v 1.15 2010/02/15 22:32:04 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -174,12 +174,18 @@
  *
  *	PENVSYS_EVENT_BATT_WARN		User warning capacity.
  *
+ *	PENVSYS_EVENT_BATT_HIGH		User high capacity.
+ *
+ *	PENVSYS_EVENT_BATT_MAX		User maximum capacity.
+ *
  * 	PENVSYS_EVENT_LOW_POWER		AC Adapter is OFF and all batteries
  * 					are discharged.
  */
 
 #define PENVSYS_EVENT_BATT_CRIT		170
 #define PENVSYS_EVENT_BATT_WARN		175
+#define PENVSYS_EVENT_BATT_HIGH		177
+#define PENVSYS_EVENT_BATT_MAX		178
 #define PENVSYS_EVENT_LOW_POWER		180
 
 /*

Reply via email to