Initial import from FreeBSD RELENG_4:
[dragonfly.git] / share / examples / ses / srcs / eltsub.c
1 /* $FreeBSD: src/share/examples/ses/srcs/eltsub.c,v 1.1 2000/02/29 05:44:17 mjacob Exp $ */
2 /*
3  * Copyright (c) 2000 by Matthew Jacob
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions, and the following disclaimer,
11  *    without modification, immediately at the beginning of the file.
12  * 2. The name of the author may not be used to endorse or promote products
13  *    derived from this software without specific prior written permission.
14  *
15  * Alternatively, this software may be distributed under the terms of the
16  * the GNU Public License ("GPL").
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
22  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  * 
30  * Matthew Jacob
31  * Feral Software
32  * mjacob@feral.com
33  */
34
35 #include <unistd.h>
36 #include <stdlib.h>
37 #include <stdio.h>
38 #include <sys/ioctl.h>
39 #include SESINC
40
41 char *
42 geteltnm(type)
43         int type;
44 {
45         static char rbuf[132];
46
47         switch (type) {
48         case SESTYP_UNSPECIFIED:
49                 sprintf(rbuf, "Unspecified");
50                 break;
51         case SESTYP_DEVICE:
52                 sprintf(rbuf, "Device");
53                 break;
54         case SESTYP_POWER:
55                 sprintf(rbuf, "Power supply");
56                 break;
57         case SESTYP_FAN:
58                 sprintf(rbuf, "Cooling element");
59                 break;
60         case SESTYP_THERM:
61                 sprintf(rbuf, "Temperature sensors");
62                 break;
63         case SESTYP_DOORLOCK:
64                 sprintf(rbuf, "Door Lock");
65                 break;
66         case SESTYP_ALARM:
67                 sprintf(rbuf, "Audible alarm");
68                 break;
69         case SESTYP_ESCC:
70                 sprintf(rbuf, "Enclosure services controller electronics");
71                 break;
72         case SESTYP_SCC:
73                 sprintf(rbuf, "SCC controller electronics");
74                 break;
75         case SESTYP_NVRAM:
76                 sprintf(rbuf, "Nonvolatile cache");
77                 break;
78         case SESTYP_UPS:
79                 sprintf(rbuf, "Uninterruptible power supply");
80                 break;
81         case SESTYP_DISPLAY:
82                 sprintf(rbuf, "Display");
83                 break;
84         case SESTYP_KEYPAD:
85                 sprintf(rbuf, "Key pad entry device");
86                 break;
87         case SESTYP_SCSIXVR:
88                 sprintf(rbuf, "SCSI port/transceiver");
89                 break;
90         case SESTYP_LANGUAGE:
91                 sprintf(rbuf, "Language");
92                 break;
93         case SESTYP_COMPORT:
94                 sprintf(rbuf, "Communication Port");
95                 break;
96         case SESTYP_VOM:
97                 sprintf(rbuf, "Voltage Sensor");
98                 break;
99         case SESTYP_AMMETER:
100                 sprintf(rbuf, "Current Sensor");
101                 break;
102         case SESTYP_SCSI_TGT:
103                 sprintf(rbuf, "SCSI target port");
104                 break;
105         case SESTYP_SCSI_INI:
106                 sprintf(rbuf, "SCSI initiator port");
107                 break;
108         case SESTYP_SUBENC:
109                 sprintf(rbuf, "Simple sub-enclosure");
110                 break;
111         default:
112                 (void) sprintf(rbuf, "<Type 0x%x>", type);
113                 break;
114         }
115         return (rbuf);
116 }
117
118 static char *
119 scode2ascii(code)
120         u_char code;
121 {
122         static char rbuf[32];
123         switch (code & 0xf) {
124         case SES_OBJSTAT_UNSUPPORTED:
125                 sprintf(rbuf, "status not supported");
126                 break;
127         case SES_OBJSTAT_OK:
128                 sprintf(rbuf, "ok");
129                 break;
130         case SES_OBJSTAT_CRIT:
131                 sprintf(rbuf, "critical");
132                 break;
133         case SES_OBJSTAT_NONCRIT:
134                 sprintf(rbuf, "non-critical");
135                 break;
136         case SES_OBJSTAT_UNRECOV:
137                 sprintf(rbuf, "unrecoverable");
138                 break;
139         case SES_OBJSTAT_NOTINSTALLED:
140                 sprintf(rbuf, "not installed");
141                 break;
142         case SES_OBJSTAT_UNKNOWN:
143                 sprintf(rbuf, "unknown status");
144                 break;
145         case SES_OBJSTAT_NOTAVAIL:
146                 sprintf(rbuf, "status not available");
147                 break;
148         default:
149                 sprintf(rbuf, "unknown status code %x", code & 0xf);
150                 break;
151         }
152         return (rbuf);
153 }
154
155
156 char *
157 stat2ascii(eletype, cstat)
158         int eletype;
159         u_char *cstat;
160 {
161         static char ebuf[256], *scode;
162
163         scode = scode2ascii(cstat[0]);
164         sprintf(ebuf, "Status=%s (bytes=0x%02x 0x%02x 0x%02x 0x%02x)",
165             scode, cstat[0], cstat[1], cstat[2], cstat[3]);
166         return (ebuf);
167 }