CAEN MCA  0.99.10
SDK for Hexagon
examples_hv.c

High-Voltage

#include "examples.h"
int32_t CAEN_MCA_EXAMPLES_HVRange_GetInfo(CAEN_MCA_HANDLE hvchannel, int32_t hvrange_id) {
double vset_min, vset_max, vset_incr, vmax_max;
int32_t ret = CAEN_MCA_GetData(
hvrange,
&vset_min,
&vset_max,
&vset_incr,
&vmax_max);
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
else {
fprintf(stdout, "Vset min: %f\tVset max: %f\tVset incr: %f\tVmax max %f\n", vset_min, vset_max, vset_incr, vmax_max);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_HVRange_GetVMon(CAEN_MCA_HANDLE hvchannel) {
CAEN_MCA_HANDLE active_range_par = CAEN_MCA_GetChildHandleByName(hvchannel, CAEN_MCA_HANDLE_PARAMETER, "PARAM_HVCH_ACTIVE_RANGE");
char* pvalue = malloc(PARAMINFO_NAME_MAXLEN * sizeof(*pvalue));
int32_t ret = CAEN_MCA_GetData(active_range_par, CAEN_MCA_DATA_PARAMETER_VALUE, DATAMASK_VALUE_CODENAME, pvalue);
free(pvalue);
CAEN_MCA_HANDLE vmon_par = CAEN_MCA_GetChildHandleByName(active_range, CAEN_MCA_HANDLE_PARAMETER, "PARAM_HVRANGE_VMON");
double vmon;
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
else {
fprintf(stdout, "Vmon: %f\n", vmon);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_HVChannel_SetStatusAlternative(CAEN_MCA_HANDLE hvchannel, bool on) {
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_HVChannel_SetStatus(CAEN_MCA_HANDLE hvchannel, bool on) {
uint32_t value = on;
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_HVChannel_GetStatus(CAEN_MCA_HANDLE hvchannel, bool* on) {
uint32_t value;
*on = !!value;
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
return ret;
}
int32_t CAEN_MCA_EXAMPLES_HVChannel_GetExtendedStatus(CAEN_MCA_HANDLE hvchannel) {
CAEN_MCA_HANDLE status_par = CAEN_MCA_GetChildHandleByName(hvchannel, CAEN_MCA_HANDLE_PARAMETER, "PARAM_HVCH_STATUS");
double dstatus;
uint16_t status = (uint16_t)dstatus;
fprintf(stderr, "%s(): failed. Error: '%"PRIi32"'.\n", __func__, ret);
}
else {
fprintf(stdout, "Status: %"PRIx16"\n", status);
fprintf(stdout, "HV_STATUSBIT_PW: %d\n", !!(status & 0x0001));
fprintf(stdout, "HV_STATUSBIT_RAMPUP: %d\n", !!(status & 0x0002));
fprintf(stdout, "HV_STATUSBIT_RAMPDOWN: %d\n", !!(status & 0x0004));
fprintf(stdout, "HV_STATUSBIT_OVCURR: %d\n", !!(status & 0x0008));
fprintf(stdout, "HV_STATUSBIT_OVVOLT: %d\n", !!(status & 0x0010));
fprintf(stdout, "HV_STATUSBIT_UNDVOLT: %d\n", !!(status & 0x0020));
fprintf(stdout, "HV_STATUSBIT_MAXV: %d\n", !!(status & 0x0040));
fprintf(stdout, "HV_STATUSBIT_MAXI: %d\n", !!(status & 0x0080));
fprintf(stdout, "HV_STATUSBIT_TEMPWARN: %d\n", !!(status & 0x0100));
fprintf(stdout, "HV_STATUSBIT_OVTEMP: %d\n", !!(status & 0x0200));
fprintf(stdout, "HV_STATUSBIT_DISABLE: %d\n", !!(status & 0x0400));
fprintf(stdout, "HV_STATUSBIT_CALIBERR: %d\n", !!(status & 0x0800)); // bit 11 is "WARMUP" on Hexagon / Red Eagle
fprintf(stdout, "HV_STATUSBIT_RESET: %d\n", !!(status & 0x1000));
fprintf(stdout, "HV_STATUSBIT_GOINGOFF: %d\n", !!(status & 0x2000));
}
return ret;
}