Merge pull request #242 from slsdetectorgroup/m3dacfix

m3dacfix
This commit is contained in:
Dhanya Thattil 2021-06-08 12:19:46 +02:00 committed by GitHub
commit ac5dece221
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
65 changed files with 573 additions and 485 deletions

View File

@ -1,7 +1,8 @@
initialchecks 0 #initialchecks 0
############################################# #############################################
### edit with hostname or IP address of your detector ### edit with hostname or IP address of your detector
############################################ ############################################
#hostname bchip181+
hostname bchip181+ hostname bchip181+
############################################# #############################################
@ -27,7 +28,7 @@ rx_zmqport 50003
############################################# #############################################
### edit with 1 Gbs IP of PC where you will run the GUI ### edit with 1 Gbs IP of PC where you will run the GUI
############################################ ############################################
zmqip 129.129.202.136 zmqip 129.129.202.98
zmqport 50001 zmqport 50001
@ -39,11 +40,12 @@ rx_zmqstream 1
frames 100000 frames 100000
period 0.0006 period 0.0006
exptime 0.00035
############################################# #############################################
### edit with directory you want to write to ### edit with directory you want to write to
############################################ ############################################
fpath /mnt/moench_data/scratch/ fpath /mnt/moench_data/scratch1/
fwrite 0 fwrite 0

View File

@ -1749,7 +1749,7 @@ class Detector(CppDetectorApi):
Note Note
---- ----
[Eiger] Sets vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr and vcp to the same value. \n [Eiger] Sets vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr and vcp to the same value. \n
[Mythen3] Sets vth1, vth2 and vth3 to the same value. [Mythen3] Sets vth1, vth2 and vth3 to the same value for enabled counters.
""" """
return self.getDAC(dacIndex.VTHRESHOLD) return self.getDAC(dacIndex.VTHRESHOLD)
@ -2381,6 +2381,7 @@ class Detector(CppDetectorApi):
Note Note
----- -----
Each element in list can be 0 - 2 and must be non repetitive. Each element in list can be 0 - 2 and must be non repetitive.
Enabling counters sets vth dacs to remembered values and disabling sets them to disabled values.
Example Example
----------- -----------

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -447,19 +447,6 @@ class slsInterpolation
etax=(-l+r)/sum; etax=(-l+r)/sum;
etay=(-b+t)/sum; etay=(-b+t)/sum;
} }
/* if (etax<-1 || etax>1 || etay<-1 || etay>1) { */
/* cout << "**********" << etax << " " << etay << endl; */
/* for (int ix=0; ix<3; ix++) { */
/* for (int iy=0; iy<3; iy++) { */
/* cout << cl[iy+3*ix] << "\t" ; */
/* } */
/* cout << endl; */
/* } */
/* cout << sum << " " << l << " " << r << " " << t << " " << b << endl; */
/* } */
if (etax>=0 && etay>=0) if (etax>=0 && etay>=0)
return TOP_RIGHT; return TOP_RIGHT;
@ -479,6 +466,29 @@ class slsInterpolation
} }
static int calcEta3X(double *cl, double &etax, double &etay, double &sum) {
double l,r,t,b;
sum=cl[0]+cl[1]+cl[2]+cl[3]+cl[4]+cl[5]+cl[6]+cl[7]+cl[8];
if (sum>0) {
l=cl[3];
r=cl[5];
b=cl[1];
t=cl[7];
etax=(-l+r)/sum;
etay=(-b+t)/sum;
}
return -1;
}
static int calcEta3X(int *cl, double &etax, double &etay, double &sum) {
double cli[9];
for (int ix=0; ix<9; ix++) cli[ix]=cl[ix];
return calcEta3X(cli, etax, etay, sum);
}
/* static int calcMyEta(double totquad, int quad, double *cl, double &etax, double &etay) { */ /* static int calcMyEta(double totquad, int quad, double *cl, double &etax, double &etay) { */
/* double l,r,t,b, sum; */ /* double l,r,t,b, sum; */
/* int yoff; */ /* int yoff; */
@ -537,21 +547,6 @@ class slsInterpolation
/* static int calcEta3X(double *cl, double &etax, double &etay, double &sum) { */
/* double l,r,t,b; */
/* sum=cl[0]+cl[1]+cl[2]+cl[3]+cl[4]+cl[5]+cl[6]+cl[7]+cl[8]; */
/* if (sum>0) { */
/* l=cl[3]; */
/* r=cl[5]; */
/* b=cl[1]; */
/* t=cl[7]; */
/* etax=(-l+r)/sum; */
/* etay=(-b+t)/sum; */
/* } */
/* return -1; */
/* } */
/* static int calcEta3X(int *cl, double &etax, double &etay, double &sum) { */ /* static int calcEta3X(int *cl, double &etax, double &etay, double &sum) { */
/* double l,r,t,b; */ /* double l,r,t,b; */
/* sum=cl[0]+cl[1]+cl[2]+cl[3]+cl[4]+cl[5]+cl[6]+cl[7]+cl[8]; */ /* sum=cl[0]+cl[1]+cl[2]+cl[3]+cl[4]+cl[5]+cl[6]+cl[7]+cl[8]; */

View File

@ -109,6 +109,9 @@
#define SYSTEM_STATUS_R_PLL_LCKD_MSK (0x00000001 << SYSTEM_STATUS_R_PLL_LCKD_OFST) #define SYSTEM_STATUS_R_PLL_LCKD_MSK (0x00000001 << SYSTEM_STATUS_R_PLL_LCKD_OFST)
#define SYSTEM_STATUS_RDO_PLL_LCKD_OFST (2) #define SYSTEM_STATUS_RDO_PLL_LCKD_OFST (2)
#define SYSTEM_STATUS_RDO_PLL_LCKD_MSK (0x00000001 << SYSTEM_STATUS_RDO_PLL_LCKD_OFST) #define SYSTEM_STATUS_RDO_PLL_LCKD_MSK (0x00000001 << SYSTEM_STATUS_RDO_PLL_LCKD_OFST)
#define SYSTEM_STATUS_SLV_BRD_DTCT_OFST (31)
#define SYSTEM_STATUS_SLV_BRD_DTCT_MSK (0x00000001 << SYSTEM_STATUS_SLV_BRD_DTCT_OFST)
/* Config RW regiseter */ /* Config RW regiseter */
#define CONFIG_REG (0x20 * REG_OFFSET + BASE_CONTROL) #define CONFIG_REG (0x20 * REG_OFFSET + BASE_CONTROL)

View File

