mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 18:17:59 +02:00
Startingfnum (#40)
* starting fnum * by default starting fnum disabled in gui * insignificant change * adding binary * virtual eiger server working now * test:: namespace
This commit is contained in:

committed by
Erik Fröjdh

parent
e3f151851c
commit
6e4e2c4524
@ -1302,47 +1302,77 @@ int Beb_SetStartingFrameNumber(uint64_t value) {
|
||||
if (fd < 0) {
|
||||
FILE_LOG(logERROR, ("Set Start Frame Number FAIL\n"));
|
||||
return FAIL;
|
||||
} else {
|
||||
// since the read is not implemented in firmware yet
|
||||
Beb_deactivatedStartFrameNumber = value;
|
||||
}
|
||||
// since the read is not implemented in firmware yet
|
||||
Beb_deactivatedStartFrameNumber = value;
|
||||
|
||||
// decrement for firmware
|
||||
uint64_t valueInFirmware = value - 1;
|
||||
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_LSB_OFST, valueInFirmware & (0xffffffff));
|
||||
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST, (valueInFirmware >> 32) & (0xffffffff));
|
||||
Beb_close(fd,csp0base);
|
||||
}
|
||||
// decrement for firmware
|
||||
uint64_t valueInFirmware = value - 1;
|
||||
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_LSB_OFST, valueInFirmware & (0xffffffff));
|
||||
Beb_Write32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST, (valueInFirmware >> 32) & (0xffffffff));
|
||||
Beb_close(fd,csp0base);
|
||||
|
||||
uint64_t retval = -1;
|
||||
if ((Beb_GetStartingFrameNumber(&retval) == OK) && (retval == value)) {
|
||||
FILE_LOG(logINFO, ("Going to reset Frame Number\n"));
|
||||
Beb_ResetFrameNumber();
|
||||
}
|
||||
FILE_LOG(logINFO, ("Going to reset Frame Number\n"));
|
||||
Beb_ResetFrameNumber();
|
||||
return OK;
|
||||
}
|
||||
|
||||
int Beb_GetStartingFrameNumber(uint64_t* retval) {
|
||||
int Beb_GetStartingFrameNumber(uint64_t* retval, int tengigaEnable) {
|
||||
if (!Beb_activated) {
|
||||
*retval = Beb_deactivatedStartFrameNumber;
|
||||
return OK;
|
||||
}
|
||||
FILE_LOG(logDEBUG1, ("Getting start frame number\n"));
|
||||
|
||||
// since it is not implemented in firmware yet
|
||||
*retval = Beb_deactivatedStartFrameNumber;
|
||||
/*
|
||||
FILE_LOG(logDEBUG1, ("Getting start frame number\n"));
|
||||
u_int32_t* csp0base = 0;
|
||||
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_TEST_BASEADDR);
|
||||
int fd = Beb_open(&csp0base, XPAR_COUNTER_BASEADDR);
|
||||
if (fd < 0) {
|
||||
FILE_LOG(logERROR, ("Set Start Frame Number FAIL\n"));
|
||||
FILE_LOG(logERROR, ("Get Start Frame Number FAIL\n"));
|
||||
return FAIL;
|
||||
} else {
|
||||
*retval = Beb_Read32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST);
|
||||
uint32_t lretval = Beb_Read32(csp0base, UDP_HEADER_FRAME_NUMBER_MSB_OFST);
|
||||
*retval = (*retval << 32) | lretval;
|
||||
}
|
||||
|
||||
uint32_t temp = 0;
|
||||
if (!tengigaEnable) {
|
||||
uint64_t left1g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
|
||||
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
|
||||
left1g = ((left1g << 32) | temp) >> 16;
|
||||
++left1g; // increment for firmware
|
||||
|
||||
uint64_t right1g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
|
||||
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
|
||||
right1g = ((right1g << 32) | temp) >> 16;
|
||||
++right1g; // increment for firmware
|
||||
|
||||
Beb_close(fd,csp0base);
|
||||
if (left1g != right1g) {
|
||||
FILE_LOG(logERROR, ("Retrieved inconsistent frame numbers from 1g left %llu and right %llu\n",
|
||||
(long long int)left1g, (long long int)right1g));
|
||||
*retval = (left1g > right1g) ? left1g : right1g; // give max to set it to when stopping acq & different value
|
||||
return -2; // to differentiate between failed address mapping
|
||||
}
|
||||
*retval = left1g;
|
||||
}
|
||||
|
||||
else {
|
||||
uint64_t left10g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
|
||||
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
|
||||
left10g = ((left10g << 32) | temp) >> 16;
|
||||
++left10g; // increment for firmware
|
||||
|
||||
uint64_t right10g = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST);
|
||||
temp = Beb_Read32(csp0base, UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST);
|
||||
right10g = ((right10g << 32) | temp) >> 16;
|
||||
Beb_close(fd,csp0base);
|
||||
++right10g; // increment for firmware
|
||||
|
||||
if (left10g != right10g) {
|
||||
FILE_LOG(logERROR, ("Retrieved inconsistent frame numbers from `0g left %llu and right %llu\n",
|
||||
(long long int)left10g, (long long int)right10g));
|
||||
*retval = (left10g > right10g) ? left10g : right10g; // give max to set it to when stopping acq & different value
|
||||
return -2; // to differentiate between failed address mapping
|
||||
}
|
||||
*retval = left10g;
|
||||
}
|
||||
*/
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ void Beb_SetQuad(int value);
|
||||
int Beb_GetQuad();
|
||||
int Beb_SetDetectorPosition(int pos[]);
|
||||
int Beb_SetStartingFrameNumber(uint64_t value);
|
||||
int Beb_GetStartingFrameNumber(uint64_t* retval);
|
||||
int Beb_GetStartingFrameNumber(uint64_t* retval, int tengigaEnable);
|
||||
|
||||
uint16_t Beb_swap_uint16( uint16_t val);
|
||||
int Beb_open(u_int32_t** csp0base, u_int32_t offset);
|
||||
|
@ -202,9 +202,6 @@
|
||||
#define UDP_HEADER_Y_OFST (16)
|
||||
#define UDP_HEADER_Y_MSK (0xFFFF << UDP_HEADER_Y_OFST)
|
||||
|
||||
// udp header (frame number)
|
||||
#define UDP_HEADER_FRAME_NUMBER_LSB_OFST (0x0140)
|
||||
#define UDP_HEADER_FRAME_NUMBER_MSB_OFST (0x0160)
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
@ -666,7 +666,7 @@ int getStartingFrameNumber(uint64_t* retval) {
|
||||
*retval = eiger_virtual_startingframenumber;
|
||||
return OK;
|
||||
#else
|
||||
return Beb_GetStartingFrameNumber(retval);
|
||||
return Beb_GetStartingFrameNumber(retval, send_to_ten_gig);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1311,11 +1311,17 @@ int setDetectorPosition(int pos[]) {
|
||||
}
|
||||
|
||||
void setQuad(int value) {
|
||||
#ifndef VIRTUAL
|
||||
Beb_SetQuad(value);
|
||||
#endif
|
||||
}
|
||||
|
||||
int getQuad() {
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
#else
|
||||
return Beb_GetQuad();
|
||||
#endif
|
||||
}
|
||||
|
||||
int enableTenGigabitEthernet(int val) {
|
||||
@ -1793,11 +1799,17 @@ int stopStateMachine() {
|
||||
eiger_virtual_stop = 0;
|
||||
return OK;
|
||||
#else
|
||||
if ((Feb_Control_StopAcquisition() != STATUS_IDLE) || (!Beb_StopAcquisition()) ) {
|
||||
FILE_LOG(logERROR, ("failed to stop acquisition\n"));
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if ((Feb_Control_StopAcquisition() == STATUS_IDLE) & Beb_StopAcquisition())
|
||||
return OK;
|
||||
FILE_LOG(logERROR, ("failed to stop acquisition\n"));
|
||||
return FAIL;
|
||||
// ensure all have same starting frame numbers
|
||||
uint64_t retval = 0;
|
||||
if(Beb_GetStartingFrameNumber(&retval, send_to_ten_gig) == -2) {
|
||||
Beb_SetStartingFrameNumber(retval + 1);
|
||||
}
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -56,16 +56,34 @@ XPAR_PLB_LL_FIFO_AURORA_DUAL_CTRL_FEB_LEFT_BASEADDR
|
||||
/** Version Numbers */
|
||||
#define XPAR_VERSION 0xc6000000
|
||||
|
||||
|
||||
|
||||
/* Definitions for peripheral PLB_GPIO_TEST */
|
||||
#define XPAR_PLB_GPIO_TEST_BASEADDR 0xD1010000
|
||||
#define XPAR_PLB_GPIO_TEST_HIGHADDR 0xD101FFFF
|
||||
|
||||
// udp header (set frame number)
|
||||
#define UDP_HEADER_FRAME_NUMBER_LSB_OFST (0x0140)
|
||||
#define UDP_HEADER_FRAME_NUMBER_MSB_OFST (0x0160)
|
||||
|
||||
|
||||
|
||||
|
||||
/* Definitions for packet, frame and delay down counters */
|
||||
#define XPAR_COUNTER_BASEADDR 0xD1020000
|
||||
#define XPAR_COUNTER_HIGHADDR 0xD102FFFF
|
||||
|
||||
// udp header (get frame number)
|
||||
#define UDP_HEADER_GET_FNUM_1G_LEFT_LSB_OFST (0x0004)
|
||||
#define UDP_HEADER_GET_FNUM_1G_LEFT_MSB_OFST (0x0024)
|
||||
#define UDP_HEADER_GET_FNUM_1G_RIGHT_LSB_OFST (0x0044)
|
||||
#define UDP_HEADER_GET_FNUM_1G_RIGHT_MSB_OFST (0x0064)
|
||||
#define UDP_HEADER_GET_FNUM_10G_LEFT_LSB_OFST (0x0084)
|
||||
#define UDP_HEADER_GET_FNUM_10G_LEFT_MSB_OFST (0x00A4)
|
||||
#define UDP_HEADER_GET_FNUM_10G_RIGHT_LSB_OFST (0x00C4)
|
||||
#define UDP_HEADER_GET_FNUM_10G_RIGHT_MSB_OFST (0x00E4)
|
||||
|
||||
|
||||
|
||||
/* Definitions for peripheral PLB_LL_FIFO_AURORA_DUAL_CTRL_FEB_LEFT */
|
||||
#define XPAR_PLB_LL_FIFO_AURORA_DUAL_CTRL_FEB_LEFT_BASEADDR 0xC4100000
|
||||
|
Reference in New Issue
Block a user