EPICS Base  7.0.6.1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
caerr.h
1 /*************************************************************************\
2 * Copyright (c) 2002 The University of Chicago, as Operator of Argonne
3 * National Laboratory.
4 * Copyright (c) 2002 The Regents of the University of California, as
5 * Operator of Los Alamos National Laboratory.
6 * SPDX-License-Identifier: EPICS
7 * EPICS BASE is distributed subject to a Software License Agreement found
8 * in file LICENSE that is included with this distribution.
9 \*************************************************************************/
10 /*
11  *
12  * L O S A L A M O S
13  * Los Alamos National Laboratory
14  * Los Alamos, New Mexico 87545
15  *
16  * Copyright, 1986, The Regents of the University of California.
17  *
18  * Author: Jeffrey O. Hill
19  *
20  */
21 
22 
23 #ifndef INC_caerr_H
24 #define INC_caerr_H
25 
26 #include "epicsTypes.h"
27 
28 #include "libCaAPI.h"
29 
30 /* CA Status Code Definitions */
31 
32 #define CA_K_INFO 3 /* successful */
33 #define CA_K_ERROR 2 /* failed- continue */
34 #define CA_K_SUCCESS 1 /* successful */
35 #define CA_K_WARNING 0 /* unsuccessful */
36 #define CA_K_SEVERE 4 /* failed- quit */
37 #define CA_K_FATAL CA_K_ERROR | CA_K_SEVERE
38 
39 #define CA_M_MSG_NO 0x0000FFF8
40 #define CA_M_SEVERITY 0x00000007
41 #define CA_M_LEVEL 0x00000003
42 #define CA_M_SUCCESS 0x00000001
43 #define CA_M_ERROR 0x00000002
44 #define CA_M_SEVERE 0x00000004
45 
46 #define CA_S_MSG_NO 0x0D
47 #define CA_S_SEVERITY 0x03
48 
49 #define CA_V_MSG_NO 0x03
50 #define CA_V_SEVERITY 0x00
51 #define CA_V_SUCCESS 0x00
52 
53 /* Define MACROS to extract/insert individual fields from a status value */
54 
55 #define CA_EXTRACT_MSG_NO(code)\
56 ( ( (code) & CA_M_MSG_NO ) >> CA_V_MSG_NO )
57 #define CA_EXTRACT_SEVERITY(code)\
58 ( ( (code) & CA_M_SEVERITY ) >> CA_V_SEVERITY )
59 #define CA_EXTRACT_SUCCESS(code)\
60 ( ( (code) & CA_M_SUCCESS ) >> CA_V_SUCCESS )
61 
62 #define CA_INSERT_MSG_NO(code)\
63 ( ((code)<< CA_V_MSG_NO) & CA_M_MSG_NO )
64 #define CA_INSERT_SEVERITY(code)\
65 ( ((code)<< CA_V_SEVERITY)& CA_M_SEVERITY )
66 #define CA_INSERT_SUCCESS(code)\
67 ( ((code)<< CA_V_SUCCESS) & CA_M_SUCCESS )
68 
69 #define DEFMSG(SEVERITY,NUMBER)\
70 (CA_INSERT_MSG_NO(NUMBER) | CA_INSERT_SEVERITY(SEVERITY))
71 
72 /*
73  * In the lines below "defunct" indicates that current release
74  * servers and client library will not return this error code, but
75  * servers on earlier releases that communicate with current clients
76  * might still generate exceptions with these error constants
77  */
78 #define ECA_NORMAL DEFMSG(CA_K_SUCCESS, 0) /* success */
79 #define ECA_MAXIOC DEFMSG(CA_K_ERROR, 1) /* defunct */
80 #define ECA_UKNHOST DEFMSG(CA_K_ERROR, 2) /* defunct */
81 #define ECA_UKNSERV DEFMSG(CA_K_ERROR, 3) /* defunct */
82 #define ECA_SOCK DEFMSG(CA_K_ERROR, 4) /* defunct */
83 #define ECA_CONN DEFMSG(CA_K_WARNING, 5) /* defunct */
84 #define ECA_ALLOCMEM DEFMSG(CA_K_WARNING, 6)
85 #define ECA_UKNCHAN DEFMSG(CA_K_WARNING, 7) /* defunct */
86 #define ECA_UKNFIELD DEFMSG(CA_K_WARNING, 8) /* defunct */
87 #define ECA_TOLARGE DEFMSG(CA_K_WARNING, 9)
88 #define ECA_TIMEOUT DEFMSG(CA_K_WARNING, 10)
89 #define ECA_NOSUPPORT DEFMSG(CA_K_WARNING, 11) /* defunct */
90 #define ECA_STRTOBIG DEFMSG(CA_K_WARNING, 12) /* defunct */
91 #define ECA_DISCONNCHID DEFMSG(CA_K_ERROR, 13) /* defunct */
92 #define ECA_BADTYPE DEFMSG(CA_K_ERROR, 14)
93 #define ECA_CHIDNOTFND DEFMSG(CA_K_INFO, 15) /* defunct */
94 #define ECA_CHIDRETRY DEFMSG(CA_K_INFO, 16) /* defunct */
95 #define ECA_INTERNAL DEFMSG(CA_K_FATAL, 17)
96 #define ECA_DBLCLFAIL DEFMSG(CA_K_WARNING, 18) /* defunct */
97 #define ECA_GETFAIL DEFMSG(CA_K_WARNING, 19)
98 #define ECA_PUTFAIL DEFMSG(CA_K_WARNING, 20)
99 #define ECA_ADDFAIL DEFMSG(CA_K_WARNING, 21) /* defunct */
100 #define ECA_BADCOUNT DEFMSG(CA_K_WARNING, 22)
101 #define ECA_BADSTR DEFMSG(CA_K_ERROR, 23)
102 #define ECA_DISCONN DEFMSG(CA_K_WARNING, 24)
103 #define ECA_DBLCHNL DEFMSG(CA_K_WARNING, 25)
104 #define ECA_EVDISALLOW DEFMSG(CA_K_ERROR, 26)
105 #define ECA_BUILDGET DEFMSG(CA_K_WARNING, 27) /* defunct */
106 #define ECA_NEEDSFP DEFMSG(CA_K_WARNING, 28) /* defunct */
107 #define ECA_OVEVFAIL DEFMSG(CA_K_WARNING, 29) /* defunct */
108 #define ECA_BADMONID DEFMSG(CA_K_ERROR, 30)
109 #define ECA_NEWADDR DEFMSG(CA_K_WARNING, 31) /* defunct */
110 #define ECA_NEWCONN DEFMSG(CA_K_INFO, 32) /* defunct */
111 #define ECA_NOCACTX DEFMSG(CA_K_WARNING, 33) /* defunct */
112 #define ECA_DEFUNCT DEFMSG(CA_K_FATAL, 34) /* defunct */
113 #define ECA_EMPTYSTR DEFMSG(CA_K_WARNING, 35) /* defunct */
114 #define ECA_NOREPEATER DEFMSG(CA_K_WARNING, 36) /* defunct */
115 #define ECA_NOCHANMSG DEFMSG(CA_K_WARNING, 37) /* defunct */
116 #define ECA_DLCKREST DEFMSG(CA_K_WARNING, 38) /* defunct */
117 #define ECA_SERVBEHIND DEFMSG(CA_K_WARNING, 39) /* defunct */
118 #define ECA_NOCAST DEFMSG(CA_K_WARNING, 40) /* defunct */
119 #define ECA_BADMASK DEFMSG(CA_K_ERROR, 41)
120 #define ECA_IODONE DEFMSG(CA_K_INFO, 42)
121 #define ECA_IOINPROGRESS DEFMSG(CA_K_INFO, 43)
122 #define ECA_BADSYNCGRP DEFMSG(CA_K_ERROR, 44)
123 #define ECA_PUTCBINPROG DEFMSG(CA_K_ERROR, 45)
124 #define ECA_NORDACCESS DEFMSG(CA_K_WARNING, 46)
125 #define ECA_NOWTACCESS DEFMSG(CA_K_WARNING, 47)
126 #define ECA_ANACHRONISM DEFMSG(CA_K_ERROR, 48)
127 #define ECA_NOSEARCHADDR DEFMSG(CA_K_WARNING, 49)
128 #define ECA_NOCONVERT DEFMSG(CA_K_WARNING, 50)
129 #define ECA_BADCHID DEFMSG(CA_K_ERROR, 51)
130 #define ECA_BADFUNCPTR DEFMSG(CA_K_ERROR, 52)
131 #define ECA_ISATTACHED DEFMSG(CA_K_WARNING, 53)
132 #define ECA_UNAVAILINSERV DEFMSG(CA_K_WARNING, 54)
133 #define ECA_CHANDESTROY DEFMSG(CA_K_WARNING, 55)
134 #define ECA_BADPRIORITY DEFMSG(CA_K_ERROR, 56)
135 #define ECA_NOTTHREADED DEFMSG(CA_K_ERROR, 57)
136 #define ECA_16KARRAYCLIENT DEFMSG(CA_K_WARNING, 58)
137 #define ECA_CONNSEQTMO DEFMSG(CA_K_WARNING, 59)
138 #define ECA_UNRESPTMO DEFMSG(CA_K_WARNING, 60)
139 
140 #ifdef __cplusplus
141 extern "C" {
142 #endif
143 
144 LIBCA_API const char * epicsStdCall ca_message(long ca_status);
145 
146 LIBCA_API extern const char * ca_message_text [];
147 
148 #ifdef __cplusplus
149 }
150 #endif
151 
152 #endif
The core data types used by epics.