12#error This is a C++ include file and cannot be used from plain C
22#define ngcdcsCLDC_LBNL 0x00010000
27#define ngcdcsCLDC_ERR_PROTECTION 0x1
33#define ngcdcsCLDC_BUFSIZE (1024 * 128)
38#define ngcdcsCLDC_DCLK 2
43#define ngcdcsCLDC_CAL_MAX 0.2
48#define ngcdcsCLDC_VDIFF_MAX 1.0
53#define ngcdcsCLDC_MAX_CHAN ((ngcbCLDC_MAX_CLK * 2) + ngcbCLDC_MAX_DC)
58#define ngcdcsCLDC_MAX_TEL 80
231 if (
clk != NULL)
delete[]
clk;
233 if (
dc != NULL)
delete[]
dc;
260 strcpy(statStr_,
"enabled");
267 strcpy(statStr_,
"disabled");
316 virtual int VoltageDC(
int num,
double volt,
int rangeCheck = 1) {
318 if ((num < 0) || (num >=
numDc))
320 sprintf(
ErrMsg(),
"bias channel number out of range");
328 virtual int VoltageClk(
int num,
int l,
double volt,
int rangeCheck = 1) {
330 if ((num < 0) || (num >=
numClk))
332 sprintf(
ErrMsg(),
"clock channel number out of range");
335 clk[num].level[l].volt = volt;
355 if ((num < 0) || (num >=
numDc))
357 sprintf(
ErrMsg(),
"bias channel number out of range");
360 dc[num].voltReg = value;
367 if ((num < 0) || (num >=
numClk))
369 sprintf(
ErrMsg(),
"clock channel number out of range");
372 clk[num].level[l].voltReg = value;
378 if ((num < 0) || (num >=
numDc))
380 sprintf(
ErrMsg(),
"bias channel number out of range");
389 if ((num < 0) || (num >=
numClk))
391 sprintf(
ErrMsg(),
"clock channel number out of range");
394 clk[num].level[l].comp = volt;
405 virtual int TelDC(
int num,
double *volt) {
406 if ((num < 0) || (num >=
numDc))
408 sprintf(
ErrMsg(),
"bias channel number out of range");
411 *volt =
dc[num].volt;
416 virtual int TelClk(
int num,
int l,
double *volt) {
417 if ((num < 0) || (num >=
numClk))
419 sprintf(
ErrMsg(),
"clock channel number out of range");
422 *volt =
clk[num].level[l].volt;
455 if (fileName != NULL)
457 if (strlen(fileName) > 0)
491 virtual int SetupKey(
const char *key,
const int *idx,
const char *value,
495 virtual int StatusKey(
const char *key,
const int *idx,
char *value,
510 memset(statStr_, 0,
sizeof(statStr_));
511 strcpy(statStr_,
"disabled");
555 sprintf(
clk[i].level[j].name,
"CLOCK_%d_L%d", i + 1, j);
565 if ((
dc == NULL) || (
dcTel == NULL))
574 for (i=0;i<
numDc;i++)
576 sprintf(
dc[i].name,
"DC-%d", i + 1);
666 int Enable(
int check = 1);
678 int VSetup(
int autoCtrl = 0);
693 virtual int Adjust(
int chan);
696 int DacChan(
int chan,
double volt);
699 int VoltageDC(
int num,
double volt,
int rangeCheck = 1);
702 int VoltageClk(
int num,
int l,
double volt,
int rangeCheck = 1);
708 int VoltageRegDC(
int num,
int value,
int rangeCheck = 1);
711 int VoltageRegClk(
int num,
int l,
int value,
int rangeCheck = 1);
726 virtual int TelChan(
int chan,
double *volt);
735 int TelDC(
int num,
double *volt);
741 int TelClk(
int num,
int l,
double *volt);
768 virtual int Monitor(
int num,
int clkChan);
801 int Restore(
const char *keyWord);
807 virtual int Volt2Reg(
double *volt,
int chan,
double corr = 1.0);
810 virtual double Reg2Volt(
int reg,
int chan,
double corr = 1.0);
813 virtual int DacReg(
int value,
int chan);
819 int SetupKey(
const char *key,
const int *idx,
const char *value,
823 int StatusKey(
const char *key,
const int *idx,
char *value,
835 int DAC_(
int value,
int chan);
847 void NewStatus_(
int newStatus);
892 struct timeval *dacTime_;
907 int LoadCfg_(
const char *restoreKey,
const char *tmpFile);
910 int VoltDiff_(
double *volt,
int chan1,
int chan2,
double corr = 1.0);
Definition ngcbALARM.hpp:99
Definition ngcbIFC.hpp:754
ngcbMOD(const ngcbMOD &other)
Copy constructor.
Definition ngcbMOD.cpp:43
virtual int Success()
Return success.
Definition ngcbOBJ.cpp:67
int Instance()
Get instance.
Definition ngcbOBJ.cpp:57
virtual void Verbose(int level, const char *format,...) __attribute__((format(printf
Verbose message if verbose level exceeds level.
Definition ngcbOBJ.cpp:73
virtual char * ErrMsg()
Error message.
Definition ngcbOBJ.cpp:65
virtual int Selftest()
Execute self-test.
Definition ngcdcsCLDC.hpp:243
virtual int VoltageClk(int num, ngcdcs_clkv_t cv, int rangeCheck=1)
Set all levels of clock.
Definition ngcdcsCLDC.hpp:340
virtual int Restore(const char *keyword)
Restore keyword from the last loaded file.
Definition ngcdcsCLDC.hpp:485
int telFlag
Flag to update telemetry.
Definition ngcdcsCLDC.hpp:194
virtual int Protection(int flag)
Enable/disable protection circuit.
Definition ngcdcsCLDC.hpp:275
virtual int VoltageClk(int num, int l, double volt, int rangeCheck=1)
Set clock level.
Definition ngcdcsCLDC.hpp:328
int vstat
Soft-status (enabled, disabled)
Definition ngcdcsCLDC.hpp:131
virtual int TelDC(int num, double *volt)
Telemetry for DC-bias.
Definition ngcdcsCLDC.hpp:405
char cfgFile[256]
Voltage configuration file.
Definition ngcdcsCLDC.hpp:188
ngcdcsCLDC0(const ngcb_route_t &r, int nc, int nb)
Constructor with route, number of clocks and number of biases.
Definition ngcdcsCLDC.hpp:212
virtual int Calibrated()
Check if calibration has been done.
Definition ngcdcsCLDC.hpp:291
virtual void ClearCalibration()
Clear calibration.
Definition ngcdcsCLDC.hpp:288
virtual int VoltageErrDC(int num, double volt)
Set DC voltage error.
Definition ngcdcsCLDC.hpp:377
virtual int LoadCfgFile(const char *fileName=NULL)
Load voltage configuration.
Definition ngcdcsCLDC.hpp:454
int ilck
Flag to enable/disable the external interlock.
Definition ngcdcsCLDC.hpp:140
int numDc
Number of bias voltages.
Definition ngcdcsCLDC.hpp:167
virtual ~ngcdcsCLDC0()
Destructor.
Definition ngcdcsCLDC.hpp:230
virtual int VoltageDC(int num, double volt, int rangeCheck=1)
Set DC voltage.
Definition ngcdcsCLDC.hpp:316
virtual int TelClk(int num, ngcdcs_clkv_t *cv)
Telemetry for clock (all levels)
Definition ngcdcsCLDC.hpp:427
ngcdcs_clkv_t * clkTel
Saved clock voltages telemetry values.
Definition ngcdcsCLDC.hpp:170
int toggle
Toggle new configuration.
Definition ngcdcsCLDC.hpp:191
int haveCurrentTel
Flag, indicating whether current-telemetry is available.
Definition ngcdcsCLDC.hpp:176
virtual int Zero()
Set all voltages to zero.
Definition ngcdcsCLDC.hpp:294
virtual int Check()
Check telemetry against current setup.
Definition ngcdcsCLDC.hpp:255
virtual int VoltageRegDC(int num, int value, int rangeCheck=1)
Set DC hex-voltage.
Definition ngcdcsCLDC.hpp:353
double cvg1
Voltage conversion formula gain-1.
Definition ngcdcsCLDC.hpp:197
double cvg2
Voltage conversion formula gain-2.
Definition ngcdcsCLDC.hpp:200
virtual int Snapshot()
Telemetry snapshot.
Definition ngcdcsCLDC.hpp:445
double cvOffset
Voltage conversion formula offset.
Definition ngcdcsCLDC.hpp:203
virtual double TelCurrent(int chan)
Return value of last current-telemetry.
Definition ngcdcsCLDC.hpp:399
int protection
Flag indicating whether protection has triggered.
Definition ngcdcsCLDC.hpp:146
virtual char * VStatusString()
Get voltage status string.
Definition ngcdcsCLDC.hpp:448
virtual int OutputEnable()
Enable output.
Definition ngcdcsCLDC.hpp:258
double * dcTel
Saved bias voltages telemetry values.
Definition ngcdcsCLDC.hpp:173
double calMax
Voltage calibration limit (in Volts)
Definition ngcdcsCLDC.hpp:155
virtual int SaveErrFile(const char *fileName)
Save error calibration.
Definition ngcdcsCLDC.hpp:479
virtual int VoltageRegClk(int num, int l, int value, int rangeCheck=1)
Set clock hex-level.
Definition ngcdcsCLDC.hpp:365
virtual int OutputDisable()
Disable output.
Definition ngcdcsCLDC.hpp:265
virtual int SetupKey(const char *key, const int *idx, const char *value, int *status=NULL)
Setup.
Definition ngcdcsCldcSetup.cpp:25
virtual int VSetup(int autoCtrl=0)
Apply voltage setup.
Definition ngcdcsCLDC.hpp:249
virtual int OutputEnabled()
Check if output is enabled.
Definition ngcdcsCLDC.hpp:272
double dacTime
DAC settling time (in seconds)
Definition ngcdcsCLDC.hpp:182
virtual int VStatus(int *s)
Get voltage HW-status.
Definition ngcdcsCLDC.hpp:451
int ilckOn
Flag indicating whether interlock is enabled.
Definition ngcdcsCLDC.hpp:143
virtual int VoltageErrClk(int num, int l, double volt)
Set clock level voltage error.
Definition ngcdcsCLDC.hpp:388
int numClk
Number of clock voltages.
Definition ngcdcsCLDC.hpp:161
char serNoBoard[32]
Serial number.
Definition ngcdcsCLDC.hpp:206
virtual int TelClk(int num, int l, double *volt)
Telemetry for clock level.
Definition ngcdcsCLDC.hpp:416
virtual int Calibrate(int noSetup=0)
Calibrate (offset compensation)
Definition ngcdcsCLDC.hpp:281
int autoCal
Calibrate at online.
Definition ngcdcsCLDC.hpp:152
int protectionOn
Flag indicating whether protection is enabled.
Definition ngcdcsCLDC.hpp:149
ngcdcs_dc_t * dc
Bias voltages.
Definition ngcdcsCLDC.hpp:164
virtual int StatusKey(const char *key, const int *idx, char *value, int *status=NULL)
Status.
Definition ngcdcsCldcStatus.cpp:25
char voltageInitFile[256]
Voltage initialization file.
Definition ngcdcsCLDC.hpp:185
ngcdcs_clk_t * clk
Clock voltages.
Definition ngcdcsCLDC.hpp:158
ngcdcsCLDC0(ngcbIFC *ifc, const ngcb_route_t &r, int nc, int nb)
Definition ngcdcsCLDC.hpp:223
char serNoTrans[32]
Transition board serial number.
Definition ngcdcsCLDC.hpp:209
virtual int SaveCfgFile(const char *fileName)
Save voltage configuration.
Definition ngcdcsCLDC.hpp:473
virtual int AtOnline()
At online hook.
Definition ngcdcsCLDC.hpp:238
double margin
Margin for voltage check (in Volts)
Definition ngcdcsCLDC.hpp:179
int autoEnable
Enable at online.
Definition ngcdcsCLDC.hpp:134
int autoDisable
Disable when (re-)configuring.
Definition ngcdcsCLDC.hpp:137
double offsetClk
Offset for clock voltages.
Definition ngcdcsCLDC.hpp:609
int Selftest()
Execute self-test.
Definition ngcdcsCldcSelftest.cpp:26
int SaveCfgFile(const char *fileName)
Save voltage configuration.
Definition ngcdcsCldcCfg.cpp:1061
int Restore(const char *keyWord)
Restore keyword from the last loaded file.
Definition ngcdcsCldcCfg.cpp:152
int Snapshot()
Telemetry snapshot.
Definition ngcdcsCldcTel.cpp:282
double offsetDC
Offset for bias voltages.
Definition ngcdcsCLDC.hpp:612
virtual void ClkMap(ngcdcs_clk_t *cv)
Clock channel mapping.
Definition ngcdcsCLDC.cpp:572
void BoardType(int b)
Enforce specific board type.
Definition ngcdcsCLDC.cpp:467
virtual int DiodeBias(double volt)
Set diode bias.
Definition ngcdcsCldcOffset.cpp:216
virtual ~ngcdcsCLDC()
Destructor.
Definition ngcdcsCLDC.cpp:47
virtual int VideoOffset(double *volt)
Set video offset.
Definition ngcdcsCldcOffset.cpp:251
virtual void DefaultSetup(const char *keyWord=NULL)
Default setup.
Definition ngcdcsCldcCfg.cpp:26
int clkMon1
Clock on monitor 1.
Definition ngcdcsCLDC.hpp:615
int DacChan(int chan, double volt)
Set voltage on DAC channel.
Definition ngcdcsCLDC.cpp:1330
int SaveErrFile(const char *fileName)
Save error calibration.
Definition ngcdcsCldcCfg.cpp:1605
int LoadCfgFile(const char *fileName=NULL)
Load voltage configuration.
Definition ngcdcsCldcCfg.cpp:147
double preampOffset
Preamplifier offset.
Definition ngcdcsCLDC.hpp:621
int OutputEnabled()
Check if output is enabled.
Definition ngcdcsCLDC.cpp:1177
int VStatus(int *hwStat)
Get voltage HW-status.
Definition ngcdcsCLDC.cpp:253
int VoltageRegDC(int num, int value, int rangeCheck=1)
Set DC hex-voltage.
Definition ngcdcsCLDC.cpp:1636
int OutputDisable()
Disable output.
Definition ngcdcsCLDC.cpp:1269
ngcbMOD * vcm[ngcdcsCLDC_MAX_CHAN]
Voltage Callbacks.
Definition ngcdcsCLDC.hpp:645
virtual int TelIntern(int sel=-1)
Update internal telemetry.
Definition ngcdcsCldcTel.cpp:133
int VoltageErrDC(int num, double volt)
Set DC voltage error.
Definition ngcdcsCldcCalib.cpp:199
double lbnlOffset
LBNL high voltage offset.
Definition ngcdcsCLDC.hpp:630
int Calibrated()
Check if calibration has been done.
Definition ngcdcsCldcCalib.cpp:194
int OutputEnable()
Enable output.
Definition ngcdcsCLDC.cpp:1182
double lbnlGain
LBNL high voltage gain.
Definition ngcdcsCLDC.hpp:627
int TelData(double *volt)
Read telemetry data.
Definition ngcdcsCldcTel.cpp:82
int TelClk(int num, ngcdcs_clkv_t *cv)
Telemetry for clock (all levels)
Definition ngcdcsCldcTel.cpp:262
virtual double OffsetClk()
Return Offset for clocks.
Definition ngcdcsCldcOffset.cpp:25
virtual int Monitor(int num, int clkChan)
Set channel for clock-monitor.
Definition ngcdcsCldcMon.cpp:25
virtual double OffsetDC()
Return Offset for DC-biases.
Definition ngcdcsCldcOffset.cpp:30
void Reset()
Align soft-states after reset.
Definition ngcdcsCLDC.cpp:475
double lbnlTelOffset
LBNL high voltage offset (telemetry)
Definition ngcdcsCLDC.hpp:636
int VoltageErrClk(int num, int l, double volt)
Set clock level voltage error.
Definition ngcdcsCldcCalib.cpp:229
int Check()
Check telemetry against current setup.
Definition ngcdcsCLDC.cpp:865
int dcSetupMap[ngcbCLDC_MAX_DC]
Map specifying the setup order of the biases.
Definition ngcdcsCLDC.hpp:651
int TelChan()
Return actual telemetry channel.
Definition ngcdcsCldcTel.cpp:80
int SetupKey(const char *key, const int *idx, const char *value, int *status=NULL)
Setup.
Definition ngcdcsCldcSetup.cpp:584
int VoltageDC(int num, double volt, int rangeCheck=1)
Set DC voltage.
Definition ngcdcsCLDC.cpp:1449
int Protection(int flag)
Enable/disable protection circuit.
Definition ngcdcsCLDC.cpp:1301
int clkMon2
Clock on monitor 2.
Definition ngcdcsCLDC.hpp:618
int Disable()
Call-back at transition to not operational state.
Definition ngcdcsCLDC.cpp:833
virtual double Reg2Volt(int reg, int chan, double corr=1.0)
Convert register value to voltage.
Definition ngcdcsCLDC.cpp:1919
double dacDelay
DAC delay (seconds)
Definition ngcdcsCLDC.hpp:639
int VoltageClk(int num, int l, double volt, int rangeCheck=1)
Set clock level.
Definition ngcdcsCLDC.cpp:1531
int StatusKey(const char *key, const int *idx, char *value, int *status=NULL)
Status.
Definition ngcdcsCldcStatus.cpp:450
int Enable(int check=1)
Call-back at transition to operational state.
Definition ngcdcsCLDC.cpp:607
int VoltageRegClk(int num, int l, int value, int rangeCheck=1)
Set clock hex-level.
Definition ngcdcsCLDC.cpp:1717
ngcdcs_tel_t tel[ngcdcsCLDC_MAX_TEL]
Internal telemetry.
Definition ngcdcsCLDC.hpp:642
virtual void DcMap(ngcdcs_dc_t *dv)
Bias channel mapping.
Definition ngcdcsCLDC.cpp:540
int Zero()
Set all voltages to zero.
Definition ngcdcsCLDC.cpp:1806
int Calibrate(int noSetup=0)
Calibrate (offset compensation)
Definition ngcdcsCldcCalib.cpp:25
void ClearCalibration()
Clear calibration.
Definition ngcdcsCldcCalib.cpp:175
char * VStatusString()
Get voltage status string.
Definition ngcdcsCLDC.cpp:248
int clkSetupMap[ngcbCLDC_MAX_CLK]
Map specifying the setup order of the clocks.
Definition ngcdcsCLDC.hpp:648
virtual int Volt2Reg(double *volt, int chan, double corr=1.0)
Convert voltage to register value.
Definition ngcdcsCLDC.cpp:1862
int TelDC(int num, double *volt)
Telemetry for DC-bias.
Definition ngcdcsCldcTel.cpp:154
double diodeBias
DiodeBias.
Definition ngcdcsCLDC.hpp:624
virtual int Adjust(int chan)
Voltage setup adjustement for channel.
Definition ngcdcsCLDC.cpp:1324
int GetTelCfg(size_t start)
Get internal telemetry configurarion (NGCII only)
Definition ngcdcsCldcTel.cpp:311
virtual int DacReg(int value, int chan)
Map value on DAC register channel.
Definition ngcdcsCLDC.cpp:1952
void TimeStamp(int chan)
Timstamp DAC channel (last setup)
Definition ngcdcsCLDC.cpp:859
virtual double ConvertTel(int value)
Convert telemetry register value.
Definition ngcdcsCldcTel.cpp:25
ngcdcsCLDC(const ngcb_route_t &r, int nc, int nb)
Constructor with route, number of clocks and number of biases.
Definition ngcdcsCLDC.cpp:28
virtual int PreampOffset(double volt)
Set preamplifier offset.
Definition ngcdcsCldcOffset.cpp:181
double lbnlTelGain
LBNL high voltage gain (telemetry)
Definition ngcdcsCLDC.hpp:633
int VSetup(int autoCtrl=0)
Apply voltage setup.
Definition ngcdcsCLDC.cpp:1001
#define ngcbCLDC_MAX_DC
Definition ngcbAddr.h:333
#define ngcbCLDC_STAT_ENABLED
Definition ngcbAddr.h:327
#define ngcbCLDC_MAX_CLK
Definition ngcbAddr.h:332
#define ngcbCLDC_STAT_DISABLED
Definition ngcbAddr.h:326
#define ngcbMOD_ERR
Definition ngcbOBJ.hpp:22
void ngcbCleanPath(char *name)
Definition ngcbFile.c:596
#define USE(x)
Definition ngcb.h:28
#define ngcdcsCLDC_CAL_MAX
Definition ngcdcsCLDC.hpp:43
#define ngcdcsCLDC_DCLK
Definition ngcdcsCLDC.hpp:38
#define ngcdcsCLDC_MAX_CHAN
Definition ngcdcsCLDC.hpp:53
#define ngcdcsCLDC_BUFSIZE
Definition ngcdcsCLDC.hpp:33
#define ngcdcsCLDC_VDIFF_MAX
Definition ngcdcsCLDC.hpp:48
#define ngcdcsCLDC_MAX_TEL
Definition ngcdcsCLDC.hpp:58
Definition ngcbIFC.hpp:72
Definition ngcdcsCLDC.hpp:103
int connected
Definition ngcdcsCLDC.hpp:105
ngcdcs_clk_t()
Constructor.
Definition ngcdcsCLDC.hpp:108
ngcdcs_dc_t level[ngcdcsCLDC_DCLK]
Definition ngcdcsCLDC.hpp:104
Definition ngcdcsCLDC.hpp:114
ngcdcs_clkv_t()
Constructor.
Definition ngcdcsCLDC.hpp:118
double volt[ngcdcsCLDC_DCLK]
Definition ngcdcsCLDC.hpp:115
Definition ngcdcsCLDC.hpp:63
char name[64]
Definition ngcdcsCLDC.hpp:73
double volt
Definition ngcdcsCLDC.hpp:64
int voltReg
Definition ngcdcsCLDC.hpp:70
int telChan
Definition ngcdcsCLDC.hpp:72
double telGain
Definition ngcdcsCLDC.hpp:67
double comp
Definition ngcdcsCLDC.hpp:68
double margin
Definition ngcdcsCLDC.hpp:69
char unit[4]
Definition ngcdcsCLDC.hpp:77
int connected
Definition ngcdcsCLDC.hpp:74
ngcdcs_dc_t()
Constructor.
Definition ngcdcsCLDC.hpp:80
double dacCorr
Definition ngcdcsCLDC.hpp:66
int dacChan
Definition ngcdcsCLDC.hpp:71
int directReg
Definition ngcdcsCLDC.hpp:75
double range[2]
Definition ngcdcsCLDC.hpp:65
int set
Definition ngcdcsCLDC.hpp:76
Definition ngcdcsTypes.hpp:44