Files
epics-base/modules/ca/src/client/caerr.h
2026-01-06 09:51:04 +01:00

224 lines
9.3 KiB
C

/*************************************************************************\
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* SPDX-License-Identifier: EPICS
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
/*
*
* L O S A L A M O S
* Los Alamos National Laboratory
* Los Alamos, New Mexico 87545
*
* Copyright, 1986, The Regents of the University of California.
*
* Author: Jeffrey O. Hill
*
*/
/** \file caerr.h
*
* \brief Channel access error definitions.
*/
#ifndef INC_caerr_H
#define INC_caerr_H
#include "epicsTypes.h"
#include "libCaAPI.h"
/* CA Status Code Definitions */
#define CA_K_INFO 3 /* successful */
#define CA_K_ERROR 2 /* failed- continue */
#define CA_K_SUCCESS 1 /* successful */
#define CA_K_WARNING 0 /* unsuccessful */
#define CA_K_SEVERE 4 /* failed- quit */
#define CA_K_FATAL CA_K_ERROR | CA_K_SEVERE
#define CA_M_MSG_NO 0x0000FFF8
#define CA_M_SEVERITY 0x00000007
#define CA_M_LEVEL 0x00000003
#define CA_M_SUCCESS 0x00000001
#define CA_M_ERROR 0x00000002
#define CA_M_SEVERE 0x00000004
#define CA_S_MSG_NO 0x0D
#define CA_S_SEVERITY 0x03
#define CA_V_MSG_NO 0x03
#define CA_V_SEVERITY 0x00
#define CA_V_SUCCESS 0x00
/* Define MACROS to extract/insert individual fields from a status value */
#define CA_EXTRACT_MSG_NO(code)\
( ( (code) & CA_M_MSG_NO ) >> CA_V_MSG_NO )
#define CA_EXTRACT_SEVERITY(code)\
( ( (code) & CA_M_SEVERITY ) >> CA_V_SEVERITY )
#define CA_EXTRACT_SUCCESS(code)\
( ( (code) & CA_M_SUCCESS ) >> CA_V_SUCCESS )
#define CA_INSERT_MSG_NO(code)\
( ((code)<< CA_V_MSG_NO) & CA_M_MSG_NO )
#define CA_INSERT_SEVERITY(code)\
( ((code)<< CA_V_SEVERITY)& CA_M_SEVERITY )
#define CA_INSERT_SUCCESS(code)\
( ((code)<< CA_V_SUCCESS) & CA_M_SUCCESS )
#define DEFMSG(SEVERITY,NUMBER)\
(CA_INSERT_MSG_NO(NUMBER) | CA_INSERT_SEVERITY(SEVERITY))
/*
* In the lines below "defunct" indicates that current release
* servers and client library will not return this error code, but
* servers on earlier releases that communicate with current clients
* might still generate exceptions with these error constants
*/
/// Normal successful completion
#define ECA_NORMAL DEFMSG(CA_K_SUCCESS, 0) /* success */
/// Maximum simultaneous IOC connections exceeded
#define ECA_MAXIOC DEFMSG(CA_K_ERROR, 1) /* defunct */
/// Unknown internet host
#define ECA_UKNHOST DEFMSG(CA_K_ERROR, 2) /* defunct */
/// Unknown internet service
#define ECA_UKNSERV DEFMSG(CA_K_ERROR, 3) /* defunct */
/// Unable to allocate a new socket
#define ECA_SOCK DEFMSG(CA_K_ERROR, 4) /* defunct */
/// Unable to connect to internet host or service
#define ECA_CONN DEFMSG(CA_K_WARNING, 5) /* defunct */
/// Unable to allocate additional dynamic memory
#define ECA_ALLOCMEM DEFMSG(CA_K_WARNING, 6)
/// Unknown IO channel
#define ECA_UKNCHAN DEFMSG(CA_K_WARNING, 7) /* defunct */
/// ECA_UKNFIELD - Record field specified inappropriate for channel specified
#define ECA_UKNFIELD DEFMSG(CA_K_WARNING, 8) /* defunct */
/// The requested data transfer is greater than available memory or EPICS_CA_MAX_ARRAY_BYTES
#define ECA_TOLARGE DEFMSG(CA_K_WARNING, 9)
/// User specified timeout on IO operation expired
#define ECA_TIMEOUT DEFMSG(CA_K_WARNING, 10)
/// Sorry, that feature is planned but not supported at this time
#define ECA_NOSUPPORT DEFMSG(CA_K_WARNING, 11) /* defunct */
/// The supplied string is unusually large
#define ECA_STRTOBIG DEFMSG(CA_K_WARNING, 12) /* defunct */
/// The request was ignored because the specified channel is disconnected
#define ECA_DISCONNCHID DEFMSG(CA_K_ERROR, 13) /* defunct */
/// The data type specified is invalid
#define ECA_BADTYPE DEFMSG(CA_K_ERROR, 14)
/// Remote Channel not found
#define ECA_CHIDNOTFND DEFMSG(CA_K_INFO, 15) /* defunct */
/// Unable to locate all user specified channels
#define ECA_CHIDRETRY DEFMSG(CA_K_INFO, 16) /* defunct */
/// Channel Access Internal Failure
#define ECA_INTERNAL DEFMSG(CA_K_FATAL, 17)
/// The requested local DB operation failed
#define ECA_DBLCLFAIL DEFMSG(CA_K_WARNING, 18) /* defunct */
/// Channel read request failed
#define ECA_GETFAIL DEFMSG(CA_K_WARNING, 19)
/// Channel write request failed
#define ECA_PUTFAIL DEFMSG(CA_K_WARNING, 20)
/// Channel subscription request failed
#define ECA_ADDFAIL DEFMSG(CA_K_WARNING, 21) /* defunct */
/// Invalid element count requested
#define ECA_BADCOUNT DEFMSG(CA_K_WARNING, 22)
/// Invalid string
#define ECA_BADSTR DEFMSG(CA_K_ERROR, 23)
/// Virtual circuit disconnect
#define ECA_DISCONN DEFMSG(CA_K_WARNING, 24)
/// Identical process variable names on multiple servers
#define ECA_DBLCHNL DEFMSG(CA_K_WARNING, 25)
/// Request inappropriate within subscription (monitor) update callback
#define ECA_EVDISALLOW DEFMSG(CA_K_ERROR, 26)
/// Database value get for that channel failed during channel search
#define ECA_BUILDGET DEFMSG(CA_K_WARNING, 27) /* defunct */
/// Unable to initialize without the vxWorks VX_FP_TASK task option set
#define ECA_NEEDSFP DEFMSG(CA_K_WARNING, 28) /* defunct */
/// Event queue overflow has prevented first pass event after event add
#define ECA_OVEVFAIL DEFMSG(CA_K_WARNING, 29) /* defunct */
/// Bad event subscription (monitor) identifier
#define ECA_BADMONID DEFMSG(CA_K_ERROR, 30)
/// Remote channel has new network address
#define ECA_NEWADDR DEFMSG(CA_K_WARNING, 31) /* defunct */
/// New or resumed network connection
#define ECA_NEWCONN DEFMSG(CA_K_INFO, 32) /* defunct */
/// Specified task isn't a member of a CA context
#define ECA_NOCACTX DEFMSG(CA_K_WARNING, 33) /* defunct */
/// Attempt to use defunct CA feature failed
#define ECA_DEFUNCT DEFMSG(CA_K_FATAL, 34) /* defunct */
/// The supplied string is empty
#define ECA_EMPTYSTR DEFMSG(CA_K_WARNING, 35) /* defunct */
/// Unable to spawn the CA repeater thread- auto reconnect will fail
#define ECA_NOREPEATER DEFMSG(CA_K_WARNING, 36) /* defunct */
/// No channel id match for search reply- search reply ignored
#define ECA_NOCHANMSG DEFMSG(CA_K_WARNING, 37) /* defunct */
/// Resetting dead connection- will try to reconnect
#define ECA_DLCKREST DEFMSG(CA_K_WARNING, 38) /* defunct */
/// Server (IOC) has fallen behind or is not responding- still waiting
#define ECA_SERVBEHIND DEFMSG(CA_K_WARNING, 39) /* defunct */
/// No internet interface with broadcast available
#define ECA_NOCAST DEFMSG(CA_K_WARNING, 40) /* defunct */
/// Invalid event selection mask
#define ECA_BADMASK DEFMSG(CA_K_ERROR, 41)
/// IO operations have completed
#define ECA_IODONE DEFMSG(CA_K_INFO, 42)
/// IO operations are in progress
#define ECA_IOINPROGRESS DEFMSG(CA_K_INFO, 43)
/// Invalid synchronous group identifier
#define ECA_BADSYNCGRP DEFMSG(CA_K_ERROR, 44)
/// Put callback timed out
#define ECA_PUTCBINPROG DEFMSG(CA_K_ERROR, 45)
/// Read access denied
#define ECA_NORDACCESS DEFMSG(CA_K_WARNING, 46)
/// Write access denied
#define ECA_NOWTACCESS DEFMSG(CA_K_WARNING, 47)
/// Requested feature is no longer supported
#define ECA_ANACHRONISM DEFMSG(CA_K_ERROR, 48)
/// Empty PV search address list
#define ECA_NOSEARCHADDR DEFMSG(CA_K_WARNING, 49)
/// No reasonable data conversion between client and server types
#define ECA_NOCONVERT DEFMSG(CA_K_WARNING, 50)
/// Invalid channel identifier
#define ECA_BADCHID DEFMSG(CA_K_ERROR, 51)
/// Invalid function pointer
#define ECA_BADFUNCPTR DEFMSG(CA_K_ERROR, 52)
/// Thread is already attached to a client context
#define ECA_ISATTACHED DEFMSG(CA_K_WARNING, 53)
/// Not supported by attached service
#define ECA_UNAVAILINSERV DEFMSG(CA_K_WARNING, 54)
/// User destroyed channel
#define ECA_CHANDESTROY DEFMSG(CA_K_WARNING, 55)
/// Invalid channel priority
#define ECA_BADPRIORITY DEFMSG(CA_K_ERROR, 56)
/// Preemptive callback not enabled - additional threads may not join context
#define ECA_NOTTHREADED DEFMSG(CA_K_ERROR, 57)
/// Client's protocol revision does not support transfers exceeding 16k bytes
#define ECA_16KARRAYCLIENT DEFMSG(CA_K_WARNING, 58)
/// Virtual circuit connection sequence aborted
#define ECA_CONNSEQTMO DEFMSG(CA_K_WARNING, 59)
/// Virtual circuit unresponsive
#define ECA_UNRESPTMO DEFMSG(CA_K_WARNING, 60)
#ifdef __cplusplus
extern "C" {
#endif
/** \brief Return a message character string corresponding to a user specified CA status code.
*
* \param[in] ca_status A CA status code.
* \returns The corresponding error message string.
*/
LIBCA_API const char * epicsStdCall ca_message(long ca_status);
LIBCA_API extern const char * ca_message_text [];
#ifdef __cplusplus
}
#endif
#endif