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 }