224 lines
9.3 KiB
C
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
|