31#ifndef CA_DONT_INCLUDE_STDARGH
40#include "caeventmask.h"
46typedef struct oldChannelNotify *chid;
49typedef struct oldSubscription *evid;
50typedef double ca_real;
60typedef 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)
85typedef struct event_handler_args {
93typedef void caEventCallBackFunc (
struct event_handler_args);
95LIBCA_API
void epicsStdCall ca_test_event
97 struct event_handler_args
114typedef 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
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)
151LIBCA_API
short epicsStdCall ca_field_type (chid chan);
152LIBCA_API
unsigned long epicsStdCall ca_element_count (chid chan);
153LIBCA_API
const char * epicsStdCall ca_name (chid chan);
154LIBCA_API
void epicsStdCall ca_set_puser (chid chan,
void *puser);
155LIBCA_API
void * epicsStdCall ca_puser (chid chan);
156LIBCA_API
unsigned epicsStdCall ca_read_access (chid chan);
157LIBCA_API
unsigned epicsStdCall ca_write_access (chid chan);
167enum channel_state {cs_never_conn, cs_prev_conn, cs_conn, cs_closed};
168LIBCA_API
enum channel_state epicsStdCall ca_state (chid chan);
175LIBCA_API
int epicsStdCall ca_task_initialize (
void);
176enum ca_preemptive_callback_select
177{ ca_disable_preemptive_callback, ca_enable_preemptive_callback };
178LIBCA_API
int epicsStdCall
179 ca_context_create (
enum ca_preemptive_callback_select select);
180LIBCA_API
void epicsStdCall ca_detach_context ();
187LIBCA_API
int epicsStdCall ca_task_exit (
void);
188LIBCA_API
void epicsStdCall ca_context_destroy (
void);
190typedef 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
211LIBCA_API
int epicsStdCall ca_create_channel
213 const char *pChanName,
214 caCh *pConnStateCallback,
226LIBCA_API
int epicsStdCall ca_change_connection_event
238LIBCA_API
int epicsStdCall ca_replace_access_rights_event (
253LIBCA_API
int epicsStdCall ca_add_exception_event
255 caExceptionHandler *pfunc,
265LIBCA_API
int epicsStdCall ca_clear_channel
282#define ca_bput(chan, pValue) \
283ca_array_put(DBR_STRING, 1u, chan, (const dbr_string_t *) (pValue))
293#define ca_rput(chan,pValue) \
294ca_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)
313LIBCA_API
int epicsStdCall ca_array_put
338LIBCA_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) \
365ca_array_get(DBR_STRING, 1u, chan, (dbr_string_t *)(pValue))
375#define ca_rget(chan, pValue) \
376ca_array_get(DBR_FLOAT, 1u, chan, (dbr_float_t *)(pValue))
385#define ca_get(type, chan, pValue) ca_array_get(type, 1u, chan, pValue)
395LIBCA_API
int epicsStdCall ca_array_get
419#define ca_bget_callback(chan, pFunc, pArg)\
420ca_array_get_callback (DBR_STRING, 1u, chan, pFunc, pArg)
431#define ca_rget_callback(chan, pFunc, pArg)\
432ca_array_get_callback (DBR_FLOAT, 1u, chan, pFunc, pArg)
442#define ca_get_callback(type, chan, pFunc, pArg)\
443ca_array_get_callback (type, 1u, chan, pFunc, pArg)
454LIBCA_API
int epicsStdCall ca_array_get_callback
459 caEventCallBackFunc * pFunc,
484LIBCA_API
int epicsStdCall ca_create_subscription
490 caEventCallBackFunc * pFunc,
505LIBCA_API
int epicsStdCall ca_clear_subscription
510LIBCA_API chid epicsStdCall ca_evid_to_chid ( evid
id );
564LIBCA_API
int epicsStdCall ca_pend_event (ca_real timeout);
565#define ca_poll() ca_pend_event(1e-12)
574LIBCA_API
int epicsStdCall ca_pend_io (ca_real timeout);
577LIBCA_API
int epicsStdCall ca_pend (ca_real timeout,
int early);
585LIBCA_API
int epicsStdCall ca_test_io (
void);
593LIBCA_API
int epicsStdCall ca_flush_io (
void);
602LIBCA_API
void epicsStdCall ca_signal
616LIBCA_API
void epicsStdCall ca_signal_with_file_and_lineno
620 const char *pFileStr,
632LIBCA_API
void epicsStdCall ca_signal_formated (
long ca_status,
const char *pfilenm,
633 int lineno,
const char *pFormat, ...);
642LIBCA_API
const char * epicsStdCall ca_host_name (chid channel);
644LIBCA_API
unsigned epicsStdCall ca_get_host_name ( chid pChan,
645 char *pBuf,
unsigned bufLength );
658typedef void CAFDHANDLER (
void *parg,
int fd,
int opened);
667LIBCA_API
int epicsStdCall ca_add_fd_registration
669 CAFDHANDLER *pHandler,
691LIBCA_API
int epicsStdCall ca_sg_create (CA_SYNC_GID * pgid);
700LIBCA_API
int epicsStdCall ca_sg_delete (
const CA_SYNC_GID gid);
711LIBCA_API
int epicsStdCall ca_sg_block (
const CA_SYNC_GID gid, ca_real timeout);
722LIBCA_API
int epicsStdCall ca_sg_test (
const CA_SYNC_GID gid);
729LIBCA_API
int epicsStdCall ca_sg_reset(
const CA_SYNC_GID gid);
743LIBCA_API
int epicsStdCall ca_sg_array_get
745 const CA_SYNC_GID gid,
752#define ca_sg_get(gid, type, chan, pValue) \
753ca_sg_array_get (gid, type, 1u, chan, pValue)
767LIBCA_API
int epicsStdCall ca_sg_array_put
769 const CA_SYNC_GID gid,
776#define ca_sg_put(gid, type, chan, pValue) \
777ca_sg_array_put (gid, type, 1u, chan, pValue)
786LIBCA_API
int epicsStdCall ca_sg_stat (CA_SYNC_GID gid);
788LIBCA_API
void epicsStdCall ca_dump_dbr (chtype type,
unsigned count,
const void * pbuffer);
801LIBCA_API
int epicsStdCall ca_v42_ok (chid chan);
808LIBCA_API
const char * epicsStdCall ca_version (
void);
821#ifndef CA_DONT_INCLUDE_STDARGH
822typedef int caPrintfFunc (
const char *pformat, va_list args);
823LIBCA_API
int epicsStdCall ca_replace_printf_handler (
824 caPrintfFunc *ca_printf_func
831LIBCA_API
unsigned epicsStdCall ca_get_ioc_connection_count (
void);
832LIBCA_API
int epicsStdCall ca_preemtive_callback_is_enabled (
void);
833LIBCA_API
void epicsStdCall ca_self_test (
void);
834LIBCA_API
unsigned epicsStdCall ca_beacon_anomaly_count (
void);
835LIBCA_API
unsigned epicsStdCall ca_search_attempts (chid chan);
836LIBCA_API
double epicsStdCall ca_beacon_period (chid chan);
837LIBCA_API
double epicsStdCall ca_receive_watchdog_delay (chid chan);
843LIBCA_API
struct ca_client_context * epicsStdCall ca_current_context ();
844LIBCA_API
int epicsStdCall ca_attach_context (
struct ca_client_context * context );
847LIBCA_API
int epicsStdCall ca_client_status (
unsigned level );
848LIBCA_API
int epicsStdCall ca_context_status (
struct ca_client_context *,
unsigned level );
853#define ca_build_channel(NAME,XXXXX,CHIDPTR,YYYYY)\
854ca_build_and_connect(NAME, XXXXX, 1, CHIDPTR, YYYYY, 0, 0)
855#define ca_array_build(NAME,XXXXX, ZZZZZZ, CHIDPTR,YYYYY)\
856ca_build_and_connect(NAME, XXXXX, ZZZZZZ, CHIDPTR, YYYYY, 0, 0)
857LIBCA_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)\
861ca_search_and_connect (pChanName, pChanID, 0, 0)
862LIBCA_API
int epicsStdCall ca_search_and_connect
863 (
const char * pChanName, chid * pChanID,
864 caCh *pFunc,
void * pArg );
865LIBCA_API
int epicsStdCall ca_channel_status (epicsThreadId tid);
866LIBCA_API
int epicsStdCall ca_clear_event ( evid eventID );
867#define ca_add_event(type,chan,pFunc,pArg,pEventID)\
868ca_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)\
872ca_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)\
874ca_add_masked_array_event(TYPE,COUNT,CHID,ENTRY,ARG,P_DELTA,N_DELTA,TO,EVID, DBE_VALUE | DBE_ALARM)
875LIBCA_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 );
883LIBCA_API
int epicsStdCall ca_modify_user_name (
const char *pUserName );
884LIBCA_API
int epicsStdCall ca_modify_host_name (
const char *pHostName );
C++ and C descriptions for a thread.