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