mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 06:50:02 +02:00
x y and z coordinates are pushed into eiger server and its fixed in appropriate client side as well
This commit is contained in:
parent
ae72df7b14
commit
d2fd0cbee9
@ -1136,10 +1136,17 @@ void Beb_SetDetectorNumber(uint32_t detid) {
|
|||||||
cprintf(BG_RED,"Set Detector ID FAIL\n");
|
cprintf(BG_RED,"Set Detector ID FAIL\n");
|
||||||
return;
|
return;
|
||||||
}else{
|
}else{
|
||||||
uint32_t value = Beb_Read32(csp0base, UDP_HEADER_A_OFST);
|
uint32_t value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
||||||
value &= UDP_HEADER_X_MSK; // to keep previous x value
|
value &= UDP_HEADER_X_MSK; // to keep previous x value
|
||||||
Beb_Write32(csp0base, UDP_HEADER_A_OFST, value | ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
|
Beb_Write32(csp0base, UDP_HEADER_A_LEFT_OFST, value | ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
|
||||||
value = Beb_Read32(csp0base, UDP_HEADER_A_OFST);
|
value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
||||||
|
if((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK))
|
||||||
|
cprintf(BG_RED,"Set Detector ID FAIL\n");
|
||||||
|
|
||||||
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
||||||
|
value &= UDP_HEADER_X_MSK; // to keep previous x value
|
||||||
|
Beb_Write32(csp0base, UDP_HEADER_A_RIGHT_OFST, value | ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
|
||||||
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
||||||
if((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK))
|
if((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK))
|
||||||
cprintf(BG_RED,"Set Detector ID FAIL\n");
|
cprintf(BG_RED,"Set Detector ID FAIL\n");
|
||||||
|
|
||||||
@ -1155,7 +1162,6 @@ int Beb_SetDetectorPosition(int pos[]) {
|
|||||||
return OK;
|
return OK;
|
||||||
|
|
||||||
pos[0] = Beb_swap_uint16(pos[0]);
|
pos[0] = Beb_swap_uint16(pos[0]);
|
||||||
pos[1] = Beb_swap_uint16(pos[1]);
|
|
||||||
pos[2] = Beb_swap_uint16(pos[2]);
|
pos[2] = Beb_swap_uint16(pos[2]);
|
||||||
|
|
||||||
int ret = FAIL;
|
int ret = FAIL;
|
||||||
@ -1169,26 +1175,55 @@ int Beb_SetDetectorPosition(int pos[]) {
|
|||||||
}else{
|
}else{
|
||||||
uint32_t value = 0;
|
uint32_t value = 0;
|
||||||
ret = OK;
|
ret = OK;
|
||||||
// x
|
// x left
|
||||||
value = Beb_Read32(csp0base, UDP_HEADER_A_OFST);
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
||||||
value &= UDP_HEADER_ID_MSK; // to keep previous id value
|
value &= UDP_HEADER_ID_MSK; // to keep previous id value
|
||||||
Beb_Write32(csp0base, UDP_HEADER_A_OFST, value | ((pos[0] << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK));
|
Beb_Write32(csp0base, UDP_HEADER_A_LEFT_OFST, value | ((pos[0] << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK));
|
||||||
value = Beb_Read32(csp0base, UDP_HEADER_A_OFST);
|
value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
||||||
if((value & UDP_HEADER_X_MSK) != ((pos[0] << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK))
|
if((value & UDP_HEADER_X_MSK) != ((pos[0] << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK))
|
||||||
ret = FAIL;
|
ret = FAIL;
|
||||||
|
|
||||||
// y
|
// x right
|
||||||
// overwriting z anyway, so no need to look at previous z value
|
value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
|
||||||
Beb_Write32(csp0base, UDP_HEADER_B_OFST, ((pos[1] << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK));
|
value &= UDP_HEADER_ID_MSK; // to keep previous id value
|
||||||
value = Beb_Read32(csp0base, UDP_HEADER_B_OFST);
|
Beb_Write32(csp0base, UDP_HEADER_A_RIGHT_OFST, value | ((pos[0] << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK));
|
||||||
if(value != ((pos[1] << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK))
|
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
|
||||||
|
if((value & UDP_HEADER_X_MSK) != ((pos[0] << UDP_HEADER_X_OFST) & UDP_HEADER_X_MSK))
|
||||||
ret = FAIL;
|
ret = FAIL;
|
||||||
|
|
||||||
// z
|
|
||||||
value = Beb_Read32(csp0base, UDP_HEADER_B_OFST);
|
|
||||||
|
// y left
|
||||||
|
int posval = Beb_swap_uint16(pos[1]);
|
||||||
|
// overwriting z anyway, so no need to look at previous z value
|
||||||
|
Beb_Write32(csp0base, UDP_HEADER_B_LEFT_OFST, ((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK));
|
||||||
|
value = Beb_Read32(csp0base, UDP_HEADER_B_LEFT_OFST);
|
||||||
|
if(value != ((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK))
|
||||||
|
ret = FAIL;
|
||||||
|
|
||||||
|
// y right
|
||||||
|
posval = Beb_swap_uint16(pos[1]+1);
|
||||||
|
// overwriting z anyway, so no need to look at previous z value
|
||||||
|
Beb_Write32(csp0base, UDP_HEADER_B_RIGHT_OFST, ((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK));
|
||||||
|
value = Beb_Read32(csp0base, UDP_HEADER_B_RIGHT_OFST);
|
||||||
|
if(value != ((posval << UDP_HEADER_Y_OFST) & UDP_HEADER_Y_MSK))
|
||||||
|
ret = FAIL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// z left
|
||||||
|
value = Beb_Read32(csp0base, UDP_HEADER_B_LEFT_OFST);
|
||||||
value &= UDP_HEADER_Y_MSK; // to keep previous y value
|
value &= UDP_HEADER_Y_MSK; // to keep previous y value
|
||||||
Beb_Write32(csp0base, UDP_HEADER_B_OFST, value | ((pos[2] << UDP_HEADER_Z_OFST) & UDP_HEADER_Z_MSK));
|
Beb_Write32(csp0base, UDP_HEADER_B_LEFT_OFST, value | ((pos[2] << UDP_HEADER_Z_OFST) & UDP_HEADER_Z_MSK));
|
||||||
value = Beb_Read32(csp0base, UDP_HEADER_B_OFST);
|
value = Beb_Read32(csp0base, UDP_HEADER_B_LEFT_OFST);
|
||||||
|
if((value & UDP_HEADER_Z_MSK) != ((pos[2] << UDP_HEADER_Z_OFST) & UDP_HEADER_Z_MSK))
|
||||||
|
ret = FAIL;
|
||||||
|
|
||||||
|
// z right
|
||||||
|
value = Beb_Read32(csp0base, UDP_HEADER_B_RIGHT_OFST);
|
||||||
|
value &= UDP_HEADER_Y_MSK; // to keep previous y value
|
||||||
|
Beb_Write32(csp0base, UDP_HEADER_B_RIGHT_OFST, value | ((pos[2] << UDP_HEADER_Z_OFST) & UDP_HEADER_Z_MSK));
|
||||||
|
value = Beb_Read32(csp0base, UDP_HEADER_B_RIGHT_OFST);
|
||||||
if((value & UDP_HEADER_Z_MSK) != ((pos[2] << UDP_HEADER_Z_OFST) & UDP_HEADER_Z_MSK))
|
if((value & UDP_HEADER_Z_MSK) != ((pos[2] << UDP_HEADER_Z_OFST) & UDP_HEADER_Z_MSK))
|
||||||
ret = FAIL;
|
ret = FAIL;
|
||||||
|
|
||||||
@ -1196,8 +1231,13 @@ int Beb_SetDetectorPosition(int pos[]) {
|
|||||||
//close file pointer
|
//close file pointer
|
||||||
Beb_close(fd,csp0base);
|
Beb_close(fd,csp0base);
|
||||||
}
|
}
|
||||||
if (ret == OK)
|
if (ret == OK) {
|
||||||
printf("Position set to [%d, %d, %d]\n", Beb_swap_uint16(pos[0]), Beb_swap_uint16(pos[1]), Beb_swap_uint16(pos[2]));
|
cprintf(BLUE, "Position set to...\n"
|
||||||
|
"Left: [%d, %d, %d]\n"
|
||||||
|
"Right:[%d, %d, %d]\n",
|
||||||
|
Beb_swap_uint16(pos[0]), pos[1], Beb_swap_uint16(pos[2]),
|
||||||
|
Beb_swap_uint16(pos[0]), pos[1]+1, Beb_swap_uint16(pos[2]));
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -182,8 +182,11 @@
|
|||||||
#define TEN_GIGA_RIGHT_FRAME_DELAY_COUNTER 0x1e4
|
#define TEN_GIGA_RIGHT_FRAME_DELAY_COUNTER 0x1e4
|
||||||
|
|
||||||
// udp header (position, id)
|
// udp header (position, id)
|
||||||
#define UDP_HEADER_A_OFST 0x00C0
|
#define UDP_HEADER_A_LEFT_OFST 0x00C0
|
||||||
#define UDP_HEADER_B_OFST 0x00E0
|
#define UDP_HEADER_B_LEFT_OFST 0x00E0
|
||||||
|
#define UDP_HEADER_A_RIGHT_OFST 0x0100
|
||||||
|
#define UDP_HEADER_B_RIGHT_OFST 0x0120
|
||||||
|
|
||||||
#define UDP_HEADER_X_OFST (0)
|
#define UDP_HEADER_X_OFST (0)
|
||||||
#define UDP_HEADER_X_MSK (0xFFFF << UDP_HEADER_X_OFST)
|
#define UDP_HEADER_X_MSK (0xFFFF << UDP_HEADER_X_OFST)
|
||||||
#define UDP_HEADER_ID_OFST (16)
|
#define UDP_HEADER_ID_OFST (16)
|
||||||
|
Binary file not shown.
@ -1,9 +1,9 @@
|
|||||||
Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer
|
Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer
|
||||||
URL: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git
|
URL: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git
|
||||||
Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git
|
Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_detector_software.git
|
||||||
Repsitory UUID: 77d9fda91fa82c2b4259d64ca9d4d6b4fa4b647c
|
Repsitory UUID: 73bad32c4ab2c8cfb2687547f7da6f932b358c1a
|
||||||
Revision: 313
|
Revision: 314
|
||||||
Branch: developer
|
Branch: developer
|
||||||
Last Changed Author: Dhanya_Thattil
|
Last Changed Author: Dhanya_Thattil
|
||||||
Last Changed Rev: 1607
|
Last Changed Rev: 1609
|
||||||
Last Changed Date: 2017-10-12 14:50:11.000000002 +0200 ./FebRegisterDefs.h
|
Last Changed Date: 2017-10-23 11:45:17.000000002 +0200 ./Beb.c
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
//#define SVNPATH ""
|
//#define SVNPATH ""
|
||||||
#define SVNURL "git@git.psi.ch:sls_detectors_software/sls_detector_software.git"
|
#define SVNURL "git@git.psi.ch:sls_detectors_software/sls_detector_software.git"
|
||||||
//#define SVNREPPATH ""
|
//#define SVNREPPATH ""
|
||||||
#define SVNREPUUID "77d9fda91fa82c2b4259d64ca9d4d6b4fa4b647c"
|
#define SVNREPUUID "73bad32c4ab2c8cfb2687547f7da6f932b358c1a"
|
||||||
//#define SVNREV 0x1607
|
//#define SVNREV 0x1609
|
||||||
//#define SVNKIND ""
|
//#define SVNKIND ""
|
||||||
//#define SVNSCHED ""
|
//#define SVNSCHED ""
|
||||||
#define SVNAUTH "Dhanya_Thattil"
|
#define SVNAUTH "Dhanya_Thattil"
|
||||||
#define SVNREV 0x1607
|
#define SVNREV 0x1609
|
||||||
#define SVNDATE 0x20171012
|
#define SVNDATE 0x20171023
|
||||||
//
|
//
|
||||||
|
@ -6431,7 +6431,7 @@ int slsDetector::configureMAC(){
|
|||||||
pos[1] = 0;
|
pos[1] = 0;
|
||||||
} else {
|
} else {
|
||||||
pos[0] = posId / max;
|
pos[0] = posId / max;
|
||||||
pos[1] = posId % max;
|
pos[1] = (posId % max) * ((thisDetector->myDetectorType == EIGER) ? 2 : 1); // for horiz. udp ports
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user