Home | History | Annotate | Line # | Download | only in sysmon
sysmon_envsys_tables.c revision 1.11.12.1
      1  1.11.12.1       tls /* $NetBSD: sysmon_envsys_tables.c,v 1.11.12.1 2014/08/10 06:54:58 tls Exp $ */
      2        1.1   xtraeme 
      3        1.1   xtraeme /*-
      4        1.2   xtraeme  * Copyright (c) 2007 Juan Romero Pardines.
      5        1.1   xtraeme  * All rights reserved.
      6        1.1   xtraeme  *
      7        1.1   xtraeme  * Redistribution and use in source and binary forms, with or without
      8        1.1   xtraeme  * modification, are permitted provided that the following conditions
      9        1.1   xtraeme  * are met:
     10        1.1   xtraeme  * 1. Redistributions of source code must retain the above copyright
     11        1.1   xtraeme  *    notice, this list of conditions and the following disclaimer.
     12        1.1   xtraeme  * 2. Redistributions in binary form must reproduce the above copyright
     13        1.1   xtraeme  *    notice, this list of conditions and the following disclaimer in the
     14        1.1   xtraeme  *    documentation and/or other materials provided with the distribution.
     15        1.1   xtraeme  *
     16        1.2   xtraeme  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     17        1.2   xtraeme  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     18        1.2   xtraeme  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     19        1.2   xtraeme  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     20        1.2   xtraeme  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     21        1.2   xtraeme  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     22        1.2   xtraeme  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     23        1.2   xtraeme  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     24        1.2   xtraeme  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     25        1.2   xtraeme  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26        1.1   xtraeme  */
     27        1.1   xtraeme 
     28        1.1   xtraeme #include <sys/cdefs.h>
     29  1.11.12.1       tls __KERNEL_RCSID(0, "$NetBSD: sysmon_envsys_tables.c,v 1.11.12.1 2014/08/10 06:54:58 tls Exp $");
     30        1.1   xtraeme 
     31        1.1   xtraeme #include <sys/types.h>
     32        1.1   xtraeme 
     33        1.1   xtraeme #include <dev/sysmon/sysmonvar.h>
     34        1.1   xtraeme #include <dev/sysmon/sysmon_envsysvar.h>
     35        1.1   xtraeme 
     36        1.1   xtraeme /*
     37        1.1   xtraeme  * Available units type descriptions.
     38        1.1   xtraeme  */
     39        1.6  pgoyette static const struct sme_descr_entry sme_units_description[] = {
     40        1.1   xtraeme 	{ ENVSYS_STEMP,		PENVSYS_TYPE_TEMP,	"Temperature" },
     41        1.1   xtraeme 	{ ENVSYS_SFANRPM,	PENVSYS_TYPE_FAN,	"Fan" },
     42        1.1   xtraeme 	{ ENVSYS_SVOLTS_AC,	PENVSYS_TYPE_VOLTAGE,	"Voltage AC" },
     43        1.1   xtraeme 	{ ENVSYS_SVOLTS_DC,	PENVSYS_TYPE_VOLTAGE,	"Voltage DC" },
     44        1.1   xtraeme 	{ ENVSYS_SOHMS,		PENVSYS_TYPE_RESISTANCE,"Ohms" },
     45        1.1   xtraeme 	{ ENVSYS_SWATTS,	PENVSYS_TYPE_POWER,	"Watts" },
     46        1.1   xtraeme 	{ ENVSYS_SAMPS,		PENVSYS_TYPE_POWER,	"Ampere" },
     47        1.1   xtraeme 	{ ENVSYS_SWATTHOUR,	PENVSYS_TYPE_BATTERY,	"Watt hour" },
     48        1.1   xtraeme 	{ ENVSYS_SAMPHOUR,	PENVSYS_TYPE_BATTERY,	"Ampere hour" },
     49        1.1   xtraeme 	{ ENVSYS_INDICATOR,	PENVSYS_TYPE_INDICATOR,	"Indicator" },
     50        1.1   xtraeme 	{ ENVSYS_INTEGER,	PENVSYS_TYPE_INDICATOR,	"Integer" },
     51        1.1   xtraeme 	{ ENVSYS_DRIVE,		PENVSYS_TYPE_DRIVE,	"Drive" },
     52        1.3   xtraeme 	{ ENVSYS_BATTERY_CAPACITY, PENVSYS_TYPE_BATTERY,"Battery capacity" },
     53        1.3   xtraeme 	{ ENVSYS_BATTERY_CHARGE, -1,			"Battery charge" },
     54  1.11.12.1       tls 	{ ENVSYS_SRELHUMIDITY,	-1,			"relative Humidity" },
     55        1.1   xtraeme 	{ -1,			-1,			"unknown" }
     56        1.1   xtraeme };
     57        1.1   xtraeme 
     58        1.1   xtraeme /*
     59        1.1   xtraeme  * Available sensor state descriptions.
     60        1.1   xtraeme  */
     61        1.6  pgoyette static const struct sme_descr_entry sme_state_description[] = {
     62        1.1   xtraeme 	{ ENVSYS_SVALID,	-1, 	"valid" },
     63        1.1   xtraeme 	{ ENVSYS_SINVALID,	-1, 	"invalid" },
     64        1.1   xtraeme 	{ ENVSYS_SCRITICAL,	-1, 	"critical" },
     65        1.1   xtraeme 	{ ENVSYS_SCRITUNDER,	-1, 	"critical-under" },
     66        1.1   xtraeme 	{ ENVSYS_SCRITOVER,	-1, 	"critical-over" },
     67        1.1   xtraeme 	{ ENVSYS_SWARNUNDER,	-1, 	"warning-under" },
     68        1.1   xtraeme 	{ ENVSYS_SWARNOVER,	-1, 	"warning-over" },
     69        1.1   xtraeme 	{ -1,			-1, 	"unknown" }
     70        1.1   xtraeme };
     71        1.1   xtraeme 
     72        1.1   xtraeme /*
     73        1.1   xtraeme  * Available drive state descriptions.
     74        1.1   xtraeme  */
     75        1.6  pgoyette static const struct sme_descr_entry sme_drivestate_description[] = {
     76        1.4   xtraeme 	{ ENVSYS_DRIVE_EMPTY,		-1, 	"unknown" },
     77        1.4   xtraeme 	{ ENVSYS_DRIVE_READY,		-1, 	"ready" },
     78        1.4   xtraeme 	{ ENVSYS_DRIVE_POWERUP,		-1, 	"powering up" },
     79        1.4   xtraeme 	{ ENVSYS_DRIVE_ONLINE,		-1, 	"online" },
     80        1.5   xtraeme 	{ ENVSYS_DRIVE_OFFLINE, 	-1, 	"offline" },
     81        1.4   xtraeme 	{ ENVSYS_DRIVE_IDLE,		-1, 	"idle" },
     82        1.4   xtraeme 	{ ENVSYS_DRIVE_ACTIVE,		-1, 	"active" },
     83        1.5   xtraeme 	{ ENVSYS_DRIVE_BUILD,		-1,	"building" },
     84        1.4   xtraeme 	{ ENVSYS_DRIVE_REBUILD,		-1, 	"rebuilding" },
     85        1.4   xtraeme 	{ ENVSYS_DRIVE_POWERDOWN,	-1, 	"powering down" },
     86        1.4   xtraeme 	{ ENVSYS_DRIVE_FAIL,		-1, 	"failed" },
     87        1.4   xtraeme 	{ ENVSYS_DRIVE_PFAIL,		-1, 	"degraded" },
     88        1.4   xtraeme 	{ ENVSYS_DRIVE_MIGRATING,	-1,	"migrating" },
     89        1.5   xtraeme 	{ ENVSYS_DRIVE_CHECK,		-1,	"checking" },
     90        1.1   xtraeme 	{ -1,				-1, 	"unknown" }
     91        1.1   xtraeme };
     92        1.1   xtraeme 
     93        1.1   xtraeme /*
     94        1.3   xtraeme  * Available battery capacity descriptions.
     95        1.1   xtraeme  */
     96        1.6  pgoyette static const struct sme_descr_entry sme_batterycap_description[] = {
     97        1.3   xtraeme 	{ ENVSYS_BATTERY_CAPACITY_NORMAL,	-1,	"NORMAL" },
     98        1.3   xtraeme 	{ ENVSYS_BATTERY_CAPACITY_WARNING,	-1, 	"WARNING" },
     99        1.3   xtraeme 	{ ENVSYS_BATTERY_CAPACITY_CRITICAL,	-1, 	"CRITICAL" },
    100        1.3   xtraeme 	{ ENVSYS_BATTERY_CAPACITY_LOW,		-1,	"LOW" },
    101        1.1   xtraeme 	{ -1,					-1, 	"UNKNOWN" }
    102        1.1   xtraeme };
    103        1.1   xtraeme 
    104       1.11  pgoyette /*
    105       1.11  pgoyette  * Available indicator descriptions.
    106       1.11  pgoyette  */
    107       1.11  pgoyette static const struct sme_descr_entry sme_indicator_description[] = {
    108       1.11  pgoyette 	{ ENVSYS_INDICATOR_FALSE,		-1,	"FALSE" },
    109       1.11  pgoyette 	{ ENVSYS_INDICATOR_TRUE,		-1, 	"TRUE" },
    110       1.11  pgoyette 	{ -1,					-1, 	"UNKNOWN" }
    111       1.11  pgoyette };
    112       1.11  pgoyette 
    113        1.9    nonaka static const struct sme_descr_entry *
    114        1.8  christos sme_find_table(enum sme_descr_type table_id)
    115        1.1   xtraeme {
    116        1.6  pgoyette 	switch (table_id) {
    117        1.1   xtraeme 	case SME_DESC_UNITS:
    118        1.8  christos 		return sme_units_description;
    119        1.6  pgoyette 		break;
    120        1.1   xtraeme 	case SME_DESC_STATES:
    121        1.8  christos 		return sme_state_description;
    122        1.6  pgoyette 		break;
    123        1.1   xtraeme 	case SME_DESC_DRIVE_STATES:
    124        1.8  christos 		return sme_drivestate_description;
    125        1.6  pgoyette 		break;
    126        1.3   xtraeme 	case SME_DESC_BATTERY_CAPACITY:
    127        1.8  christos 		return sme_batterycap_description;
    128        1.6  pgoyette 		break;
    129       1.11  pgoyette 	case SME_DESC_INDICATOR:
    130       1.11  pgoyette 		return sme_indicator_description;
    131       1.11  pgoyette 		break;
    132        1.8  christos 	default:
    133        1.8  christos 		return NULL;
    134        1.1   xtraeme 	}
    135        1.8  christos }
    136        1.8  christos 
    137        1.8  christos /*
    138        1.8  christos  * Returns the entry from specified table with type == key
    139        1.8  christos  */
    140        1.8  christos const struct sme_descr_entry *
    141        1.8  christos sme_find_table_entry(enum sme_descr_type table_id, int key)
    142        1.8  christos {
    143       1.10    nonaka 	const struct sme_descr_entry *table = sme_find_table(table_id);
    144        1.6  pgoyette 
    145        1.8  christos 	if (table != NULL)
    146        1.8  christos 		for (; table->type != -1; table++)
    147        1.8  christos 			if (table->type == key)
    148        1.8  christos 				return table;
    149        1.6  pgoyette 
    150        1.8  christos 	return NULL;
    151        1.1   xtraeme }
    152        1.8  christos 
    153        1.7  pgoyette const struct sme_descr_entry *
    154        1.7  pgoyette sme_find_table_desc(enum sme_descr_type table_id, const char *str)
    155        1.7  pgoyette {
    156       1.10    nonaka 	const struct sme_descr_entry *table = sme_find_table(table_id);
    157        1.7  pgoyette 
    158        1.8  christos 	if (table != NULL)
    159        1.8  christos 		for (; table->type != -1; table++)
    160        1.8  christos 			if (strcmp(table->desc, str) == 0)
    161        1.8  christos 				return table;
    162        1.8  christos 	return NULL;
    163        1.7  pgoyette }
    164