1 /* $FreeBSD$ */ 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 } 168