001 /*----------------------------------------------------------------------------*/
002 /* Copyright (c) FIRST 2008-2012. All Rights Reserved. */
003 /* Open Source Software - may be modified and shared by FRC teams. The code */
004 /* must be accompanied by the FIRST BSD license file in the root directory of */
005 /* the project. */
006 /*----------------------------------------------------------------------------*/
007
008 package edu.wpi.first.wpilibj.visa;
009
010 /**
011 * Exception class which looks up visa error codes
012 * @author dtjones
013 */
014 public class VisaException extends Exception {
015
016 /**
017 * Create a new VisaException
018 * @param function the name of the function which returned the status code
019 * @param errorCode the status code returned by the function
020 */
021 public VisaException(String function, int errorCode) {
022 super(makeMessage(function, errorCode));
023 }
024
025 public static String makeMessage(String function, int errorCode) {
026 return lookUpCode(errorCode) + " in function " + function;
027 }
028
029 public static String lookUpCode(int errorCode) {
030
031 switch (errorCode) {
032 case -1073807360:
033 return "VI_ERROR_SYSTEM_ERROR";
034 case -1073807346:
035 return "VI_ERROR_INV_OBJECT";
036 case -1073807345:
037 return "VI_ERROR_RSRC_LOCKED";
038 case -1073807344:
039 return "VI_ERROR_INV_EXPR";
040 case -1073807343:
041 return "VI_ERROR_RSRC_NFOUND";
042 case -1073807342:
043 return "VI_ERROR_INV_RSRC_NAME";
044 case -1073807341:
045 return "VI_ERROR_INV_ACC_MODE";
046 case -1073807339:
047 return "VI_ERROR_TMO";
048 case -1073807338:
049 return "VI_ERROR_CLOSING_FAILED";
050 case -1073807333:
051 return "VI_ERROR_INV_DEGREE";
052 case -1073807332:
053 return "VI_ERROR_INV_JOB_ID";
054 case -1073807331:
055 return "VI_ERROR_NSUP_ATTR";
056 case -1073807330:
057 return "VI_ERROR_NSUP_ATTR_STATE";
058 case -1073807329:
059 return "VI_ERROR_ATTR_READONLY";
060 case -1073807328:
061 return "VI_ERROR_INV_LOCK_TYPE";
062 case -1073807327:
063 return "VI_ERROR_INV_ACCESS_KEY";
064 case -1073807322:
065 return "VI_ERROR_INV_EVENT";
066 case -1073807321:
067 return "VI_ERROR_INV_MECH";
068 case -1073807320:
069 return "VI_ERROR_HNDLR_NINSTALLED";
070 case -1073807319:
071 return "VI_ERROR_INV_HNDLR_REF";
072 case -1073807318:
073 return "VI_ERROR_INV_CONTEXT";
074 case -1073807315:
075 return "VI_ERROR_QUEUE_OVERFLOW";
076 case -1073807313:
077 return "VI_ERROR_NENABLED";
078 case -1073807312:
079 return "VI_ERROR_ABORT";
080 case -1073807308:
081 return "VI_ERROR_RAW_WR_PROT_VIOL";
082 case -1073807307:
083 return "VI_ERROR_RAW_RD_PROT_VIOL";
084 case -1073807306:
085 return "VI_ERROR_OUTP_PROT_VIOL";
086 case -1073807305:
087 return "VI_ERROR_INP_PROT_VIOL";
088 case -1073807304:
089 return "VI_ERROR_BERR";
090 case -1073807303:
091 return "VI_ERROR_IN_PROGRESS";
092 case -1073807302:
093 return "VI_ERROR_INV_SETUP";
094 case -1073807301:
095 return "VI_ERROR_QUEUE_ERROR";
096 case -1073807300:
097 return "VI_ERROR_ALLOC";
098 case -1073807299:
099 return "VI_ERROR_INV_MASK";
100 case -1073807298:
101 return "VI_ERROR_IO";
102 case -1073807297:
103 return "VI_ERROR_INV_FMT";
104 case -1073807295:
105 return "VI_ERROR_NSUP_FMT";
106 case -1073807294:
107 return "VI_ERROR_LINE_IN_USE";
108 case -1073807290:
109 return "VI_ERROR_NSUP_MODE";
110 case -1073807286:
111 return "VI_ERROR_SRQ_NOCCURRED";
112 case -1073807282:
113 return "VI_ERROR_INV_SPACE";
114 case -1073807279:
115 return "VI_ERROR_INV_OFFSET";
116 case -1073807278:
117 return "VI_ERROR_INV_WIDTH";
118 case -1073807276:
119 return "VI_ERROR_NSUP_OFFSET";
120 case -1073807275:
121 return "VI_ERROR_NSUP_VAR_WIDTH";
122 case -1073807273:
123 return "VI_ERROR_WINDOW_NMAPPED";
124 case -1073807271:
125 return "VI_ERROR_RESP_PENDING";
126 case -1073807265:
127 return "VI_ERROR_NLISTENERS";
128 case -1073807264:
129 return "VI_ERROR_NCIC";
130 case -1073807263:
131 return "VI_ERROR_NSYS_CNTLR";
132 case -1073807257:
133 return "VI_ERROR_NSUP_OPER";
134 case -1073807256:
135 return "VI_ERROR_INTR_PENDING";
136 case -1073807254:
137 return "VI_ERROR_ASRL_PARITY";
138 case -1073807253:
139 return "VI_ERROR_ASRL_FRAMING";
140 case -1073807252:
141 return "VI_ERROR_ASRL_OVERRUN";
142 case -1073807250:
143 return "VI_ERROR_TRIG_NMAPPED";
144 case -1073807248:
145 return "VI_ERROR_NSUP_ALIGN_OFFSET";
146 case -1073807247:
147 return "VI_ERROR_USER_BUF";
148 case -1073807246:
149 return "VI_ERROR_RSRC_BUSY";
150 case -1073807242:
151 return "VI_ERROR_NSUP_WIDTH";
152 case -1073807240:
153 return "VI_ERROR_INV_PARAMETER";
154 case -1073807239:
155 return "VI_ERROR_INV_PROT";
156 case -1073807237:
157 return "VI_ERROR_INV_SIZE";
158 case -1073807232:
159 return "VI_ERROR_WINDOW_MAPPED";
160 case -1073807231:
161 return "VI_ERROR_NIMPL_OPER";
162 case -1073807229:
163 return "VI_ERROR_INV_LENGTH";
164 case -1073807215:
165 return "VI_ERROR_INV_MODE";
166 case -1073807204:
167 return "VI_ERROR_SESN_NLOCKED";
168 case -1073807203:
169 return "VI_ERROR_MEM_NSHARED";
170 case -1073807202:
171 return "VI_ERROR_LIBRARY_NFOUND";
172 case -1073807201:
173 return "VI_ERROR_NSUP_INTR";
174 case -1073807200:
175 return "VI_ERROR_INV_LINE";
176 case -1073807199:
177 return "VI_ERROR_FILE_ACCESS";
178 case -1073807198:
179 return "VI_ERROR_FILE_IO";
180 case -1073807197:
181 return "VI_ERROR_NSUP_LINE";
182 case -1073807196:
183 return "VI_ERROR_NSUP_MECH";
184 case -1073807195:
185 return "VI_ERROR_INTF_NUM_NCONFIG";
186 case -1073807194:
187 return "VI_ERROR_CONN_LOST";
188 case -1073807193:
189 return "VI_ERROR_MACHINE_NAVAIL";
190 case -1073807192:
191 return "VI_ERROR_NPERMISSION";
192 default:
193 return "Unknown error code";
194 }
195 }
196 }