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.