mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 11:20:04 +02:00
commit
ac5dece221
@ -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
|
||||||
|
|
||||||
|
@ -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.
BIN
settingsdir/mythen3/fast/12000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/fast/12000eV/trim.sn0000
Normal file
Binary file not shown.
BIN
settingsdir/mythen3/fast/4000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/fast/4000eV/trim.sn0000
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
settingsdir/mythen3/fast/6000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/fast/6000eV/trim.sn0000
Normal file
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.
BIN
settingsdir/mythen3/highgain/12000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/highgain/12000eV/trim.sn0000
Normal file
Binary file not shown.
BIN
settingsdir/mythen3/highgain/4000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/highgain/4000eV/trim.sn0000
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
settingsdir/mythen3/highgain/6000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/highgain/6000eV/trim.sn0000
Normal file
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.
BIN
settingsdir/mythen3/standard/12000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/standard/12000eV/trim.sn0000
Normal file
Binary file not shown.
BIN
settingsdir/mythen3/standard/4000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/standard/4000eV/trim.sn0000
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
settingsdir/mythen3/standard/6000eV/trim.sn0000
Normal file
BIN
settingsdir/mythen3/standard/6000eV/trim.sn0000
Normal file
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.
@ -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]; */
|
||||||
|
@ -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)
|
||||||
|
Binary file not shown.
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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 = {});
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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(
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user