@ -5,8 +5,8 @@
#include "RegisterDefs.h" #include "RegisterDefs.h"
#include "clogger.h" #include "clogger.h"
#include "common.h" #include "common.h"
#include "mythen3.h"
#include "loadPattern.h" #include "loadPattern.h"
#include "mythen3.h"
#include "sharedMemory.h" #include "sharedMemory.h"
#include "sls/versionAPI.h" #include "sls/versionAPI.h"
#ifdef VIRTUAL #ifdef VIRTUAL
@ -21,7 +21,6 @@
#include <time.h> #include <time.h>
#endif #endif
// Global variable from slsDetectorServer_funcs // Global variable from slsDetectorServer_funcs
extern int debugflag; extern int debugflag;
extern int updateFlag; extern int updateFlag;
@ -47,7 +46,7 @@ enum detectorSettings thisSettings;
sls_detector_module *detectorModules = NULL; sls_detector_module *detectorModules = NULL;
int *detectorChans = NULL; int *detectorChans = NULL;
int *detectorDacs = NULL; int *detectorDacs = NULL;
int *channelMask=NULL; int *channelMask = NULL;
int32_t clkPhase[NUM_CLOCKS] = {}; int32_t clkPhase[NUM_CLOCKS] = {};
uint32_t clkDivider[NUM_CLOCKS] = {}; uint32_t clkDivider[NUM_CLOCKS] = {};
@ -379,7 +378,6 @@ void allocateDetectorStructureMemory() {
memset(channelMask, 0, NCHIP * NCHAN * sizeof(char)); memset(channelMask, 0, NCHIP * NCHAN * sizeof(char));
detectorDacs = malloc(NDAC * sizeof(int)); detectorDacs = malloc(NDAC * sizeof(int));
LOG(logDEBUG1, LOG(logDEBUG1,
("modules from 0x%x to 0x%x\n", detectorModules, detectorModules)); ("modules from 0x%x to 0x%x\n", detectorModules, detectorModules));
LOG(logDEBUG1, ("chans from 0x%x to 0x%x\n", detectorChans, detectorChans)); LOG(logDEBUG1, ("chans from 0x%x to 0x%x\n", detectorChans, detectorChans));
@ -519,7 +517,7 @@ void setupDetector() {
powerChip(1); powerChip(1);
if (!initError) { if (!initError) {
setChipStatusRegister(CSR_default); setChipStatusRegister(CSR_default);
} }
setAllTrimbits(DEFAULT_TRIMBIT_VALUE); setAllTrimbits(DEFAULT_TRIMBIT_VALUE);
@ -935,11 +933,17 @@ void setCounterMask(uint32_t arg) {
} }
LOG(logINFO, ("\tUpdating Vth dacs\n")); LOG(logINFO, ("\tUpdating Vth dacs\n"));
enum DACINDEX vthdacs[] = {M_VTH1, M_VTH2, M_VTH3};
for (int i = 0; i < NCOUNTERS; ++i) { for (int i = 0; i < NCOUNTERS; ++i) {
// if change in enable // if change in enable
if ((arg & (1 << i)) ^ (oldmask & (1 << i))) { if ((arg & (1 << i)) ^ (oldmask & (1 << i))) {
// will disable if counter disabled // disable, disable value
setDAC(VTH1, vthEnabledVals[i], 0); int value = DEFAULT_COUNTER_DISABLED_VTH_VAL;
// enable, set saved values
if (arg & (1 << i)) {
value = vthEnabledVals[i];
}
setGeneralDAC(vthdacs[i], value, 0);
} }
} }
} }
@ -1057,7 +1061,7 @@ int64_t getMeasurementTime() {
/* parameters - module, speed, readout */ /* parameters - module, speed, readout */
int setDACS(int* dacs){ int setDACS(int *dacs) {
for (int i = 0; i < NDAC; ++i) { for (int i = 0; i < NDAC; ++i) {
if (dacs[i] != -1) { if (dacs[i] != -1) {
setDAC((enum DACINDEX)i, dacs[i], 0); setDAC((enum DACINDEX)i, dacs[i], 0);
@ -1074,17 +1078,16 @@ int setDACS(int* dacs){
return OK; return OK;
} }
int setModule(sls_detector_module myMod, char *mess) { int setModule(sls_detector_module myMod, char *mess) {
LOG(logINFO, ("Setting module\n")); LOG(logINFO, ("Setting module\n"));
if (setChipStatusRegister(myMod.reg)){ if (setChipStatusRegister(myMod.reg)) {
sprintf(mess, "Could not CSR from module\n"); sprintf(mess, "Could not CSR from module\n");
LOG(logERROR, (mess)); LOG(logERROR, (mess));
return FAIL; return FAIL;
} }
if (setDACS(myMod.dacs)){ if (setDACS(myMod.dacs)) {
sprintf(mess, "Could not set dacs\n"); sprintf(mess, "Could not set dacs\n");
LOG(logERROR, (mess)); LOG(logERROR, (mess));
return FAIL; return FAIL;
@ -1093,7 +1096,7 @@ int setModule(sls_detector_module myMod, char *mess) {
for (int i = 0; i < NCOUNTERS; ++i) { for (int i = 0; i < NCOUNTERS; ++i) {
if (myMod.eV[i] >= 0) { if (myMod.eV[i] >= 0) {
setThresholdEnergy(i, myMod.eV[i]); setThresholdEnergy(i, myMod.eV[i]);
}else{ } else {
setThresholdEnergy(i, -1); setThresholdEnergy(i, -1);
} }
} }
@ -1114,6 +1117,7 @@ int setModule(sls_detector_module myMod, char *mess) {
} }
int setTrimbits(int *trimbits) { int setTrimbits(int *trimbits) {
LOG(logINFOBLUE, ("Setting trimbits\n"));
// remember previous run clock // remember previous run clock
uint32_t prevRunClk = clkDivider[SYSTEM_C0]; uint32_t prevRunClk = clkDivider[SYSTEM_C0];
patternParameters *pat = NULL; patternParameters *pat = NULL;
@ -1130,7 +1134,7 @@ int setTrimbits(int *trimbits) {
pat = setChannelRegisterChip(ichip, channelMask, pat = setChannelRegisterChip(ichip, channelMask,
trimbits); // change here!!! trimbits); // change here!!!
if (pat) { if (pat) {
error |= loadPattern(pat); error |= loadPattern(logDEBUG5, pat);
if (error == 0) if (error == 0)
startPattern(); startPattern();
free(pat); free(pat);
@ -1263,45 +1267,52 @@ void setThresholdEnergy(int counterIndex, int eV) {
/* parameters - dac, hv */ /* parameters - dac, hv */
void setDAC(enum DACINDEX ind, int val, int mV) { void setDAC(enum DACINDEX ind, int val, int mV) {
// invalid value
if (val < 0) { if (val < 0) {
return; return;
} }
// out of scope, NDAC + 1 for vthreshold
if (ind == M_VTHRESHOLD) { if ((int)ind > NDAC + 1) {
LOG(logINFO, LOG(logERROR, ("Unknown dac index %d\n", ind));
("Setting Threshold voltages to %d %s\n", val, (mV ? "mv" : "")));
setDAC(M_VTH1, val, mV);
setDAC(M_VTH2, val, mV);
setDAC(M_VTH3, val, mV);
return; return;
} }
char *dac_names[] = {DAC_NAMES};
// remember vthx values and set 2800 if counter disabled // threshold dacs (remember value, vthreshold: skip disabled)
uint32_t counters = getCounterMask(); if (ind == M_VTHRESHOLD || ind == M_VTH1 || ind == M_VTH2 ||
int vthdacs[] = {M_VTH1, M_VTH2, M_VTH3}; ind == M_VTH3) {
for (int i = 0; i < NCOUNTERS; ++i) { char *dac_names[] = {DAC_NAMES};
if (vthdacs[i] == (int)ind) { int vthdacs[] = {M_VTH1, M_VTH2, M_VTH3};
// remember enabled values for vthx uint32_t counters = getCounterMask();
if (val != DEFAULT_COUNTER_DISABLED_VTH_VAL) { for (int i = 0; i < NCOUNTERS; ++i) {
int vthval = val; if ((int)ind == vthdacs[i] || ind == M_VTHRESHOLD) {
if (mV) { int dacval = val;
if (LTC2620_D_VoltageToDac(val, &vthval) == FAIL) { // if not disabled value, remember value
return; if (dacval != DEFAULT_COUNTER_DISABLED_VTH_VAL) {
// convert mv to dac
if (mV) {
if (LTC2620_D_VoltageToDac(val, &dacval) == FAIL) {
return;
}
} }
vthEnabledVals[i] = dacval;
LOG(logINFO,
("Remembering %s [%d]\n", dac_names[ind], dacval));
} }
vthEnabledVals[i] = vthval; // if vthreshold,skip for disabled counters
LOG(logINFO, ("Remembering %s [%d]\n", dac_names[ind], vthval)); if ((ind == M_VTHRESHOLD) && (!(counters & (1 << i)))) {
} continue;
// set vthx to disable val, if counter disabled }
if (!(counters & (1 << i))) { setGeneralDAC(vthdacs[i], val, mV);
LOG(logINFO, ("Disabling %s\n", dac_names[ind]));
val = DEFAULT_COUNTER_DISABLED_VTH_VAL;
mV = 0;
} }
} }
return;
} }
setGeneralDAC(ind, val, mV);
}
void setGeneralDAC(enum DACINDEX ind, int val, int mV) {
char *dac_names[] = {DAC_NAMES};
LOG(logDEBUG1, ("Setting dac[%d - %s]: %d %s \n", (int)ind, dac_names[ind], LOG(logDEBUG1, ("Setting dac[%d - %s]: %d %s \n", (int)ind, dac_names[ind],
val, (mV ? "mV" : "dac units"))); val, (mV ? "mV" : "dac units")));
int dacval = val; int dacval = val;
@ -1329,20 +1340,29 @@ void setDAC(enum DACINDEX ind, int val, int mV) {
int getDAC(enum DACINDEX ind, int mV) { int getDAC(enum DACINDEX ind, int mV) {
if (ind == M_VTHRESHOLD) { if (ind == M_VTHRESHOLD) {
int ret[NCOUNTERS] = {0}; int ret = -1, ret1 = -1;
ret[0] = getDAC(M_VTH1, mV); // get only for enabled counters
ret[1] = getDAC(M_VTH2, mV); uint32_t counters = getCounterMask();
ret[2] = getDAC(M_VTH3, mV); int vthdacs[] = {M_VTH1, M_VTH2, M_VTH3};
for (int i = 0; i < NCOUNTERS; ++i) {
if ((ret[0] == ret[1]) && (ret[1] == ret[2])) { if (counters & (1 << i)) {
LOG(logINFO, ("\tvthreshold match\n")); ret1 = getDAC(vthdacs[i], mV);
return ret[0]; // first enabled counter
} else { if (ret == -1) {
LOG(logERROR, ("\tvthreshold mismatch vth1:%d vth2:%d " ret = ret1;
"vth3:%d\n", }
ret[0], ret[1], ret[2])); // different values for enabled counters
return -1; else if (ret1 != ret) {
return -1;
}
}
} }
if (ret == -1) {
LOG(logERROR, ("\tvthreshold mismatch (of enabled counters)\n"));
} else {
LOG(logINFO, ("\tvthreshold match %d\n", ret));
}
return ret;
} }
if (!mV) { if (!mV) {
@ -1373,8 +1393,9 @@ int setHighVoltage(int val) {
return highvoltage; return highvoltage;
} }
int isMaster(){ int isMaster() {
return !(bus_r(0x18) >> 31); return !((bus_r(SYSTEM_STATUS_REG) & SYSTEM_STATUS_SLV_BRD_DTCT_MSK) >>
SYSTEM_STATUS_SLV_BRD_DTCT_OFST);
} }
/* parameters - timing */ /* parameters - timing */
@ -2643,7 +2664,7 @@ int setChipStatusRegister(int csr) {
pat = setChipStatusRegisterPattern(csr); pat = setChipStatusRegisterPattern(csr);
if (pat) { if (pat) {
error |= loadPattern(pat); error |= loadPattern(logDEBUG5, pat);
if (!error) if (!error)
startPattern(); startPattern();
free(pat); free(pat);
@ -2663,7 +2684,7 @@ int setChipStatusRegister(int csr) {
return OK; return OK;
} }
int setGainCaps(int caps){ int setGainCaps(int caps) {
// Update only gain caps, leave the rest of the CSR unchanged // Update only gain caps, leave the rest of the CSR unchanged
int csr = getChipStatusRegister(); int csr = getChipStatusRegister();
csr &= ~GAIN_MASK; csr &= ~GAIN_MASK;
@ -2674,7 +2695,7 @@ int setGainCaps(int caps){
return setChipStatusRegister(csr); return setChipStatusRegister(csr);
} }
int getGainCaps(){ int getGainCaps() {
int csr = getChipStatusRegister(); int csr = getChipStatusRegister();
int caps = csrToGainCaps(csr); int caps = csrToGainCaps(csr);
return caps; return caps;

View File

@ -1,6 +1,7 @@
#ifndef LOADPATTERN_H #ifndef LOADPATTERN_H
#define LOADPATTERN_H #define LOADPATTERN_H
#include "Pattern.h" #include "Pattern.h"
#include "clogger.h"
int loadPattern(patternParameters *pat); int loadPattern(enum TLogLevel printLevel, patternParameters *pat);
#endif #endif

View File

@ -25,7 +25,7 @@
#include "blackfin.h" #include "blackfin.h"
#endif #endif
#if defined(MYTHEN3D) #ifdef MYTHEN3D
#include "mythen3.h" #include "mythen3.h"
#endif #endif
@ -289,8 +289,6 @@ int64_t getMeasurementTime();
int setModule(sls_detector_module myMod, char *mess); int setModule(sls_detector_module myMod, char *mess);
#endif #endif
#ifdef MYTHEN3D #ifdef MYTHEN3D
int setBit(int ibit, int patword);
int clearBit(int ibit, int patword);
int setTrimbits(int *trimbits); int setTrimbits(int *trimbits);
int setAllTrimbits(int val); int setAllTrimbits(int val);
int getAllTrimbits(); int getAllTrimbits();
@ -319,6 +317,9 @@ int setOnChipDAC(enum ONCHIP_DACINDEX ind, int chipIndex, int val);
int getOnChipDAC(enum ONCHIP_DACINDEX ind, int chipIndex); int getOnChipDAC(enum ONCHIP_DACINDEX ind, int chipIndex);
#endif #endif
void setDAC(enum DACINDEX ind, int val, int mV); void setDAC(enum DACINDEX ind, int val, int mV);
#ifdef MYTHEN3D
void setGeneralDAC(enum DACINDEX ind, int val, int mV);
#endif
int getDAC(enum DACINDEX ind, int mV); int getDAC(enum DACINDEX ind, int mV);
int getMaxDacSteps(); int getMaxDacSteps();
#if defined(CHIPTESTBOARDD) || defined(MOENCHD) #if defined(CHIPTESTBOARDD) || defined(MOENCHD)
@ -360,7 +361,7 @@ int isMaster();
int setGainCaps(int caps); int setGainCaps(int caps);
int getGainCaps(); int getGainCaps();
int setChipStatusRegister(int csr); int setChipStatusRegister(int csr);
int setDACS(int* dacs); int setDACS(int *dacs);
#endif #endif
#if defined(GOTTHARDD) || defined(MYTHEN3D) #if defined(GOTTHARDD) || defined(MYTHEN3D)
void setExtSignal(int signalIndex, enum externalSignalFlag mode); void setExtSignal(int signalIndex, enum externalSignalFlag mode);

View File

@ -1,7 +1,7 @@
#include "readDefaultPattern.h"
#include "loadPattern.h" #include "loadPattern.h"
#include "clogger.h" #include "clogger.h"
#include "common.h" #include "common.h"
#include "readDefaultPattern.h"
#include "sls/ansi.h" #include "sls/ansi.h"
#include "sls/sls_detector_defs.h" #include "sls/sls_detector_defs.h"
#include "slsDetectorServer_defs.h" #include "slsDetectorServer_defs.h"
@ -14,6 +14,7 @@
#include <unistd.h> #include <unistd.h>
extern char initErrorMessage[MAX_STR_LENGTH]; extern char initErrorMessage[MAX_STR_LENGTH];
extern enum TLogLevel trimmingPrint;
#ifndef MYTHEN3D #ifndef MYTHEN3D
extern uint64_t writePatternIOControl(uint64_t word); extern uint64_t writePatternIOControl(uint64_t word);
@ -24,82 +25,83 @@ extern uint64_t setPatternWaitTime(int level, uint64_t t);
extern void setPatternLoop(int level, int *startAddr, int *stopAddr, extern void setPatternLoop(int level, int *startAddr, int *stopAddr,
int *nLoop); int *nLoop);
int loadPattern(patternParameters *pat) { int loadPattern(enum TLogLevel printLevel, patternParameters *pat) {
LOG(logINFOBLUE, ("Loading Pattern\n"));
int ret = OK;
trimmingPrint = printLevel;
int ret=OK; for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) {
if ((i % 10 == 0) && pat->word[i] != 0) {
for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) { LOG(logDEBUG5, ("Setting Pattern Word (addr:0x%x, word:0x%llx)\n",
if ((i % 10 == 0) && pat->word[i] != 0) { i, (long long int)pat->word[i]));
LOG(logINFO, ("Setting Pattern Word (addr:0x%x, word:0x%llx)\n",
i, (long long int)pat->word[i]));
}
writePatternWord(i, pat->word[i]);
}
#ifndef MYTHEN3D
if (ret == OK) {
uint64_t retval64 = writePatternIOControl(pat->ioctrl);
//validate64(pat->ioctrl, retval64, "set pattern IO Control", HEX);
}
#endif
if (ret == OK) {
int numLoops = -1;
int retval0 = pat->limits[0];
int retval1 = pat->limits[1];
setPatternLoop(-1, &retval0, &retval1, &numLoops);
//validate(pat->limits[0], retval0,
// "set pattern Limits start address", HEX);
//validate(pat->limits[1], retval1,
// "set pattern Limits start address", HEX);
} }
uint64_t retval64; writePatternWord(i, pat->word[i]);
if (ret == OK) { }
for (int i = 0; i <= 2; ++i) { #ifndef MYTHEN3D
char msg[128]; if (ret == OK) {
int retval0 = -1, retval1 = -1, numLoops = -1; uint64_t retval64 = writePatternIOControl(pat->ioctrl);
// validate64(pat->ioctrl, retval64, "set pattern IO Control", HEX);
}
#endif
if (ret == OK) {
int numLoops = -1;
int retval0 = pat->limits[0];
int retval1 = pat->limits[1];
setPatternLoop(-1, &retval0, &retval1, &numLoops);
// validate(pat->limits[0], retval0,
// "set pattern Limits start address", HEX);
// validate(pat->limits[1], retval1,
// "set pattern Limits start address", HEX);
}
uint64_t retval64;
if (ret == OK) {
for (int i = 0; i <= 2; ++i) {
char msg[128];
int retval0 = -1, retval1 = -1, numLoops = -1;
// patloop // patloop
retval0 = pat->loop[i * 2 + 0]; retval0 = pat->loop[i * 2 + 0];
retval1 = pat->loop[i * 2 + 1]; retval1 = pat->loop[i * 2 + 1];
numLoops = pat->nloop[i]; numLoops = pat->nloop[i];
setPatternLoop(i, &retval0, &retval1, &numLoops); setPatternLoop(i, &retval0, &retval1, &numLoops);
memset(msg, 0, sizeof(msg)); memset(msg, 0, sizeof(msg));
sprintf(msg, "set pattern Loop %d start address", i); sprintf(msg, "set pattern Loop %d start address", i);
//validate(pat->loop[i * 2 + 0], retval0, msg, HEX); // validate(pat->loop[i * 2 + 0], retval0, msg, HEX);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
memset(msg, 0, sizeof(msg)); memset(msg, 0, sizeof(msg));
sprintf(msg, "set pattern Loop %d stop address", i); sprintf(msg, "set pattern Loop %d stop address", i);
//validate(pat->loop[i * 2 + 1], retval1, msg, HEX); // validate(pat->loop[i * 2 + 1], retval1, msg, HEX);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
memset(msg, 0, sizeof(msg)); memset(msg, 0, sizeof(msg));
sprintf(msg, "set pattern Loop %d num loops", i); sprintf(msg, "set pattern Loop %d num loops", i);
//validate(pat->nloop[i], numLoops, msg, HEX); // validate(pat->nloop[i], numLoops, msg, HEX);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
// patwait // patwait
memset(msg, 0, sizeof(msg)); memset(msg, 0, sizeof(msg));
sprintf(msg, "set pattern Loop %d wait address", i); sprintf(msg, "set pattern Loop %d wait address", i);
retval0 = setPatternWaitAddress(i, pat->wait[i]); retval0 = setPatternWaitAddress(i, pat->wait[i]);
//validate(pat->wait[i], retval0, msg, HEX); // validate(pat->wait[i], retval0, msg, HEX);
if (ret == FAIL) { if (ret == FAIL) {
break; break;
} }
// patwaittime // patwaittime
memset(msg, 0, sizeof(msg)); memset(msg, 0, sizeof(msg));
sprintf(msg, "set pattern Loop %d wait time", i); sprintf(msg, "set pattern Loop %d wait time", i);
retval64 = setPatternWaitTime(i, pat->waittime[i]); retval64 = setPatternWaitTime(i, pat->waittime[i]);
//validate64(pat->waittime[i], retval64, msg, HEX); // validate64(pat->waittime[i], retval64, msg, HEX);
if (retval64 == FAIL) { if (retval64 == FAIL) {
break; break;
} }
} }
} }
return ret; trimmingPrint = logINFO;
return ret;
} }

View File

@ -642,9 +642,9 @@ int set_timing_mode(int file_des) {
} }
// get // get
retval = getTiming(); retval = getTiming();
#ifndef MYTHEN3D #ifndef MYTHEN3D
validate((int)arg, (int)retval, "set timing mode", DEC); validate((int)arg, (int)retval, "set timing mode", DEC);
#endif #endif
LOG(logDEBUG1, ("Timing Mode: %d\n", retval)); LOG(logDEBUG1, ("Timing Mode: %d\n", retval));
return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
@ -1238,8 +1238,8 @@ int validateAndSetDac(enum dacIndex ind, int val, int mV) {
ret = OK; ret = OK;
} else { } else {
ret = FAIL; ret = FAIL;
sprintf(mess, "Setting dac %d : wrote %d but read %d\n", sprintf(mess, "Setting dac %d : wrote %d but read %d\n",
serverDacIndex, val, retval); serverDacIndex, val, retval);
LOG(logERROR, (mess)); LOG(logERROR, (mess));
} }
} }
@ -1552,7 +1552,7 @@ int set_module(int file_des) {
// check index // check index
#if !(defined(EIGERD) || defined(MYTHEN3D)) #if !(defined(EIGERD) || defined(MYTHEN3D))
//TODO! Check if this is used for any detector // TODO! Check if this is used for any detector
switch (module.reg) { switch (module.reg) {
#ifdef JUNGFRAUD #ifdef JUNGFRAUD
case DYNAMICGAIN: case DYNAMICGAIN:
@ -7576,7 +7576,7 @@ int set_pattern(int file_des) {
patternParameters *pat = malloc(sizeof(patternParameters)); patternParameters *pat = malloc(sizeof(patternParameters));
memset(pat, 0, sizeof(patternParameters)); memset(pat, 0, sizeof(patternParameters));
// ignoring endianness for eiger // ignoring endianness for eiger
if (receiveData(file_des, pat, sizeof(patternParameters), INT32) < 0) { if (receiveData(file_des, pat, sizeof(patternParameters), INT32) < 0) {
if (pat != NULL) if (pat != NULL)
free(pat); free(pat);
@ -7587,10 +7587,12 @@ int set_pattern(int file_des) {
LOG(logINFO, ("Setting Pattern from structure\n")); LOG(logINFO, ("Setting Pattern from structure\n"));
LOG(logINFO, LOG(logINFO,
("Setting Pattern Word (printing every 10 words that are not 0\n")); ("Setting Pattern Word (printing every 10 words that are not 0\n"));
/****************************************************************************************************************/ /****************************************************************************************************************/
/* I SUGGEST TO VALIDATE THE VALUES HERE AND THEN WRITE THE PATTERN IN A SEPARATE FUNCTION WHICH COULD BE REUSED*/ /* I SUGGEST TO VALIDATE THE VALUES HERE AND THEN WRITE THE PATTERN IN A
/* added loadPattern.c/h - the same func could be reused also in readDefaultPattern */ * SEPARATE FUNCTION WHICH COULD BE REUSED*/
/***************************************************************************************************************/ /* added loadPattern.c/h - the same func could be reused also in
* readDefaultPattern */
/***************************************************************************************************************/
for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) { for (int i = 0; i < MAX_PATTERN_LENGTH; ++i) {
if ((i % 10 == 0) && pat->word[i] != 0) { if ((i % 10 == 0) && pat->word[i] != 0) {
@ -7664,7 +7666,7 @@ int set_pattern(int file_des) {
} }
} }
} }
/******* DOWN TO HERE ***********/ /******* DOWN TO HERE ***********/
} }
if (pat != NULL) if (pat != NULL)
free(pat); free(pat);
@ -8372,7 +8374,7 @@ int get_all_threshold_energy(int file_des) {
return Server_SendResult(file_des, INT32, retvals, sizeof(retvals)); return Server_SendResult(file_des, INT32, retvals, sizeof(retvals));
} }
int get_master(int file_des){ int get_master(int file_des) {
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
int retval = -1; int retval = -1;
@ -8387,7 +8389,7 @@ int get_master(int file_des){
return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
} }
int get_csr(int file_des){ int get_csr(int file_des) {
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
int retval = -1; int retval = -1;
@ -8402,7 +8404,7 @@ int get_csr(int file_des){
return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
} }
int set_gain_caps(int file_des){ int set_gain_caps(int file_des) {
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
int arg = 0; int arg = 0;
@ -8418,14 +8420,14 @@ int set_gain_caps(int file_des){
#else #else
if (Server_VerifyLock() == OK) { if (Server_VerifyLock() == OK) {
setGainCaps(arg); setGainCaps(arg);
retval = getChipStatusRegister(); //TODO! fix retval = getChipStatusRegister(); // TODO! fix
LOG(logDEBUG1, ("gain caps retval: %u\n", retval)); LOG(logDEBUG1, ("gain caps retval: %u\n", retval));
} }
#endif #endif
return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
} }
int get_gain_caps(int file_des){ int get_gain_caps(int file_des) {
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
// int arg = 0; // int arg = 0;

View File

@ -1273,7 +1273,9 @@ class Detector {
/** [Mythen3] */ /** [Mythen3] */
Result<uint32_t> getCounterMask(Positions pos = {}) const; Result<uint32_t> getCounterMask(Positions pos = {}) const;
/** [Mythen3] countermask bit set for each counter index enabled */ /** [Mythen3] countermask bit set for each counter index enabled. Enabling
* counters sets vth dacs to remembered values and disabling sets them to
* disabled values. Setting vth dacs explicitly overwrites them. */
void setCounterMask(uint32_t countermask, Positions pos = {}); void setCounterMask(uint32_t countermask, Positions pos = {});
Result<int> getNumberOfGates(Positions pos = {}) const; Result<int> getNumberOfGates(Positions pos = {}) const;
@ -1308,8 +1310,7 @@ class Detector {
Result<bool> getMaster(Positions pos = {}) const; Result<bool> getMaster(Positions pos = {}) const;
// TODO! check if we really want to expose this !!!!!
//TODO! check if we really want to expose this !!!!!
Result<int> getChipStatusRegister(Positions pos = {}) const; Result<int> getChipStatusRegister(Positions pos = {}) const;
void setGainCaps(int caps, Positions pos = {}); void setGainCaps(int caps, Positions pos = {});

View File

@ -1867,7 +1867,8 @@ std::string CmdProxy::Counters(int action) {
if (action == defs::HELP_ACTION) { if (action == defs::HELP_ACTION) {
os << "[i0] [i1] [i2]... \n\t[Mythen3] List of counters indices " os << "[i0] [i1] [i2]... \n\t[Mythen3] List of counters indices "
"enabled. Each element in list can be 0 - 2 and must be non " "enabled. Each element in list can be 0 - 2 and must be non "
"repetitive." "repetitive. Enabling counters sets vth dacs to remembered "
"values and disabling sets them to disabled values."
<< '\n'; << '\n';
} else if (action == defs::GET_ACTION) { } else if (action == defs::GET_ACTION) {
if (!args.empty()) { if (!args.empty()) {
@ -1981,12 +1982,12 @@ std::string CmdProxy::GateDelay(int action) {
return os.str(); return os.str();
} }
std::string CmdProxy::GainCaps(int action) {
std::string CmdProxy::GainCaps(int action){
std::ostringstream os; std::ostringstream os;
os << cmd << ' '; os << cmd << ' ';
if (action == defs::HELP_ACTION) { if (action == defs::HELP_ACTION) {
os << "[cap1, cap2, ...]\n\t[Mythen3] gain, options: C10pre, C15sh, C30sh, C50sh, C225ACsh, C15pre" os << "[cap1, cap2, ...]\n\t[Mythen3] gain, options: C10pre, C15sh, "
"C30sh, C50sh, C225ACsh, C15pre"
<< '\n'; << '\n';
} else if (action == defs::GET_ACTION) { } else if (action == defs::GET_ACTION) {
if (!args.empty()) if (!args.empty())
@ -1994,7 +1995,7 @@ std::string CmdProxy::GainCaps(int action){
auto tmp = det->getGainCaps(); auto tmp = det->getGainCaps();
sls::Result<defs::M3_GainCaps> csr; sls::Result<defs::M3_GainCaps> csr;
for (auto val : tmp){ for (auto val : tmp) {
if (val) if (val)
csr.push_back(static_cast<defs::M3_GainCaps>(val)); csr.push_back(static_cast<defs::M3_GainCaps>(val));
} }
@ -2005,7 +2006,7 @@ std::string CmdProxy::GainCaps(int action){
WrongNumberOfParameters(1); WrongNumberOfParameters(1);
} }
int caps = 0; int caps = 0;
for (const auto& arg:args){ for (const auto &arg : args) {
if (arg != "0") if (arg != "0")
caps |= sls::StringTo<defs::M3_GainCaps>(arg); caps |= sls::StringTo<defs::M3_GainCaps>(arg);
} }

View File

@ -10,7 +10,8 @@ std::string GetHelpDac(std::string dac) {
"[dac or mV value][(optional unit) mV] \n\t[Eiger][Mythen3] " "[dac or mV value][(optional unit) mV] \n\t[Eiger][Mythen3] "
"Detector threshold voltage for single photon counters.\n\t[Eiger] " "Detector threshold voltage for single photon counters.\n\t[Eiger] "
"Sets vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr and vcp to the same " "Sets vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr and vcp to the same "
"value. \n\t[Mythen3] Sets vth1, vth2 and vth3 to the same value."); "value. \n\t[Mythen3] Sets vth1, vth2 and vth3 to the same value "
"for enabled counters.");
} }
if (dac == "vsvp") { if (dac == "vsvp") {
return std::string( return std::string(
@ -134,17 +135,18 @@ std::string GetHelpDac(std::string dac) {
if (dac == "vth1") { if (dac == "vth1") {
return std::string( return std::string(
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for first " "[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for first "
"detector threshold voltage."); "detector threshold voltage. Overwrites even if counter disabled.");
} }
if (dac == "vth2") { if (dac == "vth2") {
return std::string( return std::string(
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for " "[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for "
"second detector threshold voltage."); "second detector threshold voltage. Overwrites even if counter "
"disabled.");
} }
if (dac == "vth3") { if (dac == "vth3") {
return std::string( return std::string(
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for third " "[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for third "
"detector threshold voltage."); "detector threshold voltage. Overwrites even if counter disabled.");
} }
if (dac == "vcal_n") { if (dac == "vcal_n") {
return std::string( return std::string(

View File

@ -30,73 +30,73 @@ TEST_CASE("dac", "[.cmd][.dacs]") {
} }
} }
// eiger // eiger
// REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vthreshold"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vsvp"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vsvn"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vtgstv"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vcmp_ll"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vcmp_lr"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vcal"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rl"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rr"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"rxb_rb"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"rxb_lb"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vcp"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vcn"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"iodelay"}, -1, GET));
// jungfrau // jungfrau
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdd_prot", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdd_prot"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_com", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_com"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_prech", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_prech"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_pixbuf", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_pixbuf"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
// gotthard // gotthard
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascn_pb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascp_pb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vout_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcasc_out"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"ib_test_c"}, -1, GET));
// mythen3 // mythen3
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper_n"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vipre"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdcsh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth2"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth3"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_n"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_p"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcassh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcas"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vicin", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vicin"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vipre_out"}, -1, GET));
// gotthard2 // gotthard2
REQUIRE_THROWS(proxy.Call("vref_h_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_h_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_rstore", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_rstore"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_1st", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_1st"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_l_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_l_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_cs", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_cs"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_fd", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_fd"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc2"}, -1, GET));
} }
} }

View File

@ -27,9 +27,9 @@ void test_dac(defs::dacIndex index, const std::string &dacname, int dacvalue) {
} }
// other detectors // other detectors
else { else {
proxy.Call(dacname, {dacstr}, -1, PUT, oss_set); proxy.Call("dac", {dacname, dacstr}, -1, PUT, oss_set);
REQUIRE(oss_set.str() == "dac " + dacname + " " + dacstr + "\n"); REQUIRE(oss_set.str() == "dac " + dacname + " " + dacstr + "\n");
proxy.Call(dacname, {}, -1, GET, oss_get); proxy.Call("dac", {dacname}, -1, GET, oss_get);
REQUIRE(oss_get.str() == "dac " + dacname + " " + dacstr + "\n"); REQUIRE(oss_get.str() == "dac " + dacname + " " + dacstr + "\n");
} }
// Reset all dacs to previous value // Reset all dacs to previous value

View File

@ -34,64 +34,64 @@ TEST_CASE("Setting and reading back GOTTHARD dacs", "[.cmd][.dacs]") {
SECTION("vref_comp") { test_dac(defs::VREF_COMP, "vref_comp", 350); } SECTION("vref_comp") { test_dac(defs::VREF_COMP, "vref_comp", 350); }
SECTION("ib_test_c") { test_dac(defs::IB_TESTC, "ib_test_c", 2001); } SECTION("ib_test_c") { test_dac(defs::IB_TESTC, "ib_test_c", 2001); }
// eiger // eiger
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vthreshold"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvn"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtgstv"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_ll"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_lr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rl"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_rb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_lb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcn"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"iodelay"}, -1, GET));
// jungfrau // jungfrau
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdd_prot", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdd_prot"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_com", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_com"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_prech", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_prech"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_pixbuf", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_pixbuf"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_ds"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
// mythen3 // mythen3
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper_n"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vipre"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdcsh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth2"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth3"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_n"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_p"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcassh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcas"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vicin", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vicin"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vipre_out"}, -1, GET));
// gotthard2 // gotthard2
REQUIRE_THROWS(proxy.Call("vref_h_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_h_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_rstore", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_rstore"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_1st", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_1st"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_l_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_l_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_cs", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_cs"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_fd", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_fd"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc2"}, -1, GET));
} }
} }

View File

@ -52,59 +52,59 @@ TEST_CASE("Setting and reading back GOTTHARD2 dacs", "[.cmd][.dacs]") {
SECTION("vb_opa_fd") { test_dac(defs::VB_OPA_FD, "vb_opa_fd", 0); } SECTION("vb_opa_fd") { test_dac(defs::VB_OPA_FD, "vb_opa_fd", 0); }
SECTION("vcom_adc2") { test_dac(defs::VCOM_ADC2, "vcom_adc2", 1400); } SECTION("vcom_adc2") { test_dac(defs::VCOM_ADC2, "vcom_adc2", 1400); }
// eiger // eiger
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vthreshold"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvn"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtgstv"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_ll"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_lr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rl"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_rb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_lb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcn"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"iodelay"}, -1, GET));
// gotthard // gotthard
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascn_pb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascp_pb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vout_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcasc_out"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"ib_test_c"}, -1, GET));
// jungfrau // jungfrau
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdd_prot", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdd_prot"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_com", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_com"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vref_prech", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vref_prech"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_pixbuf", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_pixbuf"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
// mythen3 // mythen3
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper_n"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vipre"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdcsh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth2"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth3"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_n"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_p"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcassh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcas"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vicin", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vicin"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vipre_out"}, -1, GET));
} }
} }

View File

@ -37,72 +37,72 @@ TEST_CASE("Setting and reading back MOENCH dacs", "[.cmd][.dacs]") {
SECTION("ibias_sfp") { test_dac(defs::IBIAS_SFP, "ibias_sfp", 900); } SECTION("ibias_sfp") { test_dac(defs::IBIAS_SFP, "ibias_sfp", 900); }
// eiger // eiger
REQUIRE_THROWS(proxy.Call("vthreshold", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vthreshold"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvn"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtgstv"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_ll"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_lr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rl"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_rb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_lb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcn"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"iodelay"}, -1, GET));
// jungfrau // jungfrau
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdd_prot", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdd_prot"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_com", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_com"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_prech", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_prech"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_pixbuf", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_pixbuf"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
// gotthard // gotthard
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascn_pb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascp_pb"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vout_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcasc_out"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vin_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"ib_test_c"}, -1, GET));
// mythen3 // mythen3
REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vrshaper_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vrshaper_n"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vipre", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vipre"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdcsh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdcsh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth2"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vth3", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vth3"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_n", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_n"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal_p", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal_p"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcassh", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcassh"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcas", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcas"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vicin", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vicin"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vipre_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vipre_out"}, -1, GET));
// gotthard2 // gotthard2
REQUIRE_THROWS(proxy.Call("vref_h_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_h_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_rstore", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_rstore"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_1st", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_1st"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_l_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_l_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_cs", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_cs"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_fd", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_fd"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc2"}, -1, GET));
} }
} }

View File

@ -49,69 +49,125 @@ TEST_CASE("Setting and reading back MYTHEN3 dacs", "[.cmd][.dacs]") {
auto vth1 = det.getDAC(defs::VTH1, false); auto vth1 = det.getDAC(defs::VTH1, false);
auto vth2 = det.getDAC(defs::VTH2, false); auto vth2 = det.getDAC(defs::VTH2, false);
auto vth3 = det.getDAC(defs::VTH3, false); auto vth3 = det.getDAC(defs::VTH3, false);
auto mask = det.getCounterMask();
{ {
std::ostringstream oss; std::ostringstream oss;
proxy.Call("vthreshold", {"1234"}, -1, PUT, oss); proxy.Call("dac", {"vthreshold", "1234"}, -1, PUT, oss);
REQUIRE(oss.str() == "dac vthreshold 1234\n"); REQUIRE(oss.str() == "dac vthreshold 1234\n");
} }
{ {
std::ostringstream oss; std::ostringstream oss;
proxy.Call("vthreshold", {}, -1, GET, oss); proxy.Call("dac", {"vthreshold"}, -1, GET, oss);
REQUIRE(oss.str() == "dac vthreshold 1234\n"); REQUIRE(oss.str() == "dac vthreshold 1234\n");
} }
// disabling counters change vth values
proxy.Call("counters", {"0"}, -1, PUT);
{
std::ostringstream oss1, oss2, oss3;
proxy.Call("dac", {"vth1"}, -1, GET, oss1);
REQUIRE(oss1.str() == "dac vth1 1234\n");
proxy.Call("dac", {"vth2"}, -1, GET, oss2);
REQUIRE(oss2.str() == "dac vth2 2800\n");
proxy.Call("dac", {"vth3"}, -1, GET, oss3);
REQUIRE(oss3.str() == "dac vth3 2800\n");
}
// vthreshold changes vth for only enabled counters
REQUIRE_NOTHROW(proxy.Call("dac", {"vthreshold", "2100"}, -1, PUT));
{
std::ostringstream oss;
proxy.Call("dac", {"vthreshold"}, -1, GET, oss);
REQUIRE(oss.str() == "dac vthreshold 2100\n");
std::ostringstream oss1, oss2, oss3;
proxy.Call("dac", {"vth1"}, -1, GET, oss1);
REQUIRE(oss1.str() == "dac vth1 2100\n");
proxy.Call("dac", {"vth2"}, -1, GET, oss2);
REQUIRE(oss2.str() == "dac vth2 2800\n");
proxy.Call("dac", {"vth3"}, -1, GET, oss3);
REQUIRE(oss3.str() == "dac vth3 2800\n");
}
// vth overwrite vth even if counter disabled
{
std::ostringstream oss;
proxy.Call("dac", {"vth2", "2200"}, -1, PUT);
proxy.Call("dac", {"vth2"}, -1, GET, oss);
REQUIRE(oss.str() == "dac vth2 2200\n");
}
// counters enabled, sets remembered values
proxy.Call("counters", {"0", "1", "2"}, -1, PUT);
{
std::ostringstream oss1, oss2, oss3;
proxy.Call("dac", {"vth1"}, -1, GET, oss1);
REQUIRE(oss1.str() == "dac vth1 2100\n");
proxy.Call("dac", {"vth2"}, -1, GET, oss2);
REQUIRE(oss2.str() == "dac vth2 2200\n");
proxy.Call("dac", {"vth3"}, -1, GET, oss3);
REQUIRE(oss3.str() == "dac vth3 2100\n");
}
// counters enabled, sets remembered values
proxy.Call("counters", {"0", "1"}, -1, PUT);
{
std::ostringstream oss1, oss2, oss3;
proxy.Call("dac", {"vth1"}, -1, GET, oss1);
REQUIRE(oss1.str() == "dac vth1 2100\n");
proxy.Call("dac", {"vth2"}, -1, GET, oss2);
REQUIRE(oss2.str() == "dac vth2 2200\n");
proxy.Call("dac", {"vth3"}, -1, GET, oss3);
REQUIRE(oss3.str() == "dac vth3 2800\n");
}
// Reset dacs after test // Reset dacs after test
for (int i = 0; i != det.size(); ++i) { for (int i = 0; i != det.size(); ++i) {
det.setCounterMask(mask[i], {i});
det.setDAC(defs::VTH1, vth1[i], false, {i}); det.setDAC(defs::VTH1, vth1[i], false, {i});
det.setDAC(defs::VTH2, vth2[i], false, {i}); det.setDAC(defs::VTH2, vth2[i], false, {i});
det.setDAC(defs::VTH3, vth3[i], false, {i}); det.setDAC(defs::VTH3, vth3[i], false, {i});
} }
} }
REQUIRE_THROWS(proxy.Call("vsvp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vsvn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vsvn"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vtrim", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vtrim"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vrpreamp", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vrpreamp"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vrshaper", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vrshaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vtgstv", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vtgstv"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_ll", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_ll"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_lr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_lr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcal", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcal"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rl", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rl"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcmp_rr", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcmp_rr"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_rb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_rb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("rxb_lb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"rxb_lb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcn", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcn"}, -1, GET));
// REQUIRE_THROWS(proxy.Call("vishaper", {}, -1, GET)); // REQUIRE_THROWS(proxy.Call("dac", {"vishaper"}, -1, GET));
REQUIRE_THROWS(proxy.Call("iodelay", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"iodelay"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascn_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascn_pb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcascp_pb", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcascp_pb"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vout_cm", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vout_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcasc_out", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcasc_out"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_cm", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_cm"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("ib_test_c", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"ib_test_c"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_h_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_h_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_rstore", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_rstore"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_1st", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_1st"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_comp_fe", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_comp_fe"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc1", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc1"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_prech", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_prech"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_l_adc", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_l_adc"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vref_cds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vref_cds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_cs", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_cs"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_opa_fd", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_opa_fd"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vcom_adc2", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vcom_adc2"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_ds", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_ds"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_comp", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_comp"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vb_pixbuf", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vb_pixbuf"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vin_com", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vin_com"}, -1, GET));
REQUIRE_THROWS(proxy.Call("vdd_prot", {}, -1, GET)); REQUIRE_THROWS(proxy.Call("dac", {"vdd_prot"}, -1, GET));
} }
} }

View File

@ -6,7 +6,7 @@
#define APIJUNGFRAU 0x210225 #define APIJUNGFRAU 0x210225
#define APIMOENCH 0x210225 #define APIMOENCH 0x210225
#define APIEIGER 0x210225 #define APIEIGER 0x210225
#define APIMYTHEN3 0x210225
#define APILIB 0x210225 #define APILIB 0x210225
#define APIRECEIVER 0x210225 #define APIRECEIVER 0x210225
#define APIGUI 0x210225 #define APIGUI 0x210225
#define APIMYTHEN3 0x210608