AlcapDAQ  1
Functions
epics_ca.h File Reference

Go to the source code of this file.

Functions

INT epics_ca (INT cmd,...)
 

Function Documentation

INT epics_ca ( INT  cmd,
  ... 
)

Definition at line 3134 of file epics_ca.c.

3134  {
3135  va_list argptr;
3136  HNDLE hKey;
3137  INT channel, status;
3138  DWORD flags;
3139  float value, *pvalue;
3140  CA_INFO *info;
3141  char *label;
3142 
3143  va_start(argptr, cmd);
3144  status = FE_SUCCESS;
3145 
3146 #ifdef MIDEBUG2
3147  cm_msg(MLOG,"","++epics_ca(CMD=%d)",cmd);
3148 #endif
3149  if (cmd == CMD_INIT) {
3150  void *pinfo;
3151 
3152  hKey = va_arg(argptr, HNDLE);
3153  pinfo = va_arg(argptr, void *);
3154  channel = va_arg(argptr, INT);
3155  flags = va_arg(argptr, DWORD);
3156  status = epics_ca_init(hKey, pinfo, channel);
3157  if (pinfo) {
3158  info = *(CA_INFO **) pinfo;
3159  if (info) info->flags = flags;
3160  }
3161  } else {
3162  info = va_arg(argptr, void *);
3163 
3164  /* only execute command if enabled */
3165  if (!info || info->cmd_disabled) {
3166  ss_sleep(100);
3167 #ifdef MIDEBUG2
3168  cm_msg(MLOG,"","ss_sleep(100)");
3169 #endif
3170  status = FE_ERR_DISABLED;
3171  } else {
3172  switch (cmd) {
3173  case CMD_INIT:
3174  break;
3175 
3176  case CMD_EXIT:
3177  status = epics_ca_exit(info);
3178  break;
3179 
3180  case CMD_SET:
3181  channel = va_arg(argptr, INT);
3182  value = (float) va_arg(argptr, double);
3183  status = epics_ca_set(info, channel, value, TRUE, FALSE);
3184  break;
3185 
3186  case CMD_SET_ALL:
3187  channel = va_arg(argptr, INT);
3188  value = (float) va_arg(argptr, double);
3189  status = epics_ca_set_all(info, channel, value);
3190  break;
3191 
3192  case CMD_SET_LABEL:
3193  channel = va_arg(argptr, INT);
3194  label = va_arg(argptr, char *);
3195  //status = epics_ca_set_label(info, channel, label);
3196  status = FE_SUCCESS;
3197  break;
3198 
3199  case CMD_GET:
3200  channel = va_arg(argptr, INT);
3201  pvalue = va_arg(argptr, float *);
3202  status = epics_ca_get(info, channel, pvalue);
3203  break;
3204 
3205  case CMD_GET_DEMAND:
3206  channel = va_arg(argptr, INT);
3207  pvalue = va_arg(argptr, float *);
3208  status = epics_ca_get_demand(info, channel, pvalue);
3209  break;
3210 
3211  case CMD_GET_ALL:
3212  channel = va_arg(argptr, INT);
3213  pvalue = va_arg(argptr, float *);
3214  status = epics_ca_get_all(info, channel, pvalue);
3215  break;
3216 
3217  case CMD_GET_DEFAULT_NAME:
3218  channel = va_arg(argptr, INT);
3219  label = va_arg(argptr, char *);
3220  status = epics_ca_get_default_name(info, channel, label);
3221  break;
3222 
3223  case CMD_GET_DEFAULT_THRESHOLD:
3224  channel = va_arg(argptr, INT);
3225  pvalue = va_arg(argptr, float *);
3226  status = epics_ca_get_default_threshold(info, channel, pvalue);
3227  break;
3228 
3229  default:
3230 #ifdef MIDEBUG
3231  cm_msg(MLOG,"","**epics_ca(CMD=%d) is not handled",cmd);
3232 #endif
3233  break;
3234  }
3235  }
3236  }
3237 
3238  va_end(argptr);
3239 
3240 #ifdef MIDEBUG2
3241  cm_msg(MLOG,"","--epics_ca()");
3242 #endif
3243  return status;
3244 }