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 } 169