diff --git a/share/man/man4/envsys.4 b/share/man/man4/envsys.4
index a07c817efbfb..c3058cb8ab12 100644
--- a/share/man/man4/envsys.4
+++ b/share/man/man4/envsys.4
@@ -1,4 +1,4 @@
-.\" $NetBSD: envsys.4,v 1.34 2007/09/11 22:31:35 wiz Exp $
+.\" $NetBSD: envsys.4,v 1.35 2007/10/07 04:19:51 xtraeme Exp $
.\"
.\"
.\" Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd September 4, 2007
+.Dd October 7, 2007
.Dt ENVSYS 4
.Os
.Sh NAME
@@ -74,7 +74,7 @@ for communication between kernel and user space. The following
types are available:
.Pp
.Bl -tag -width XX -compact
-.It Dv ENVSYS_GETDICTIONARY (prop_dictionary_t)
+.It Dv ENVSYS_GETDICTIONARY (plistref)
.Pp
This
.Xr ioctl 2
@@ -95,20 +95,24 @@ and all available properties set on it:
\&\*[Lt]key\&\*[Gt]device0\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]array\&\*[Gt]
\&\*[Lt]dict\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]allow-rfact\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]true\&/\&\*[Gt]
\&\*[Lt]key\&\*[Gt]avg-value\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]36400\&\*[Lt]\&/integer\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]battery-state\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]string\&\*[Gt]NORMAL\&\*[Lt]\&/string\&\*[Gt]
\&\*[Lt]key\&\*[Gt]critical-capacity\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]21417\&\*[Lt]\&/integer\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]critical-max-limit\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]critical-max\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]343150000\&\*[Lt]\&/integer\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]critical-min-limit\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]critical-min\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]288150000\&\*[Lt]\&/integer\&\*[Gt]
\&\*[Lt]key\&\*[Gt]cur-value\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]406000\&\*[Lt]\&/integer\&\*[Gt]
\&\*[Lt]key\&\*[Gt]description\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]string\&\*[Gt]CPU Temp\&\*[Lt]\&/string\&\*[Gt]
+ \&\*[Lt]string\&\*[Gt]index\&\*[Lt]\&/string\&\*[Gt]
\&\*[Lt]string\&\*[Gt]sensor0\&\*[Lt]\&/string\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]generic-state-string\&\*[Lt]\&/key\&\*[Gt]
- \&\*[Lt]string\&\*[Gt]NORMAL\&\*[Lt]\&/string\&\*[Gt]
\&\*[Lt]key\&\*[Gt]max-value\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]3894000\&\*[Lt]\&/integer\&\*[Gt]
\&\*[Lt]key\&\*[Gt]min-value\&\*[Lt]\&/key\&\*[Gt]
@@ -139,8 +143,15 @@ and all available properties set on it:
.Pp
Let's explain some more about those objects:
.Bl -tag -width "monitoring-state-critical-overxx"
+.It Fa allow-rfact
+Set to
+.Em true
+mean that the sensor is able to change the resistor factor,
+only used in Voltage sensors.
.It Fa avg-value
Current average value in the sensor.
+.It Fa battery-state
+Current state for a battery state sensor.
.It Fa critical-capacity
Critical capacity set previously by the
.Ar ENVSYS_SETDICTIONARY
@@ -148,11 +159,11 @@ Critical capacity set previously by the
Only available on sensors with the
.Em want-percentage
object enabled.
-.It Fa critical-max-limit
+.It Fa critical-max
Critical max limit set previously by the
.Ar ENVSYS_SETDICTIONARY
.Xr ioctl 2 .
-.It Fa critical-min-limit
+.It Fa critical-min
Critical min limit set previously by the
.Ar ENVSYS_SETDICTIONARY
.Xr ioctl 2 .
@@ -160,13 +171,8 @@ Critical min limit set previously by the
Current value in the sensor.
.It Fa description
Description of the sensor.
-.It Fa generic-state-string
-This is a generic string that
-.Xr envstat 8
-will use to print as
-.Em current value .
-Only used in sensors with type of
-.Em ENVSYS_GSTRING .
+.It Fa index
+Index position of the sensor.
.It Fa max-value
Current max value in the sensor.
.It Fa min-value
@@ -202,6 +208,27 @@ are valid and a percentage may be computed from them.
.El
.Pp
.Bl -tag -width XX -compact
+.It Dv ENVSYS_REMOVEPROPS (prop_dictionary_t)
+.Pp
+This
+.Xr ioctl 2
+is used to remove all properties that are currently set via the
+.Ar ENVSYS_SETDICTIONARY
+ioctl. The values will be set to defaults, the ones that the driver
+uses.
+.Pp
+Only one object is allowed on this dictionary:
+.Bd -literal -offset -ident
+ envsys-remove-props
+
+.Ed
+.Pp
+It is a boolean object and must be set to
+.Em true
+to be effective.
+.El
+.Bl -tag -width XX -compact
+.Pp
.It Dv ENVSYS_SETDICTIONARY (prop_dictionary_t)
.Pp
This
@@ -214,77 +241,49 @@ the kernel part. The following is the property list representation
of a dictionary with all recognized and required keywords:
.Bd -literal
\&\*[Lt]dict\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]driver-name\&\*[Lt]\&/key\&\*[Gt]
- \&\*[Lt]string\&\*[Gt]driver0\&\*[Lt]\&/string\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]sensor-name\&\*[Lt]\&/key\&\*[Gt]
- \&\*[Lt]string\&\*[Gt]sensor0\&\*[Lt]\&/string\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]new-description\&\*[Lt]\&/key\&\*[Gt]
- \&\*[Lt]string\&\*[Gt]mysensor0\&\*[Lt]\&/string\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]new-rfact\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]description\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]string\&\*[Gt]cpu temp\&\*[Lt]\&/string\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]rfact\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]56000\&\*[Lt]\&/integer\&\*[Gt]
\&\*[Lt]key\&\*[Gt]critical-capacity\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]10\&\*[Lt]\&/integer\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]critical-max-limit\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]critical-max\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]3400\&\*[Lt]\&/integer\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]critical-min-limit\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]critical-min\&\*[Lt]\&/key\&\*[Gt]
\&\*[Lt]integer\&\*[Gt]2800\&\*[Lt]\&/integer\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]remove-critical-cap\&\*[Lt]\&/key\&\*[Gt]
- \&\*[Lt]true\&/\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]remove-cmax-limit\&\*[Lt]\&/key\&\*[Gt]
- \&\*[Lt]true\&/\&\*[Gt]
- \&\*[Lt]key\&\*[Gt]remove-cmin-limit\&\*[Lt]\&/key\&\*[Gt]
- \&\*[Lt]true\&/\&\*[Gt]
\&\*[Lt]\&/dict\&\*[Gt]
.Ed
.Pp
A dictionary sent to the kernel with this
.Xr ioctl 2
-must
-.Sy always
-have the objects
-.Ar driver-name
-and
-.Ar sensor-name .
-They are used to specify the
-.Sy driver
-and the
-.Sy sensor
-that we want to set a property for.
+should have the following structure:
+.Bd -literal
+\&\*[Lt]dict\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]device_name\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]array\&\*[Gt]
+ \&\*[Lt]dict\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]index\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]string\&\*[Gt]sensor0\&\*[Lt]\&/string\&\*[Gt]
+ \&\*[Lt]key\&\*[Gt]description\&\*[Lt]\&/key\&\*[Gt]
+ \&\*[Lt]string\&\*[Gt]cpu temp\&\*[Lt]\&/string\&\*[Gt]
+ ...
+ Another property for this sensor
+ ...
+ \&\*[Lt]\&/dict\&\*[Gt]
+ ...
+ Another dictionary for other sensor
+ ...
+ \&\*[Lt]\&/array\&\*[Gt]
+ ...
+ Another device as above
+ ...
+\&\*[Lt]\&/dict\&\*[Gt]
+.Ed
.Pp
-.Em NOTE :
-Only one of the following objects must be added into the dictionary
-at a time:
-.Ar new-description ,
-.Ar new-rfact ,
-.Ar critical-capacity ,
-.Ar critical-max-limit ,
-.Ar critical-min-limit ,
-.Ar remove-critical-cap ,
-.Ar remove-cmax-limit ,
-and
-.Ar remove-cmin-limit .
-.Pp
-The following operation is selected depending what object
-was added into the dictionary:
-.Pp
-.Bl -bullet -offset indent -compact
-.It
-change a description.
-.It
-change the rfact in a voltage sensor.
-.It
-set a critical capacity limit.
-.It
-set a critical max limit.
-.It
-set a critical min limit.
-.It
-remove a critical capacity limit.
-.It
-remove a critical max limit.
-.It
-remove a critical min limit.
-.El
+The named device will be an array and will contain dictionaries,
+any dictionary needs to have the
+.Em index
+object specifying the sensor that is required for the new properties.
.Pp
If an unknown object was sent with the dictionary,
.Er EINVAL
@@ -311,79 +310,58 @@ is the following:
.Em value = (value / 100) * max value .
The max value is available in the sensor's dictionary.
.Sh EXAMPLES
-The following example illustrates how to receive the dictionary
-and to print it in raw XML/plist format:
-.Bd -literal
-#define _DEV_SYSMON /dev/sysmon
-
-int main(void)
-{
- prop_dictionary_t dict;
- char *buf;
- int fd;
-
- if ((fd = open(_DEV_SYSMON, O_RDONLY)) == -1)
- err(EXIT_FAILURE, "open")
-
- if (prop_dictionary_recv_ioctl(fd, ENVSYS_GETDICTIONARY, \*[Am]dict)) {
- (void)close(fd);
- err(EINVAL, "prop_dictionary_recv_ioctl");
- }
-
- buf = prop_dictionary_externalize(dict);
- (void)printf("%s", buf);
- prop_object_release(dict);
- free(buf);
- (void)close(fd);
-
- return EXIT_SUCCESS;
-}
-.Ed
.Pp
-Another example that shows how to use the
+The following example shows how to change the description
+of
+.Ql sensor0
+in the
+.Ql aiboost0
+device with the
.Ar ENVSYS_SETDICTIONARY
-.Xr ioctl 2
-to change the description in a sensor:
+.Xr ioctl 2 :
.Bd -literal
int
main(void)
{
- prop_dictionary_t dict;
+ prop_dictionary_t global_dict, sensor_dict;
+ prop_array_t;
prop_object_t obj;
int fd;
- dict = prop_dictionary_create();
+ global_dict = prop_dictionary_create();
+ sensor_dict = prop_dictionary_create();
+ array = prop_array_create();
- obj = prop_string_create_cstring_nocopy("aiboost0");
+ if (!prop_dictionary_set(global_dict, "aiboost0", array))
+ err(EINVAL, "prop_dictionary_set global");
+
+ obj = prop_string_create_cstring_nocopy("sensor0");
if (obj == NULL ||
- !prop_dictionary_set(dict, "driver-name", obj))
- err(EINVAL, "driver-name");
-
- prop_object_release(obj);
-
- obj = prop_string_create_cstring_nocopy("CPU Temperature");
- if (obj == NULL ||
- !prop_dictionary_set(dict, "sensor-name", obj))
- err(EINVAL, "sensor-name");
+ !prop_dictionary_set(dict, "index", obj))
+ err(EINVAL, "sensor index");
prop_object_release(obj);
/* new description */
obj = prop_string_create_cstring_nocopy("CPU temp");
if (obj == NULL ||
- !prop_dictionary_set(dict, "new-description", obj))
- err(EINVAL, "new-description");
+ !prop_dictionary_set(dict, "description", obj))
+ err(EINVAL, "new description");
prop_object_release(obj);
- if ((fd = open(_DEV_SYSMON, O_RDONLY)) == -1)
+ if (!prop_array_add(array, sensor_dict))
+ err(EINVAL, "prop_array_add");
+
+ if ((fd = open(_DEV_SYSMON, O_RDWR)) == -1)
err(EXIT_FAILURE, "open")
/* we are done, send the dictionary */
- error = prop_dictionary_send_ioctl(dict,
+ error = prop_dictionary_send_ioctl(global_dict,
fd,
ENVSYS_SETDICTIONARY);
- prop_object_release(dict);
+ prop_object_release(array);
+ prop_object_release(global_dict);
(void)close(fd);
return error;
}