13#error This is a C++ include file and cannot be used from plain C
23#define ngcdcsCLDC_LBNL 0x00010000
28#define ngcdcsCLDC_ERR_PROTECTION 0x1
34#define ngcdcsCLDC_BUFSIZE (1024 * 128)
39#define ngcdcsCLDC_DCLK 2
44#define ngcdcsCLDC_CAL_MAX 0.2
49#define ngcdcsCLDC_VDIFF_MAX 1.0
54#define ngcdcsCLDC_MAX_CHAN ((ngcbCLDC_MAX_CLK * 2) + ngcbCLDC_MAX_DC)
59#define ngcdcsCLDC_MAX_TEL 80
232 if (
clk != NULL)
delete[]
clk;
234 if (
dc != NULL)
delete[]
dc;
261 strcpy(statStr_,
"enabled");
268 strcpy(statStr_,
"disabled");
317 virtual int VoltageDC(
int num,
double volt,
int rangeCheck = 1) {
319 if ((num < 0) || (num >=
numDc))
321 sprintf(
ErrMsg(),
"bias channel number out of range");
329 virtual int VoltageClk(
int num,
int l,
double volt,
int rangeCheck = 1) {
331 if ((num < 0) || (num >=
numClk))
333 sprintf(
ErrMsg(),
"clock channel number out of range");
336 clk[num].level[l].volt = volt;
356 if ((num < 0) || (num >=
numDc))
358 sprintf(
ErrMsg(),
"bias channel number out of range");
361 dc[num].voltReg = value;
368 if ((num < 0) || (num >=
numClk))
370 sprintf(
ErrMsg(),
"clock channel number out of range");
373 clk[num].level[l].voltReg = value;
379 if ((num < 0) || (num >=
numDc))
381 sprintf(
ErrMsg(),
"bias channel number out of range");
390 if ((num < 0) || (num >=
numClk))
392 sprintf(
ErrMsg(),
"clock channel number out of range");
395 clk[num].level[l].comp = volt;
406 virtual int TelDC(
int num,
double *volt) {
407 if ((num < 0) || (num >=
numDc))
409 sprintf(
ErrMsg(),
"bias channel number out of range");
412 *volt =
dc[num].volt;
417 virtual int TelClk(
int num,
int l,
double *volt) {
418 if ((num < 0) || (num >=
numClk))
420 sprintf(
ErrMsg(),
"clock channel number out of range");
423 *volt =
clk[num].level[l].volt;
456 if (fileName != NULL)
458 if (strlen(fileName) > 0)
492 virtual int SetupKey(
const char *key,
const int *idx,
const char *value,
496 virtual int StatusKey(
const char *key,
const int *idx,
char *value,
511 memset(statStr_, 0,
sizeof(statStr_));
512 strcpy(statStr_,
"disabled");
556 sprintf(
clk[i].level[j].name,
"CLOCK_%d_L%d", i + 1, j);
566 if ((
dc == NULL) || (
dcTel == NULL))
575 for (i=0;i<
numDc;i++)
577 sprintf(
dc[i].name,
"DC-%d", i + 1);
667 int Enable(
int check = 1);
679 int VSetup(
int autoCtrl = 0);
694 virtual int Adjust(
int chan);
697 int DacChan(
int chan,
double volt);
700 int VoltageDC(
int num,
double volt,
int rangeCheck = 1);
703 int VoltageClk(
int num,
int l,
double volt,
int rangeCheck = 1);
709 int VoltageRegDC(
int num,
int value,
int rangeCheck = 1);
712 int VoltageRegClk(
int num,
int l,
int value,
int rangeCheck = 1);
727 virtual int TelChan(
int chan,
double *volt);
736 int TelDC(
int num,
double *volt);
742 int TelClk(
int num,
int l,
double *volt);
769 virtual int Monitor(
int num,
int clkChan);
802 int Restore(
const char *keyWord);
808 virtual int Volt2Reg(
double *volt,
int chan,
double corr = 1.0);
811 virtual double Reg2Volt(
int reg,
int chan,
double corr = 1.0);
814 virtual int DacReg(
int value,
int chan);
820 int SetupKey(
const char *key,
const int *idx,
const char *value,
824 int StatusKey(
const char *key,
const int *idx,
char *value,
836 int DAC_(
int value,
int chan);
848 void NewStatus_(
int newStatus);
893 struct timeval *dacTime_;
908 int LoadCfg_(
const char *restoreKey,
const char *tmpFile);
911 int VoltDiff_(
double *volt,
int chan1,
int chan2,
double corr = 1.0);
Definition ngcbALARM.hpp:100
Definition ngcbIFC.hpp:760
ngcbMOD(const ngcbMOD &other)
Copy constructor.
Definition ngcbMOD.cpp:43
virtual int Success()
Return success.
Definition ngcbOBJ.cpp:68
int Instance()
Get instance.
Definition ngcbOBJ.cpp:58
virtual void Verbose(int level, const char *format,...) __attribute__((format(printf
Verbose message if verbose level exceeds level.
Definition ngcbOBJ.cpp:74
virtual char * ErrMsg()
Error message.
Definition ngcbOBJ.cpp:66
virtual int Selftest()
Execute self-test.
Definition ngcdcsCLDC.hpp:244
virtual int VoltageClk(int num, ngcdcs_clkv_t cv, int rangeCheck=1)
Set all levels of clock.
Definition ngcdcsCLDC.hpp:341
virtual int Restore(const char *keyword)
Restore keyword from the last loaded file.
Definition ngcdcsCLDC.hpp:486
int telFlag
Flag to update telemetry.
Definition ngcdcsCLDC.hpp:195
virtual int Protection(int flag)
Enable/disable protection circuit.
Definition ngcdcsCLDC.hpp:276
virtual int VoltageClk(int num, int l, double volt, int rangeCheck=1)
Set clock level.
Definition ngcdcsCLDC.hpp:329
int vstat
Soft-status (enabled, disabled)
Definition ngcdcsCLDC.hpp:132
virtual int TelDC(int num, double *volt)
Telemetry for DC-bias.
Definition ngcdcsCLDC.hpp:406
char cfgFile[256]
Voltage configuration file.
Definition ngcdcsCLDC.hpp:189
ngcdcsCLDC0(const ngcb_route_t &r, int nc, int nb)
Constructor with route, number of clocks and number of biases.
Definition ngcdcsCLDC.hpp:213
virtual int Calibrated()
Check if calibration has been done.
Definition ngcdcsCLDC.hpp:292
virtual void ClearCalibration()
Clear calibration.
Definition ngcdcsCLDC.hpp:289
virtual int VoltageErrDC(int num, double volt)
Set DC voltage error.
Definition ngcdcsCLDC.hpp:378
virtual int LoadCfgFile(const char *fileName=NULL)
Load voltage configuration.
Definition ngcdcsCLDC.hpp:455
int ilck
Flag to enable/disable the external interlock.
Definition ngcdcsCLDC.hpp:141
int numDc
Number of bias voltages.
Definition ngcdcsCLDC.hpp:168
virtual ~ngcdcsCLDC0()
Destructor.
Definition ngcdcsCLDC.hpp:231
virtual int VoltageDC(int num, double volt, int rangeCheck=1)
Set DC voltage.
Definition ngcdcsCLDC.hpp:317
virtual int TelClk(int num, ngcdcs_clkv_t *cv)
Telemetry for clock (all levels)
Definition ngcdcsCLDC.hpp:428
ngcdcs_clkv_t * clkTel
Saved clock voltages telemetry values.
Definition ngcdcsCLDC.hpp:171
int toggle
Toggle new configuration.
Definition ngcdcsCLDC.hpp:192
int haveCurrentTel
Flag, indicating whether current-telemetry is available.
Definition ngcdcsCLDC.hpp:177
virtual int Zero()
Set all voltages to zero.
Definition ngcdcsCLDC.hpp:295
virtual int Check()
Check telemetry against current setup.
Definition ngcdcsCLDC.hpp:256
virtual int VoltageRegDC(int num, int value, int rangeCheck=1)
Set DC hex-voltage.
Definition ngcdcsCLDC.hpp:354
double cvg1
Voltage conversion formula gain-1.
Definition ngcdcsCLDC.hpp:198
double cvg2
Voltage conversion formula gain-2.
Definition ngcdcsCLDC.hpp:201
virtual int Snapshot()
Telemetry snapshot.
Definition ngcdcsCLDC.hpp:446
double cvOffset
Voltage conversion formula offset.
Definition ngcdcsCLDC.hpp:204
virtual double TelCurrent(int chan)
Return value of last current-telemetry.
Definition ngcdcsCLDC.hpp:400
int protection
Flag indicating whether protection has triggered.
Definition ngcdcsCLDC.hpp:147
virtual char * VStatusString()
Get voltage status string.
Definition ngcdcsCLDC.hpp:449
virtual int OutputEnable()
Enable output.
Definition ngcdcsCLDC.hpp:259
double * dcTel
Saved bias voltages telemetry values.
Definition ngcdcsCLDC.hpp:174
double calMax
Voltage calibration limit (in Volts)
Definition ngcdcsCLDC.hpp:156
virtual int SaveErrFile(const char *fileName)
Save error calibration.
Definition ngcdcsCLDC.hpp:480
virtual int VoltageRegClk(int num, int l, int value, int rangeCheck=1)
Set clock hex-level.
Definition ngcdcsCLDC.hpp:366
virtual int OutputDisable()
Disable output.
Definition ngcdcsCLDC.hpp:266
virtual int SetupKey(const char *key, const int *idx, const char *value, int *status=NULL)
Setup.
Definition ngcdcsCldcSetup.cpp:26
virtual int VSetup(int autoCtrl=0)
Apply voltage setup.
Definition ngcdcsCLDC.hpp:250
virtual int OutputEnabled()
Check if output is enabled.
Definition ngcdcsCLDC.hpp:273
double dacTime
DAC settling time (in seconds)
Definition ngcdcsCLDC.hpp:183
virtual int VStatus(int *s)
Get voltage HW-status.
Definition ngcdcsCLDC.hpp:452
int ilckOn
Flag indicating whether interlock is enabled.
Definition ngcdcsCLDC.hpp:144
virtual int VoltageErrClk(int num, int l, double volt)
Set clock level voltage error.
Definition ngcdcsCLDC.hpp:389
int numClk
Number of clock voltages.
Definition ngcdcsCLDC.hpp:162
char serNoBoard[32]
Serial number.
Definition ngcdcsCLDC.hpp:207
virtual int TelClk(int num, int l, double *volt)
Telemetry for clock level.
Definition ngcdcsCLDC.hpp:417
virtual int Calibrate(int noSetup=0)
Calibrate (offset compensation)
Definition ngcdcsCLDC.hpp:282
int autoCal
Calibrate at online.
Definition ngcdcsCLDC.hpp:153
int protectionOn
Flag indicating whether protection is enabled.
Definition ngcdcsCLDC.hpp:150
ngcdcs_dc_t * dc
Bias voltages.
Definition ngcdcsCLDC.hpp:165
virtual int StatusKey(const char *key, const int *idx, char *value, int *status=NULL)
Status.
Definition ngcdcsCldcStatus.cpp:26
char voltageInitFile[256]
Voltage initialization file.
Definition ngcdcsCLDC.hpp:186
ngcdcs_clk_t * clk
Clock voltages.
Definition ngcdcsCLDC.hpp:159
ngcdcsCLDC0(ngcbIFC *ifc, const ngcb_route_t &r, int nc, int nb)
Definition ngcdcsCLDC.hpp:224
char serNoTrans[32]
Transition board serial number.
Definition ngcdcsCLDC.hpp:210
virtual int SaveCfgFile(const char *fileName)
Save voltage configuration.
Definition ngcdcsCLDC.hpp:474
virtual int AtOnline()
At online hook.
Definition ngcdcsCLDC.hpp:239
double margin
Margin for voltage check (in Volts)
Definition ngcdcsCLDC.hpp:180
int autoEnable
Enable at online.
Definition ngcdcsCLDC.hpp:135
int autoDisable
Disable when (re-)configuring.
Definition ngcdcsCLDC.hpp:138
double offsetClk
Offset for clock voltages.
Definition ngcdcsCLDC.hpp:610
int Selftest()
Execute self-test.
Definition ngcdcsCldcSelftest.cpp:27
int SaveCfgFile(const char *fileName)
Save voltage configuration.
Definition ngcdcsCldcCfg.cpp:1062
int Restore(const char *keyWord)
Restore keyword from the last loaded file.
Definition ngcdcsCldcCfg.cpp:153
int Snapshot()
Telemetry snapshot.
Definition ngcdcsCldcTel.cpp:283
double offsetDC
Offset for bias voltages.
Definition ngcdcsCLDC.hpp:613
virtual void ClkMap(ngcdcs_clk_t *cv)
Clock channel mapping.
Definition ngcdcsCLDC.cpp:573
void BoardType(int b)
Enforce specific board type.
Definition ngcdcsCLDC.cpp:468
virtual int DiodeBias(double volt)
Set diode bias.
Definition ngcdcsCldcOffset.cpp:217
virtual ~ngcdcsCLDC()
Destructor.
Definition ngcdcsCLDC.cpp:48
virtual int VideoOffset(double *volt)
Set video offset.
Definition ngcdcsCldcOffset.cpp:252
virtual void DefaultSetup(const char *keyWord=NULL)
Default setup.
Definition ngcdcsCldcCfg.cpp:27
int clkMon1
Clock on monitor 1.
Definition ngcdcsCLDC.hpp:616
int DacChan(int chan, double volt)
Set voltage on DAC channel.
Definition ngcdcsCLDC.cpp:1331
int SaveErrFile(const char *fileName)
Save error calibration.
Definition ngcdcsCldcCfg.cpp:1606
int LoadCfgFile(const char *fileName=NULL)
Load voltage configuration.
Definition ngcdcsCldcCfg.cpp:148
double preampOffset
Preamplifier offset.
Definition ngcdcsCLDC.hpp:622
int OutputEnabled()
Check if output is enabled.
Definition ngcdcsCLDC.cpp:1178
int VStatus(int *hwStat)
Get voltage HW-status.
Definition ngcdcsCLDC.cpp:254
int VoltageRegDC(int num, int value, int rangeCheck=1)
Set DC hex-voltage.
Definition ngcdcsCLDC.cpp:1637
int OutputDisable()
Disable output.
Definition ngcdcsCLDC.cpp:1270
ngcbMOD * vcm[ngcdcsCLDC_MAX_CHAN]
Voltage Callbacks.
Definition ngcdcsCLDC.hpp:646
virtual int TelIntern(int sel=-1)
Update internal telemetry.
Definition ngcdcsCldcTel.cpp:134
int VoltageErrDC(int num, double volt)
Set DC voltage error.
Definition ngcdcsCldcCalib.cpp:200
double lbnlOffset
LBNL high voltage offset.
Definition ngcdcsCLDC.hpp:631
int Calibrated()
Check if calibration has been done.
Definition ngcdcsCldcCalib.cpp:195
int OutputEnable()
Enable output.
Definition ngcdcsCLDC.cpp:1183
double lbnlGain
LBNL high voltage gain.
Definition ngcdcsCLDC.hpp:628
int TelData(double *volt)
Read telemetry data.
Definition ngcdcsCldcTel.cpp:83
int TelClk(int num, ngcdcs_clkv_t *cv)
Telemetry for clock (all levels)
Definition ngcdcsCldcTel.cpp:263
virtual double OffsetClk()
Return Offset for clocks.
Definition ngcdcsCldcOffset.cpp:26
virtual int Monitor(int num, int clkChan)
Set channel for clock-monitor.
Definition ngcdcsCldcMon.cpp:26
virtual double OffsetDC()
Return Offset for DC-biases.
Definition ngcdcsCldcOffset.cpp:31
void Reset()
Align soft-states after reset.
Definition ngcdcsCLDC.cpp:476
double lbnlTelOffset
LBNL high voltage offset (telemetry)
Definition ngcdcsCLDC.hpp:637
int VoltageErrClk(int num, int l, double volt)
Set clock level voltage error.
Definition ngcdcsCldcCalib.cpp:230
int Check()
Check telemetry against current setup.
Definition ngcdcsCLDC.cpp:866
int dcSetupMap[ngcbCLDC_MAX_DC]
Map specifying the setup order of the biases.
Definition ngcdcsCLDC.hpp:652
int TelChan()
Return actual telemetry channel.
Definition ngcdcsCldcTel.cpp:81
int SetupKey(const char *key, const int *idx, const char *value, int *status=NULL)
Setup.
Definition ngcdcsCldcSetup.cpp:585
int VoltageDC(int num, double volt, int rangeCheck=1)
Set DC voltage.
Definition ngcdcsCLDC.cpp:1450
int Protection(int flag)
Enable/disable protection circuit.
Definition ngcdcsCLDC.cpp:1302
int clkMon2
Clock on monitor 2.
Definition ngcdcsCLDC.hpp:619
int Disable()
Call-back at transition to not operational state.
Definition ngcdcsCLDC.cpp:834
virtual double Reg2Volt(int reg, int chan, double corr=1.0)
Convert register value to voltage.
Definition ngcdcsCLDC.cpp:1920
double dacDelay
DAC delay (seconds)
Definition ngcdcsCLDC.hpp:640
int VoltageClk(int num, int l, double volt, int rangeCheck=1)
Set clock level.
Definition ngcdcsCLDC.cpp:1532
int StatusKey(const char *key, const int *idx, char *value, int *status=NULL)
Status.
Definition ngcdcsCldcStatus.cpp:451
int Enable(int check=1)
Call-back at transition to operational state.
Definition ngcdcsCLDC.cpp:608
int VoltageRegClk(int num, int l, int value, int rangeCheck=1)
Set clock hex-level.
Definition ngcdcsCLDC.cpp:1718
ngcdcs_tel_t tel[ngcdcsCLDC_MAX_TEL]
Internal telemetry.
Definition ngcdcsCLDC.hpp:643
virtual void DcMap(ngcdcs_dc_t *dv)
Bias channel mapping.
Definition ngcdcsCLDC.cpp:541
int Zero()
Set all voltages to zero.
Definition ngcdcsCLDC.cpp:1807
int Calibrate(int noSetup=0)
Calibrate (offset compensation)
Definition ngcdcsCldcCalib.cpp:26
void ClearCalibration()
Clear calibration.
Definition ngcdcsCldcCalib.cpp:176
char * VStatusString()
Get voltage status string.
Definition ngcdcsCLDC.cpp:249
int clkSetupMap[ngcbCLDC_MAX_CLK]
Map specifying the setup order of the clocks.
Definition ngcdcsCLDC.hpp:649
virtual int Volt2Reg(double *volt, int chan, double corr=1.0)
Convert voltage to register value.
Definition ngcdcsCLDC.cpp:1863
int TelDC(int num, double *volt)
Telemetry for DC-bias.
Definition ngcdcsCldcTel.cpp:155
double diodeBias
DiodeBias.
Definition ngcdcsCLDC.hpp:625
virtual int Adjust(int chan)
Voltage setup adjustement for channel.
Definition ngcdcsCLDC.cpp:1325
int GetTelCfg(size_t start)
Get internal telemetry configurarion (NGCII only)
Definition ngcdcsCldcTel.cpp:312
virtual int DacReg(int value, int chan)
Map value on DAC register channel.
Definition ngcdcsCLDC.cpp:1953
void TimeStamp(int chan)
Timstamp DAC channel (last setup)
Definition ngcdcsCLDC.cpp:860
virtual double ConvertTel(int value)
Convert telemetry register value.
Definition ngcdcsCldcTel.cpp:26
ngcdcsCLDC(const ngcb_route_t &r, int nc, int nb)
Constructor with route, number of clocks and number of biases.
Definition ngcdcsCLDC.cpp:29
virtual int PreampOffset(double volt)
Set preamplifier offset.
Definition ngcdcsCldcOffset.cpp:182
double lbnlTelGain
LBNL high voltage gain (telemetry)
Definition ngcdcsCLDC.hpp:634
int VSetup(int autoCtrl=0)
Apply voltage setup.
Definition ngcdcsCLDC.cpp:1002
#define ngcbCLDC_MAX_DC
Definition ngcbAddr.h:334
#define ngcbCLDC_STAT_ENABLED
Definition ngcbAddr.h:328
#define ngcbCLDC_MAX_CLK
Definition ngcbAddr.h:333
#define ngcbCLDC_STAT_DISABLED
Definition ngcbAddr.h:327
#define ngcbMOD_ERR
Definition ngcbOBJ.hpp:23
void ngcbCleanPath(char *name)
Definition ngcbFile.c:597
#define USE(x)
Definition ngcb.h:29
#define ngcdcsCLDC_CAL_MAX
Definition ngcdcsCLDC.hpp:44
#define ngcdcsCLDC_DCLK
Definition ngcdcsCLDC.hpp:39
#define ngcdcsCLDC_MAX_CHAN
Definition ngcdcsCLDC.hpp:54
#define ngcdcsCLDC_BUFSIZE
Definition ngcdcsCLDC.hpp:34
#define ngcdcsCLDC_VDIFF_MAX
Definition ngcdcsCLDC.hpp:49
#define ngcdcsCLDC_MAX_TEL
Definition ngcdcsCLDC.hpp:59
Definition ngcbIFC.hpp:78
Definition ngcdcsCLDC.hpp:104
int connected
Definition ngcdcsCLDC.hpp:106
ngcdcs_clk_t()
Constructor.
Definition ngcdcsCLDC.hpp:109
ngcdcs_dc_t level[ngcdcsCLDC_DCLK]
Definition ngcdcsCLDC.hpp:105
Definition ngcdcsCLDC.hpp:115
ngcdcs_clkv_t()
Constructor.
Definition ngcdcsCLDC.hpp:119
double volt[ngcdcsCLDC_DCLK]
Definition ngcdcsCLDC.hpp:116
Definition ngcdcsCLDC.hpp:64
char name[64]
Definition ngcdcsCLDC.hpp:74
double volt
Definition ngcdcsCLDC.hpp:65
int voltReg
Definition ngcdcsCLDC.hpp:71
int telChan
Definition ngcdcsCLDC.hpp:73
double telGain
Definition ngcdcsCLDC.hpp:68
double comp
Definition ngcdcsCLDC.hpp:69
double margin
Definition ngcdcsCLDC.hpp:70
char unit[4]
Definition ngcdcsCLDC.hpp:78
int connected
Definition ngcdcsCLDC.hpp:75
ngcdcs_dc_t()
Constructor.
Definition ngcdcsCLDC.hpp:81
double dacCorr
Definition ngcdcsCLDC.hpp:67
int dacChan
Definition ngcdcsCLDC.hpp:72
int directReg
Definition ngcdcsCLDC.hpp:76
double range[2]
Definition ngcdcsCLDC.hpp:66
int set
Definition ngcdcsCLDC.hpp:77
Definition ngcdcsTypes.hpp:45