mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-24 02:27:59 +02:00
WIP
This commit is contained in:
@ -846,7 +846,7 @@ void setNumGates(int val) {
|
||||
}
|
||||
}
|
||||
|
||||
int getNumExtGates() { return bus_r(ASIC_EXP_EXT_GATE_NUMBER_REG); }
|
||||
int getNumGates() { return bus_r(ASIC_EXP_EXT_GATE_NUMBER_REG); }
|
||||
|
||||
void updateGatePeriod() {
|
||||
uint64_t max = 0;
|
||||
@ -863,21 +863,27 @@ void updateGatePeriod() {
|
||||
ASIC_EXP_GATE_PERIOD_MSB_REG);
|
||||
}
|
||||
|
||||
int setExptime(int gateIndex, int64_t val) {
|
||||
int64_t getGatePeriod() {
|
||||
return get64BitReg(ASIC_EXP_GATE_PERIOD_LSB_REG,
|
||||
ASIC_EXP_GATE_PERIOD_MSB_REG) /
|
||||
(1E-9 * getFrequency(SYSTEM_C2));
|
||||
}
|
||||
|
||||
int setExpTime(int gateIndex, int64_t val) {
|
||||
uint32_t alsb = 0;
|
||||
uint32_t amsb = 0;
|
||||
switch (gateIndex) {
|
||||
case 0:
|
||||
alsb = ASIC_EXP_GATE_0_WIDTH_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_0_WIDTH_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_0_WIDTH_MSB_REG;
|
||||
break;
|
||||
case 1:
|
||||
alsb = ASIC_EXP_GATE_1_WIDTH_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_1_WIDTH_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_1_WIDTH_MSB_REG;
|
||||
break;
|
||||
case 2:
|
||||
alsb = ASIC_EXP_GATE_2_WIDTH_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_2_WIDTH_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_2_WIDTH_MSB_REG;
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR, ("Invalid gate index: %d\n", gateIndex));
|
||||
@ -905,19 +911,21 @@ int setExptime(int gateIndex, int64_t val) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
int64_t getExptime(int gateIndex) {
|
||||
int64_t getExpTime(int gateIndex) {
|
||||
uint32_t alsb = 0;
|
||||
uint32_t amsb = 0;
|
||||
switch (gateIndex) {
|
||||
case 0:
|
||||
alsb = ASIC_EXP_GATE_0_WIDTH_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_0_WIDTH_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_0_WIDTH_MSB_REG;
|
||||
break;
|
||||
case 1:
|
||||
alsb = ASIC_EXP_GATE_1_WIDTH_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_1_WIDTH_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_1_WIDTH_MSB_REG;
|
||||
break;
|
||||
case 2:
|
||||
alsb = ASIC_EXP_GATE_2_WIDTH_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_2_WIDTH_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_2_WIDTH_MSB_REG;
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR, ("Invalid gate index: %d\n", gateIndex));
|
||||
@ -932,15 +940,15 @@ int setGateDelay(int gateIndex, int64_t val) {
|
||||
switch (gateIndex) {
|
||||
case 0:
|
||||
alsb = ASIC_EXP_GATE_0_DELAY_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_0_DELAY_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_0_DELAY_MSB_REG;
|
||||
break;
|
||||
case 1:
|
||||
alsb = ASIC_EXP_GATE_1_DELAY_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_1_DELAY_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_1_DELAY_MSB_REG;
|
||||
break;
|
||||
case 2:
|
||||
alsb = ASIC_EXP_GATE_2_DELAY_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_2_DELAY_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_2_DELAY_MSB_REG;
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR, ("Invalid gate index: %d\n", gateIndex));
|
||||
@ -969,18 +977,20 @@ int setGateDelay(int gateIndex, int64_t val) {
|
||||
}
|
||||
|
||||
int64_t getGateDelay(int gateIndex) {
|
||||
uint32_t alsb = 0;
|
||||
uint32_t amsb = 0;
|
||||
switch (gateIndex) {
|
||||
case 0:
|
||||
alsb = ASIC_EXP_GATE_0_DELAY_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_0_DELAY_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_0_DELAY_MSB_REG;
|
||||
break;
|
||||
case 1:
|
||||
alsb = ASIC_EXP_GATE_1_DELAY_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_1_DELAY_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_1_DELAY_MSB_REG;
|
||||
break;
|
||||
case 2:
|
||||
alsb = ASIC_EXP_GATE_2_DELAY_LSB_REG;
|
||||
blsb = ASIC_EXP_GATE_2_DELAY_MSB_REG;
|
||||
amsb = ASIC_EXP_GATE_2_DELAY_MSB_REG;
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR, ("Invalid gate index: %d\n", gateIndex));
|
||||
@ -1205,16 +1215,6 @@ void setTiming(enum timingMode arg) {
|
||||
LOG(logERROR, ("Unknown timing mode %d\n", arg));
|
||||
return;
|
||||
}
|
||||
// internal gating
|
||||
if (arg == AUTO_TIMING || arg == TRIGGER_EXPOSURE) {
|
||||
setNumGates(1); // should be in firmware
|
||||
// TOOD: number of counters-> set appropriate gatewidth and
|
||||
// gatedelay to 0
|
||||
setMaxGatePulseWidth();
|
||||
}
|
||||
// external gating
|
||||
else {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1942,7 +1942,7 @@ void *start_timer(void *arg) {
|
||||
|
||||
int64_t periodNs = getPeriod();
|
||||
int numFrames = (getNumFrames() * getNumTriggers());
|
||||
int64_t expUs = getExpTime() / 1000;
|
||||
int64_t expUs = getGatePeriod() / 1000;
|
||||
|
||||
// int dr = setDynamicRange(-1);
|
||||
int imagesize = calculateDataBytes();
|
||||
|
@ -214,8 +214,10 @@ int64_t getPeriod();
|
||||
void setNumIntGates(int val);
|
||||
void setNumGates(int val);
|
||||
int getNumGates();
|
||||
int setExptime(int gateIndex, int64_t val);
|
||||
int64_t getExptime(int gateIndex);
|
||||
void updateGatePeriod();
|
||||
int64_t getGatePeriod();
|
||||
int setExpTime(int gateIndex, int64_t val);
|
||||
int64_t getExpTime(int gateIndex);
|
||||
int setGateDelay(int gateIndex, int64_t val);
|
||||
int64_t getGateDelay(int gateIndex);
|
||||
#endif
|
||||
|
@ -329,12 +329,12 @@ void function_table() {
|
||||
flist[F_UPDATE_RATE_CORRECTION] = &update_rate_correction;
|
||||
flist[F_GET_RECEIVER_PARAMETERS] = &get_receiver_parameters;
|
||||
flist[F_START_PATTERN] = &start_pattern;
|
||||
FLIST[F_SET_NUM_GATES] = &set_num_gates;
|
||||
FLIST[F_GET_NUM_GATES] = &get_num_gates;
|
||||
FLIST[F_SET_GATE_DELAY] = &set_gate_delay;
|
||||
FLIST[F_GET_GATE_DELAY] = &get_gate_delay;
|
||||
flist[F_GET_EXPTIME_ALL_GATES = &get_exptime_all_gates;
|
||||
flist[F_GET_GATE_DELAY_ALL_GATES = &get_gate_delay_all_gates;
|
||||
flist[F_SET_NUM_GATES] = &set_num_gates;
|
||||
flist[F_GET_NUM_GATES] = &get_num_gates;
|
||||
flist[F_SET_GATE_DELAY] = &set_gate_delay;
|
||||
flist[F_GET_GATE_DELAY] = &get_gate_delay;
|
||||
flist[F_GET_EXPTIME_ALL_GATES] = &get_exptime_all_gates;
|
||||
flist[F_GET_GATE_DELAY_ALL_GATES] = &get_gate_delay_all_gates;
|
||||
|
||||
// check
|
||||
if (NUM_DET_FUNCTIONS >= RECEIVER_ENUM_START) {
|
||||
@ -2107,7 +2107,7 @@ int get_exptime(int file_des) {
|
||||
gateIndex);
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
retval = getExptime(gateIndex);
|
||||
retval = getExpTime(gateIndex);
|
||||
LOG(logDEBUG1, ("retval exptime %lld ns\n", (long long int)retval));
|
||||
}
|
||||
#else
|
||||
@ -6953,8 +6953,12 @@ int get_receiver_parameters(int file_des) {
|
||||
if (n < 0)
|
||||
return printSocketReadError();
|
||||
|
||||
// exptime
|
||||
// exptime
|
||||
#ifdef MYTHEN3D
|
||||
i64 = getExpTime(0);
|
||||
#else
|
||||
i64 = getExpTime();
|
||||
#endif
|
||||
n += sendData(file_des, &i64, sizeof(i64), INT64);
|
||||
if (n < 0)
|
||||
return printSocketReadError();
|
||||
@ -7212,6 +7216,7 @@ int set_gate_delay(int file_des) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return Server_SendResult(file_des, INT64, NULL, 0);
|
||||
}
|
||||
@ -7228,19 +7233,18 @@ int get_gate_delay(int file_des) {
|
||||
#if !defined(MYTHEN3D)
|
||||
functionNotImplemented();
|
||||
#else
|
||||
// get only
|
||||
if (gateIndex < 0 || gateIndex > 2) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,
|
||||
"Could not set gate delay. Invalid gate index %d. "
|
||||
"Options [0-2]\n",
|
||||
gateIndex);
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
retval = getGateDelay(gateIndex);
|
||||
LOG(logDEBUG1,
|
||||
("retval gate delay %lld ns\n", (long long int)retval));
|
||||
}
|
||||
// get only
|
||||
if (gateIndex < 0 || gateIndex > 2) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,
|
||||
"Could not set gate delay. Invalid gate index %d. "
|
||||
"Options [0-2]\n",
|
||||
gateIndex);
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
retval = getGateDelay(gateIndex);
|
||||
LOG(logDEBUG1, ("retval gate delay %lld ns\n", (long long int)retval));
|
||||
}
|
||||
#endif
|
||||
return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
|
||||
}
|
||||
@ -7253,11 +7257,11 @@ int get_exptime_all_gates(int file_des) {
|
||||
#if !defined(MYTHEN3D)
|
||||
functionNotImplemented();
|
||||
#else
|
||||
for (int i = 0; i != 2; ++i) {
|
||||
retvals[i] = getExpTime(i);
|
||||
LOG(logDEBUG1, ("retval exptime %lld ns (index:%d)\n",
|
||||
(long long int)retvals[i], i));
|
||||
}
|
||||
for (int i = 0; i != 2; ++i) {
|
||||
retvals[i] = getExpTime(i);
|
||||
LOG(logDEBUG1, ("retval exptime %lld ns (index:%d)\n",
|
||||
(long long int)retvals[i], i));
|
||||
}
|
||||
#endif
|
||||
return Server_SendResult(file_des, INT64, retvals, sizeof(retvals));
|
||||
}
|
||||
@ -7270,11 +7274,11 @@ int get_gate_delay_all_gates(int file_des) {
|
||||
#if !defined(MYTHEN3D)
|
||||
functionNotImplemented();
|
||||
#else
|
||||
for (int i = 0; i != 2; ++i) {
|
||||
retvals[i] = getGateDelay(i);
|
||||
LOG(logDEBUG1, ("retval gate delay %lld ns (index:%d)\n",
|
||||
(long long int)retvals[i], i));
|
||||
}
|
||||
for (int i = 0; i != 2; ++i) {
|
||||
retvals[i] = getGateDelay(i);
|
||||
LOG(logDEBUG1, ("retval gate delay %lld ns (index:%d)\n",
|
||||
(long long int)retvals[i], i));
|
||||
}
|
||||
#endif
|
||||
return Server_SendResult(file_des, INT64, retvals, sizeof(retvals));
|
||||
}
|
||||
|
Reference in New Issue
Block a user