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    }