31 #ifndef CA_DONT_INCLUDE_STDARGH
39 #include "db_access.h"
40 #include "caeventmask.h"
46 typedef struct oldChannelNotify *chid;
49 typedef struct oldSubscription *evid;
50 typedef double ca_real;
60 typedef struct ca_access_rights {
61 unsigned read_access:1;
62 unsigned write_access:1;
74 #define VALID_TYPE(TYPE) (((unsigned short)TYPE)<=LAST_BUFFER_TYPE)
85 typedef struct event_handler_args {
93 typedef void caEventCallBackFunc (
struct event_handler_args);
95 LIBCA_API
void epicsStdCall ca_test_event
97 struct event_handler_args
114 typedef unsigned CA_SYNC_GID;
121 #define CA_OP_CREATE_CHANNEL 2
122 #define CA_OP_ADD_EVENT 3
123 #define CA_OP_CLEAR_EVENT 4
124 #define CA_OP_OTHER 5
129 #define CA_OP_CONN_UP 6
130 #define CA_OP_CONN_DOWN 7
133 #define CA_OP_SEARCH 2
138 #define SEVCHK(CA_ERROR_CODE, MESSAGE_STRING) \
140 int ca_unique_status_name = (CA_ERROR_CODE); \
141 if(!(ca_unique_status_name & CA_M_SUCCESS)) \
142 ca_signal_with_file_and_lineno( \
143 ca_unique_status_name, \
150 #define TYPENOTCONN (-1)
151 LIBCA_API
short epicsStdCall ca_field_type (chid chan);
152 LIBCA_API
unsigned long epicsStdCall ca_element_count (chid chan);
153 LIBCA_API
const char * epicsStdCall ca_name (chid chan);
154 LIBCA_API
void epicsStdCall ca_set_puser (chid chan,
void *puser);
155 LIBCA_API
void * epicsStdCall ca_puser (chid chan);
156 LIBCA_API
unsigned epicsStdCall ca_read_access (chid chan);
157 LIBCA_API
unsigned epicsStdCall ca_write_access (chid chan);
167 enum channel_state {cs_never_conn, cs_prev_conn, cs_conn, cs_closed};
168 LIBCA_API
enum channel_state epicsStdCall ca_state (chid chan);
175 LIBCA_API
int epicsStdCall ca_task_initialize (
void);
176 enum ca_preemptive_callback_select
177 { ca_disable_preemptive_callback, ca_enable_preemptive_callback };
178 LIBCA_API
int epicsStdCall
179 ca_context_create (
enum ca_preemptive_callback_select select);
180 LIBCA_API
void epicsStdCall ca_detach_context ();
187 LIBCA_API
int epicsStdCall ca_task_exit (
void);
188 LIBCA_API
void epicsStdCall ca_context_destroy (
void);
190 typedef unsigned capri;
191 #define CA_PRIORITY_MAX 99
192 #define CA_PRIORITY_MIN 0
193 #define CA_PRIORITY_DEFAULT CA_PRIORITY_MIN
195 #define CA_PRIORITY_DB_LINKS 80
196 #define CA_PRIORITY_ARCHIVE 20
197 #define CA_PRIORITY_OPI 0
211 LIBCA_API
int epicsStdCall ca_create_channel
213 const char *pChanName,
214 caCh *pConnStateCallback,
226 LIBCA_API
int epicsStdCall ca_change_connection_event
238 LIBCA_API
int epicsStdCall ca_replace_access_rights_event (
253 LIBCA_API
int epicsStdCall ca_add_exception_event
255 caExceptionHandler *pfunc,
265 LIBCA_API
int epicsStdCall ca_clear_channel
282 #define ca_bput(chan, pValue) \
283 ca_array_put(DBR_STRING, 1u, chan, (const dbr_string_t *) (pValue))
293 #define ca_rput(chan,pValue) \
294 ca_array_put(DBR_FLOAT, 1u, chan, (const dbr_float_t *) pValue)
303 #define ca_put(type, chan, pValue) ca_array_put (type, 1u, chan, pValue)
313 LIBCA_API
int epicsStdCall ca_array_put
338 LIBCA_API
int epicsStdCall ca_array_put_callback
344 caEventCallBackFunc * pFunc,
348 #define ca_put_callback(type, chan, pValue, pFunc, pArg) \
349 ca_array_put_callback(type, 1u, chan, pValue, pFunc, pArg)
364 #define ca_bget(chan, pValue) \
365 ca_array_get(DBR_STRING, 1u, chan, (dbr_string_t *)(pValue))
375 #define ca_rget(chan, pValue) \
376 ca_array_get(DBR_FLOAT, 1u, chan, (dbr_float_t *)(pValue))
385 #define ca_get(type, chan, pValue) ca_array_get(type, 1u, chan, pValue)
395 LIBCA_API
int epicsStdCall ca_array_get
419 #define ca_bget_callback(chan, pFunc, pArg)\
420 ca_array_get_callback (DBR_STRING, 1u, chan, pFunc, pArg)
431 #define ca_rget_callback(chan, pFunc, pArg)\
432 ca_array_get_callback (DBR_FLOAT, 1u, chan, pFunc, pArg)
442 #define ca_get_callback(type, chan, pFunc, pArg)\
443 ca_array_get_callback (type, 1u, chan, pFunc, pArg)
454 LIBCA_API
int epicsStdCall ca_array_get_callback
459 caEventCallBackFunc * pFunc,
484 LIBCA_API
int epicsStdCall ca_create_subscription
490 caEventCallBackFunc * pFunc,
505 LIBCA_API
int epicsStdCall ca_clear_subscription
510 LIBCA_API chid epicsStdCall ca_evid_to_chid ( evid
id );
564 LIBCA_API
int epicsStdCall ca_pend_event (ca_real timeOut);
565 #define ca_poll() ca_pend_event(1e-12)
574 LIBCA_API
int epicsStdCall ca_pend_io (ca_real timeOut);
577 LIBCA_API
int epicsStdCall ca_pend (ca_real timeout,
int early);
585 LIBCA_API
int epicsStdCall ca_test_io (
void);
593 LIBCA_API
int epicsStdCall ca_flush_io (
void);
602 LIBCA_API
void epicsStdCall ca_signal
616 LIBCA_API
void epicsStdCall ca_signal_with_file_and_lineno
620 const char *pFileStr,
632 LIBCA_API
void epicsStdCall ca_signal_formated (
long ca_status,
const char *pfilenm,
633 int lineno,
const char *pFormat, ...);
642 LIBCA_API
const char * epicsStdCall ca_host_name (chid channel);
644 LIBCA_API
unsigned epicsStdCall ca_get_host_name ( chid pChan,
645 char *pBuf,
unsigned bufLength );
658 typedef void CAFDHANDLER (
void *parg,
int fd,
int opened);
667 LIBCA_API
int epicsStdCall ca_add_fd_registration
669 CAFDHANDLER *pHandler,
691 LIBCA_API
int epicsStdCall ca_sg_create (CA_SYNC_GID * pgid);
700 LIBCA_API
int epicsStdCall ca_sg_delete (
const CA_SYNC_GID gid);
711 LIBCA_API
int epicsStdCall ca_sg_block (
const CA_SYNC_GID gid, ca_real timeout);
722 LIBCA_API
int epicsStdCall ca_sg_test (
const CA_SYNC_GID gid);
729 LIBCA_API
int epicsStdCall ca_sg_reset(
const CA_SYNC_GID gid);
743 LIBCA_API
int epicsStdCall ca_sg_array_get
745 const CA_SYNC_GID gid,
752 #define ca_sg_get(gid, type, chan, pValue) \
753 ca_sg_array_get (gid, type, 1u, chan, pValue)
767 LIBCA_API
int epicsStdCall ca_sg_array_put
769 const CA_SYNC_GID gid,
776 #define ca_sg_put(gid, type, chan, pValue) \
777 ca_sg_array_put (gid, type, 1u, chan, pValue)
786 LIBCA_API
int epicsStdCall ca_sg_stat (CA_SYNC_GID gid);
788 LIBCA_API
void epicsStdCall ca_dump_dbr (chtype type,
unsigned count,
const void * pbuffer);
801 LIBCA_API
int epicsStdCall ca_v42_ok (chid chan);
808 LIBCA_API
const char * epicsStdCall ca_version (
void);
821 #ifndef CA_DONT_INCLUDE_STDARGH
822 typedef int caPrintfFunc (
const char *pformat, va_list args);
823 LIBCA_API
int epicsStdCall ca_replace_printf_handler (
824 caPrintfFunc *ca_printf_func
831 LIBCA_API
unsigned epicsStdCall ca_get_ioc_connection_count (
void);
832 LIBCA_API
int epicsStdCall ca_preemtive_callback_is_enabled (
void);
833 LIBCA_API
void epicsStdCall ca_self_test (
void);
834 LIBCA_API
unsigned epicsStdCall ca_beacon_anomaly_count (
void);
835 LIBCA_API
unsigned epicsStdCall ca_search_attempts (chid chan);
836 LIBCA_API
double epicsStdCall ca_beacon_period (chid chan);
837 LIBCA_API
double epicsStdCall ca_receive_watchdog_delay (chid chan);
843 LIBCA_API
struct ca_client_context * epicsStdCall ca_current_context ();
844 LIBCA_API
int epicsStdCall ca_attach_context (
struct ca_client_context * context );
847 LIBCA_API
int epicsStdCall ca_client_status (
unsigned level );
848 LIBCA_API
int epicsStdCall ca_context_status (
struct ca_client_context *,
unsigned level );
853 #define ca_build_channel(NAME,XXXXX,CHIDPTR,YYYYY)\
854 ca_build_and_connect(NAME, XXXXX, 1, CHIDPTR, YYYYY, 0, 0)
855 #define ca_array_build(NAME,XXXXX, ZZZZZZ, CHIDPTR,YYYYY)\
856 ca_build_and_connect(NAME, XXXXX, ZZZZZZ, CHIDPTR, YYYYY, 0, 0)
857 LIBCA_API
int epicsStdCall ca_build_and_connect
858 (
const char *pChanName, chtype,
unsigned long,
859 chid * pChanID,
void *, caCh * pFunc,
void * pArg );
860 #define ca_search(pChanName, pChanID)\
861 ca_search_and_connect (pChanName, pChanID, 0, 0)
862 LIBCA_API
int epicsStdCall ca_search_and_connect
863 (
const char * pChanName, chid * pChanID,
864 caCh *pFunc,
void * pArg );
865 LIBCA_API
int epicsStdCall ca_channel_status (epicsThreadId tid);
866 LIBCA_API
int epicsStdCall ca_clear_event ( evid eventID );
867 #define ca_add_event(type,chan,pFunc,pArg,pEventID)\
868 ca_add_array_event(type,1u,chan,pFunc,pArg,0.0,0.0,0.0,pEventID)
869 #define ca_add_delta_event(TYPE,CHID,ENTRY,ARG,DELTA,EVID)\
870 ca_add_array_event(TYPE,1,CHID,ENTRY,ARG,DELTA,DELTA,0.0,EVID)
871 #define ca_add_general_event(TYPE,CHID,ENTRY,ARG,P_DELTA,N_DELTA,TO,EVID)\
872 ca_add_array_event(TYPE,1,CHID,ENTRY,ARG,P_DELTA,N_DELTA,TO,EVID)
873 #define ca_add_array_event(TYPE,COUNT,CHID,ENTRY,ARG,P_DELTA,N_DELTA,TO,EVID)\
874 ca_add_masked_array_event(TYPE,COUNT,CHID,ENTRY,ARG,P_DELTA,N_DELTA,TO,EVID, DBE_VALUE | DBE_ALARM)
875 LIBCA_API
int epicsStdCall ca_add_masked_array_event
876 ( chtype type,
unsigned long count, chid chanId, caEventCallBackFunc * pFunc,
877 void * pArg, ca_real p_delta, ca_real n_delta, ca_real timeout,
878 evid * pEventID,
long mask );
883 LIBCA_API
int epicsStdCall ca_modify_user_name (
const char *pUserName );
884 LIBCA_API
int epicsStdCall ca_modify_host_name (
const char *pHostName );
C++ and C descriptions for a thread.