- Added support for EMBL PSD detectors for TRIS and AMOR.
This commit is contained in:
@@ -222,6 +222,12 @@
|
||||
int Delay_time_to_start; /* The DTS for the MDI in TOF mode */
|
||||
int Nbuff; /* The # buffers in TRANS mode */
|
||||
int Buff_size; /* The buffer size in TRANS mode */
|
||||
int xOff; /* X Offset in PSD mode */
|
||||
int yOff; /* Y Offset in PSD mode */
|
||||
int xFac; /* X factor in PSD mode */
|
||||
int yFac; /* Y factor in PSD mode */
|
||||
int xSize; /* xSize in PSD mode */
|
||||
int ySize; /* ySize in PSD mode */
|
||||
|
||||
struct dsc__descriptor_s Name_desc;
|
||||
|
||||
@@ -260,6 +266,12 @@
|
||||
{"-nbuff", ".sqhmNbuff", XrmoptionSepArg, (XPointer) NULL},
|
||||
{"-buff_size",".sqhmBuffSize", XrmoptionSepArg, (XPointer) NULL},
|
||||
{"-harsh", ".sqhmHarsh", XrmoptionNoArg, (XPointer) "1"},
|
||||
{"-xoff", ".sqhmxoff", XrmoptionNoArg, (XPointer) "1"},
|
||||
{"-yoff", ".sqhmyoff", XrmoptionNoArg, (XPointer) "1"},
|
||||
{"-xfac", ".sqhmxfac", XrmoptionNoArg, (XPointer) "1"},
|
||||
{"-yfac", ".sqhmyfac", XrmoptionNoArg, (XPointer) "1"},
|
||||
{"-xsize", ".sqhmxsize", XrmoptionNoArg, (XPointer) "1"},
|
||||
{"-ysize", ".sqhmyszie", XrmoptionNoArg, (XPointer) "1"},
|
||||
};
|
||||
|
||||
extern int C_gbl_status; /* Return status from C_... routines */
|
||||
@@ -659,7 +671,97 @@
|
||||
printf (" \"-buff_size %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
/*----------------------------------------------------------*/
|
||||
/*---------------------------------------------------------- -xoff */
|
||||
status = XrmGetResource (*db,
|
||||
StrJoin (buff, sizeof (buff),
|
||||
appName, ".sqhmxoff"),
|
||||
"ProgramName.Values",
|
||||
&type, &value);
|
||||
if (!status) {
|
||||
xOff = 100;
|
||||
}else if (sscanf (value.addr, "%d", &xOff) != 1) {
|
||||
printf (" \"-xoff %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}else if (xOff <= 0) {
|
||||
printf (" \"-xoff %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
/*---------------------------------------------------------- -yoff */
|
||||
status = XrmGetResource (*db,
|
||||
StrJoin (buff, sizeof (buff),
|
||||
appName, ".sqhmyoff"),
|
||||
"ProgramName.Values",
|
||||
&type, &value);
|
||||
if (!status) {
|
||||
yOff = 100;
|
||||
}else if (sscanf (value.addr, "%d", &yOff) != 1) {
|
||||
printf (" \"-yoff %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}else if (yOff <= 0) {
|
||||
printf (" \"-yoff %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
/*---------------------------------------------------------- -yfac */
|
||||
status = XrmGetResource (*db,
|
||||
StrJoin (buff, sizeof (buff),
|
||||
appName, ".sqhmyfac"),
|
||||
"ProgramName.Values",
|
||||
&type, &value);
|
||||
if (!status) {
|
||||
yFac = 10;
|
||||
}else if (sscanf (value.addr, "%d", &yFac) != 1) {
|
||||
printf (" \"-yfac %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}else if (yFac <= 0) {
|
||||
printf (" \"-yfac %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
/*---------------------------------------------------------- -xfac */
|
||||
status = XrmGetResource (*db,
|
||||
StrJoin (buff, sizeof (buff),
|
||||
appName, ".sqhmxfac"),
|
||||
"ProgramName.Values",
|
||||
&type, &value);
|
||||
if (!status) {
|
||||
xFac = 10;
|
||||
}else if (sscanf (value.addr, "%d", &xFac) != 1) {
|
||||
printf (" \"-xfac %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}else if (xFac <= 0) {
|
||||
printf (" \"-xfac %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
/*---------------------------------------------------------- -xsize */
|
||||
status = XrmGetResource (*db,
|
||||
StrJoin (buff, sizeof (buff),
|
||||
appName, ".sqhmxsize"),
|
||||
"ProgramName.Values",
|
||||
&type, &value);
|
||||
if (!status) {
|
||||
xSize = 256;
|
||||
}else if (sscanf (value.addr, "%d", &xSize) != 1) {
|
||||
printf (" \"-xsize %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}else if (xSize <= 0) {
|
||||
printf (" \"-xsize %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
/*---------------------------------------------------------- -ysize */
|
||||
status = XrmGetResource (*db,
|
||||
StrJoin (buff, sizeof (buff),
|
||||
appName, ".sqhmxsize"),
|
||||
"ProgramName.Values",
|
||||
&type, &value);
|
||||
if (!status) {
|
||||
ySize = 256;
|
||||
}else if (sscanf (value.addr, "%d", &ySize) != 1) {
|
||||
printf (" \"-ysize %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}else if (ySize <= 0) {
|
||||
printf (" \"-ysize %s\" is invalid!\n", value.addr);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
return True;
|
||||
}
|
||||
/*
|
||||
@@ -1440,6 +1542,14 @@ sh_basic:
|
||||
is1 = !EXIT_SUCCESS;
|
||||
opt = "-span";
|
||||
}
|
||||
}else if((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__HM_PSD){
|
||||
if(xSize <= 0) {
|
||||
is1 = !EXIT_SUCCESS;
|
||||
opt = "-xsize";
|
||||
}else if(ySize <= 0) {
|
||||
is1 = !EXIT_SUCCESS;
|
||||
opt = "-ysize";
|
||||
}
|
||||
}else if ((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__TRANS) {
|
||||
}else {
|
||||
is1 = !EXIT_SUCCESS;
|
||||
@@ -1486,6 +1596,29 @@ sh_basic:
|
||||
Req_buff.u.cnfg.u.tof.bank_0.n_cntrs = htons (Ncntrs);
|
||||
Req_buff.u.cnfg.u.tof.bank_0.edge_indx = htons (0);
|
||||
Req_buff.u.cnfg.u.tof.bank_0.bytes_per_bin = htons (Bytes_per_bin);
|
||||
}else if ((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__HM_PSD) {
|
||||
Req_buff.u.cnfg.u.psd.n_extra_bytes = htonl (0);
|
||||
Req_buff.u.cnfg.u.psd.n_edges = htons (1);
|
||||
Req_buff.u.cnfg.u.psd.n_banks = htons (1);
|
||||
Req_buff.u.cnfg.u.psd.xOffset = htons (xOff);
|
||||
Req_buff.u.cnfg.u.psd.yOffset = htons (yOff);
|
||||
Req_buff.u.cnfg.u.psd.xFactor = htons (xFac);
|
||||
Req_buff.u.cnfg.u.psd.yFactor = htons (yFac);
|
||||
Req_buff.u.cnfg.u.psd.xSize = htons (xSize);
|
||||
Req_buff.u.cnfg.u.psd.ySize = htons (ySize);
|
||||
|
||||
|
||||
Req_buff.u.cnfg.u.psd.edge_0.n_bins = htonl (Nbins);
|
||||
Req_buff.u.cnfg.u.psd.edge_0.flag = htonl (0); /* Fixed bin span */
|
||||
|
||||
Req_buff.u.cnfg.u.psd.edge_0.edges[0] = htonl (0);
|
||||
Req_buff.u.cnfg.u.psd.edge_0.edges[1] = htonl (Span);
|
||||
Req_buff.u.cnfg.u.psd.preset_delay = htonl (Delay_time_to_start);
|
||||
|
||||
Req_buff.u.cnfg.u.psd.bank_0.first = htons (Lo_cntr);
|
||||
Req_buff.u.cnfg.u.psd.bank_0.n_cntrs = htons (xSize*ySize);
|
||||
Req_buff.u.cnfg.u.psd.bank_0.edge_indx = htons (0);
|
||||
Req_buff.u.cnfg.u.psd.bank_0.bytes_per_bin = htons (Bytes_per_bin);
|
||||
}else if ((Hm_mode & ~SQHM__SUB_MODE_MSK) == SQHM__TRANS) {
|
||||
Req_buff.u.cnfg.u.trans.n_buffs = htonl (Nbuff);
|
||||
Req_buff.u.cnfg.u.trans.n_bytes = htons (Buff_size);
|
||||
|
||||
Reference in New Issue
Block a user