mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 12:57:13 +02:00
fix using real detectors, moving readconfig to end (due to initialization)
This commit is contained in:
@ -170,7 +170,6 @@ void Beb_GetModuleConfiguration(int *master, int *top, int *normal) {
|
||||
LOG(logDEBUG1, ("Beb: value =0x%x\n", ret));
|
||||
if (ret & BEB_CONFIG_TOP_RD_MSK) {
|
||||
*top = 1;
|
||||
Beb_top = 1;
|
||||
}
|
||||
if (ret & BEB_CONFIG_MASTER_RD_MSK)
|
||||
*master = 1;
|
||||
@ -298,6 +297,8 @@ int Beb_IsTransmitting(int *retval, int tengiga, int waitForDelay) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
void Beb_SetTopVariable(int val) { Beb_top = val;}
|
||||
|
||||
int Beb_SetTop(enum TOPINDEX ind) {
|
||||
if (!Beb_activated)
|
||||
return 0;
|
||||
@ -308,6 +309,7 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
if (fd < 0) {
|
||||
LOG(logERROR, ("Set Top FAIL, could not open fd in Beb\n"));
|
||||
return 0;
|
||||
}
|
||||
value = Beb_Read32(csp0base, BEB_CONFIG_WR_OFST);
|
||||
switch (ind) {
|
||||
case TOP_HARDWARE:
|
||||
@ -340,9 +342,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
top_names[ind]));
|
||||
Beb_close(fd, csp0base);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetMaster(enum MASTERINDEX ind) {
|
||||
int Beb_SetMaster(enum MASTERINDEX ind) {
|
||||
if (!Beb_activated)
|
||||
return 0;
|
||||
|
||||
@ -381,59 +383,60 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
return 0;
|
||||
}
|
||||
LOG(logINFOBLUE, ("%s Master flag to %s in Beb\n",
|
||||
(ind == TOP_HARDWARE ? "Resetting" : "Overwriting"),
|
||||
(ind == MASTER_HARDWARE ? "Resetting" : "Overwriting"),
|
||||
master_names[ind]));
|
||||
|
||||
Beb_close(fd, csp0base);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_Activate(int enable) {
|
||||
// mapping new memory
|
||||
int Beb_SetActivate(int enable) {
|
||||
enable = enable == 0 ? 0 : 1;
|
||||
u_int32_t *csp0base = 0;
|
||||
u_int32_t value = 0, ret = -1;
|
||||
|
||||
// open file pointer
|
||||
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
||||
if (fd < 0) {
|
||||
LOG(logERROR, ("Activate FAIL, could not open fd\n"));
|
||||
return 0;
|
||||
} else {
|
||||
if (enable > -1) {
|
||||
value = Beb_Read32(csp0base, BEB_CONFIG_WR_OFST);
|
||||
LOG(logINFO, ("Activate register value before:%d\n", value));
|
||||
u_int32_t value = Beb_Read32(csp0base, BEB_CONFIG_WR_OFST);
|
||||
LOG(logDEBUG, ("Activate register value before:%d\n", value));
|
||||
if (enable)
|
||||
value |= BEB_CONFIG_ACTIVATE_MSK;
|
||||
else
|
||||
value &= ~BEB_CONFIG_ACTIVATE_MSK;
|
||||
|
||||
int newval = Beb_Write32(csp0base, BEB_CONFIG_WR_OFST, value);
|
||||
if (newval != value) {
|
||||
LOG(logERROR, ("Could not %s\n", (enable ? "activate" : "deactivate"));
|
||||
u_int32_t retval = Beb_Write32(csp0base, BEB_CONFIG_WR_OFST, value);
|
||||
if (retval != value) {
|
||||
LOG(logERROR, ("Could not %s. WRote 0x%x, read 0x%x\n", (enable ? "activate" : "deactivate"), value, retval));
|
||||
Beb_close(fd, csp0base);
|
||||
}
|
||||
}
|
||||
Beb_activated = enable;
|
||||
Beb_close(fd, csp0base);
|
||||
return 1;
|
||||
}
|
||||
|
||||
value = Beb_Read32(csp0base, BEB_CONFIG_WR_OFST);
|
||||
ret = (value & BEB_CONFIG_ACTIVATE_MSK) ? 1 : 0;
|
||||
if (enable == -1) {
|
||||
if (ret) {
|
||||
int Beb_GetActivate(int* retval) {
|
||||
u_int32_t *csp0base = 0;
|
||||
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
||||
if (fd < 0) {
|
||||
LOG(logERROR, ("Activate FAIL, could not open fd\n"));
|
||||
return 0;
|
||||
} else {
|
||||
u_int32_t value = Beb_Read32(csp0base, BEB_CONFIG_WR_OFST);
|
||||
Beb_activated = (value & BEB_CONFIG_ACTIVATE_MSK) ? 1 : 0;
|
||||
if (Beb_activated) {
|
||||
LOG(logINFOBLUE, ("Detector is active\n"));
|
||||
} else {
|
||||
LOG(logINFORED, ("Detector is deactivated!\n"));
|
||||
}
|
||||
}
|
||||
}
|
||||
// close file pointer
|
||||
if (fd > 0)
|
||||
Beb_close(fd, csp0base);
|
||||
*retval = Beb_activated;
|
||||
return 1;
|
||||
}
|
||||
|
||||
Beb_activated = ret;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int Beb_GetActivate() { return Beb_activated; }
|
||||
|
||||
int Beb_Set32bitOverflow(int val) {
|
||||
int Beb_Set32bitOverflow(int val) {
|
||||
if (!Beb_activated)
|
||||
return val;
|
||||
|
||||
@ -471,13 +474,12 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
FLOW_REG_OVERFLOW_32_BIT_OFST;
|
||||
}
|
||||
// close file pointer
|
||||
if (fd > 0)
|
||||
Beb_close(fd, csp0base);
|
||||
|
||||
return valueread;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_GetTenGigaFlowControl() {
|
||||
int Beb_GetTenGigaFlowControl() {
|
||||
u_int32_t offset = FLOW_REG_OFFSET;
|
||||
u_int32_t *csp0base = 0;
|
||||
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
||||
@ -493,9 +495,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetTenGigaFlowControl(int value) {
|
||||
int Beb_SetTenGigaFlowControl(int value) {
|
||||
LOG(logINFO, ("Setting ten giga flow control to %d\n", value));
|
||||
value = value == 0 ? 0 : 1;
|
||||
u_int32_t offset = FLOW_REG_OFFSET;
|
||||
@ -520,9 +522,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_GetTransmissionDelayFrame() {
|
||||
int Beb_GetTransmissionDelayFrame() {
|
||||
u_int32_t offset = TXM_DELAY_FRAME_OFFSET;
|
||||
u_int32_t *csp0base = 0;
|
||||
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
||||
@ -535,9 +537,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetTransmissionDelayFrame(int value) {
|
||||
int Beb_SetTransmissionDelayFrame(int value) {
|
||||
LOG(logINFO, ("Setting transmission delay frame to %d\n", value));
|
||||
if (value < 0) {
|
||||
LOG(logERROR,
|
||||
@ -556,9 +558,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_GetTransmissionDelayLeft() {
|
||||
int Beb_GetTransmissionDelayLeft() {
|
||||
u_int32_t offset = TXM_DELAY_LEFT_OFFSET;
|
||||
u_int32_t *csp0base = 0;
|
||||
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
||||
@ -571,9 +573,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetTransmissionDelayLeft(int value) {
|
||||
int Beb_SetTransmissionDelayLeft(int value) {
|
||||
LOG(logINFO, ("Setting transmission delay left to %d\n", value));
|
||||
if (value < 0) {
|
||||
LOG(logERROR,
|
||||
@ -592,9 +594,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_GetTransmissionDelayRight() {
|
||||
int Beb_GetTransmissionDelayRight() {
|
||||
u_int32_t offset = TXM_DELAY_RIGHT_OFFSET;
|
||||
u_int32_t *csp0base = 0;
|
||||
int fd = Beb_open(&csp0base, XPAR_PLB_GPIO_SYS_BASEADDR);
|
||||
@ -607,9 +609,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetTransmissionDelayRight(int value) {
|
||||
int Beb_SetTransmissionDelayRight(int value) {
|
||||
LOG(logINFO, ("Setting transmission delay right to %d\n", value));
|
||||
if (value < 0) {
|
||||
LOG(logERROR,
|
||||
@ -628,9 +630,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val) {
|
||||
int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val) {
|
||||
|
||||
if (!Beb_activated)
|
||||
return val;
|
||||
@ -675,9 +677,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
|
||||
return valueread;
|
||||
}
|
||||
}
|
||||
|
||||
u_int32_t Beb_GetFirmwareRevision() {
|
||||
u_int32_t Beb_GetFirmwareRevision() {
|
||||
// mapping new memory
|
||||
u_int32_t *csp0base = 0;
|
||||
u_int32_t value = 0;
|
||||
@ -699,9 +701,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
u_int32_t Beb_GetFirmwareSoftwareAPIVersion() {
|
||||
u_int32_t Beb_GetFirmwareSoftwareAPIVersion() {
|
||||
// mapping new memory
|
||||
u_int32_t *csp0base = 0;
|
||||
u_int32_t value = 0;
|
||||
@ -724,9 +726,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
void Beb_ResetFrameNumber() {
|
||||
void Beb_ResetFrameNumber() {
|
||||
|
||||
if (!Beb_activated)
|
||||
return;
|
||||
@ -747,15 +749,15 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
// close file pointer
|
||||
Beb_close(fd, csp0base);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Beb_ClearBebInfos() {
|
||||
void Beb_ClearBebInfos() {
|
||||
// unsigned int i;
|
||||
// for(i=0;i<bebInfoSize;i++) free(beb_infos[i]);
|
||||
bebInfoSize = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_InitBebInfos() { // file name at some point
|
||||
int Beb_InitBebInfos() { // file name at some point
|
||||
Beb_ClearBebInfos();
|
||||
|
||||
struct BebInfo b0;
|
||||
@ -785,19 +787,19 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
bebInfoSize++;
|
||||
|
||||
/*
|
||||
//loop through file to fill vector.
|
||||
BebInfo* b = new BebInfo(26);
|
||||
b->SetSerialAddress(0); //0xc4000000
|
||||
b->SetHeaderInfo(0,"00:50:c2:46:d9:34","129.129.205.78",42000 + 26); // 1
|
||||
GbE, ip address can be acquire from the network "arp"
|
||||
b->SetHeaderInfo(1,"00:50:c2:46:d9:35","10.0.26.1",52000 + 26); //10 GbE,
|
||||
everything calculable/setable beb_infos.push_back(b);
|
||||
//loop through file to fill vector.
|
||||
BebInfo* b = new BebInfo(26);
|
||||
b->SetSerialAddress(0); //0xc4000000
|
||||
b->SetHeaderInfo(0,"00:50:c2:46:d9:34","129.129.205.78",42000 + 26); // 1
|
||||
GbE, ip address can be acquire from the network "arp"
|
||||
b->SetHeaderInfo(1,"00:50:c2:46:d9:35","10.0.26.1",52000 + 26); //10 GbE,
|
||||
everything calculable/setable beb_infos.push_back(b);
|
||||
*/
|
||||
|
||||
return Beb_CheckSourceStuffBebInfo();
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig,
|
||||
int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig,
|
||||
char *src_mac, char *src_ip,
|
||||
unsigned int src_port) {
|
||||
// so that the values can be reset externally for now....
|
||||
@ -815,9 +817,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
BebInfo_Print(&beb_infos[i]);
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_CheckSourceStuffBebInfo() {
|
||||
int Beb_CheckSourceStuffBebInfo() {
|
||||
unsigned int i;
|
||||
for (i = 1; i < bebInfoSize; i++) { // header stuff always starts from 1
|
||||
if (!Beb_SetHeaderData(BebInfo_GetBebNumber(&beb_infos[i]), 0,
|
||||
@ -831,9 +833,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb) {
|
||||
unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb) {
|
||||
/******************** if (!beb_numb) return
|
||||
* 0;******************************/
|
||||
unsigned int i;
|
||||
@ -845,9 +847,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
}
|
||||
LOG(logDEBUG1, ("*****Returning 0\n"));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_WriteTo(unsigned int index) {
|
||||
int Beb_WriteTo(unsigned int index) {
|
||||
|
||||
if (!Beb_activated)
|
||||
return 1;
|
||||
@ -868,9 +870,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Beb_SwapDataFun(int little_endian, unsigned int n, unsigned int *d) {
|
||||
void Beb_SwapDataFun(int little_endian, unsigned int n, unsigned int *d) {
|
||||
unsigned int i;
|
||||
if (little_endian)
|
||||
for (i = 0; i < n; i++)
|
||||
@ -880,11 +882,11 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
else
|
||||
for (i = 0; i < n; i++)
|
||||
d[i] = (((d[i] & 0xffff) << 16) | ((d[i] & 0xffff0000) >> 16));
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetByteOrder() { return 1; }
|
||||
int Beb_SetByteOrder() { return 1; }
|
||||
|
||||
int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig,
|
||||
int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig,
|
||||
unsigned int header_number, char *dst_mac,
|
||||
char *dst_ip, unsigned int dst_port) {
|
||||
|
||||
@ -913,9 +915,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetHeaderData(unsigned int beb_number, int ten_gig, char *dst_mac,
|
||||
int Beb_SetHeaderData(unsigned int beb_number, int ten_gig, char *dst_mac,
|
||||
char *dst_ip, unsigned int dst_port) {
|
||||
unsigned int i = 1; /*Beb_GetBebInfoIndex(beb_number);*/
|
||||
/***********************************if (!i) return 0;
|
||||
@ -924,15 +926,15 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
BebInfo_GetSrcIP(&beb_infos[i], ten_gig),
|
||||
BebInfo_GetSrcPort(&beb_infos[i], ten_gig),
|
||||
dst_mac, dst_ip, dst_port);
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetHeaderData1(char *src_mac, char *src_ip, unsigned int src_port,
|
||||
int Beb_SetHeaderData1(char *src_mac, char *src_ip, unsigned int src_port,
|
||||
char *dst_mac, char *dst_ip, unsigned int dst_port) {
|
||||
/* example header*/
|
||||
// static unsigned int* word_ptr = new unsigned int [16];
|
||||
/*static*/
|
||||
/*
|
||||
udp_header_type udp_header = {
|
||||
udp_header_type udp_header = {
|
||||
{0x00, 0x50, 0xc5, 0xb2, 0xcb, 0x46}, // DST MAC
|
||||
{0x00, 0x50, 0xc2, 0x46, 0xd9, 0x02}, // SRC MAC
|
||||
{0x08, 0x00},
|
||||
@ -988,9 +990,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_send_data[i + 2] = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetMAC(char *mac, uint8_t *dst_ptr) {
|
||||
int Beb_SetMAC(char *mac, uint8_t *dst_ptr) {
|
||||
char macVal[50];
|
||||
strcpy(macVal, mac);
|
||||
|
||||
@ -1009,9 +1011,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetIP(char *ip, uint8_t *dst_ptr) {
|
||||
int Beb_SetIP(char *ip, uint8_t *dst_ptr) {
|
||||
char ipVal[50];
|
||||
strcpy(ipVal, ip);
|
||||
int i = 0;
|
||||
@ -1030,15 +1032,15 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetPortNumber(unsigned int port_number, uint8_t *dst_ptr) {
|
||||
int Beb_SetPortNumber(unsigned int port_number, uint8_t *dst_ptr) {
|
||||
dst_ptr[0] = (port_number >> 8) & 0xff;
|
||||
dst_ptr[1] = port_number & 0xff;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Beb_AdjustIPChecksum(struct udp_header_type * ip) {
|
||||
void Beb_AdjustIPChecksum(struct udp_header_type * ip) {
|
||||
unsigned char *cptr = (unsigned char *)ip->ver_headerlen;
|
||||
|
||||
ip->ip_header_checksum[0] = 0;
|
||||
@ -1057,9 +1059,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
|
||||
ip->ip_header_checksum[0] = (ip_checksum >> 8) & 0xff;
|
||||
ip->ip_header_checksum[1] = ip_checksum & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SendMultiReadRequest(
|
||||
int Beb_SendMultiReadRequest(
|
||||
unsigned int beb_number, unsigned int left_right, int ten_gig,
|
||||
unsigned int dst_number, unsigned int npackets,
|
||||
unsigned int packet_size, int stop_read_when_fifo_empty) {
|
||||
@ -1104,9 +1106,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetUpTransferParameters(short the_bit_mode) {
|
||||
int Beb_SetUpTransferParameters(short the_bit_mode) {
|
||||
if (the_bit_mode != 4 && the_bit_mode != 8 && the_bit_mode != 16 &&
|
||||
the_bit_mode != 32)
|
||||
return 0;
|
||||
@ -1116,9 +1118,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
// on_dst = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_StopAcquisition() {
|
||||
int Beb_StopAcquisition() {
|
||||
if (!Beb_activated)
|
||||
return 1;
|
||||
|
||||
@ -1149,9 +1151,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_RequestNImages(unsigned int beb_number, int ten_gig,
|
||||
int Beb_RequestNImages(unsigned int beb_number, int ten_gig,
|
||||
unsigned int dst_number, unsigned int nimages,
|
||||
int test_just_send_out_packets_no_wait) {
|
||||
if (!Beb_activated)
|
||||
@ -1263,9 +1265,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_Test(unsigned int beb_number) {
|
||||
int Beb_Test(unsigned int beb_number) {
|
||||
LOG(logINFO, ("Testing module number: %d\n", beb_number));
|
||||
|
||||
// int SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int
|
||||
@ -1301,11 +1303,11 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns the FPGA temperature from the xps sysmon ip core
|
||||
// Temperature value is cropped and not well rounded
|
||||
int Beb_GetBebFPGATemp() {
|
||||
// Returns the FPGA temperature from the xps sysmon ip core
|
||||
// Temperature value is cropped and not well rounded
|
||||
int Beb_GetBebFPGATemp() {
|
||||
|
||||
u_int32_t *csp0base = 0;
|
||||
int temperature = 0;
|
||||
@ -1326,9 +1328,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
}
|
||||
|
||||
return temperature;
|
||||
}
|
||||
}
|
||||
|
||||
void Beb_SetDetectorNumber(uint32_t detid) {
|
||||
void Beb_SetDetectorNumber(uint32_t detid) {
|
||||
if (!Beb_activated)
|
||||
return;
|
||||
|
||||
@ -1363,21 +1365,21 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
Beb_close(fd, csp0base);
|
||||
}
|
||||
LOG(logINFO, ("Detector id %d set in UDP Header\n\n", detid));
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetQuad(int value) {
|
||||
int Beb_SetQuad(int value) {
|
||||
if (value < 0)
|
||||
return OK;
|
||||
LOG(logINFO, ("Setting Quad to %d in Beb\n", value));
|
||||
Beb_quadEnable = (value == 0 ? 0 : 1);
|
||||
return Beb_SetDetectorPosition(Beb_positions);
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_GetQuad() { return Beb_quadEnable; }
|
||||
int Beb_GetQuad() { return Beb_quadEnable; }
|
||||
|
||||
int *Beb_GetDetectorPosition() { return Beb_positions; }
|
||||
int *Beb_GetDetectorPosition() { return Beb_positions; }
|
||||
|
||||
int Beb_SetDetectorPosition(int pos[]) {
|
||||
int Beb_SetDetectorPosition(int pos[]) {
|
||||
if (!Beb_activated)
|
||||
return OK;
|
||||
LOG(logINFO, ("Got Position values %d %d...\n", pos[0], pos[1]));
|
||||
@ -1474,9 +1476,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_SetStartingFrameNumber(uint64_t value) {
|
||||
int Beb_SetStartingFrameNumber(uint64_t value) {
|
||||
if (!Beb_activated) {
|
||||
Beb_deactivatedStartFrameNumber = value;
|
||||
return OK;
|
||||
@ -1504,9 +1506,9 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
LOG(logINFO, ("Going to reset Frame Number\n"));
|
||||
Beb_ResetFrameNumber();
|
||||
return OK;
|
||||
}
|
||||
}
|
||||
|
||||
int Beb_GetStartingFrameNumber(uint64_t * retval, int tengigaEnable) {
|
||||
int Beb_GetStartingFrameNumber(uint64_t * retval, int tengigaEnable) {
|
||||
if (!Beb_activated) {
|
||||
*retval = Beb_deactivatedStartFrameNumber;
|
||||
return OK;
|
||||
@ -1577,13 +1579,13 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
*retval = left10g;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
}
|
||||
|
||||
void Beb_SetReadNLines(int value) { Beb_readNLines = value; }
|
||||
void Beb_SetReadNLines(int value) { Beb_readNLines = value; }
|
||||
|
||||
uint16_t Beb_swap_uint16(uint16_t val) { return (val << 8) | (val >> 8); }
|
||||
uint16_t Beb_swap_uint16(uint16_t val) { return (val << 8) | (val >> 8); }
|
||||
|
||||
int Beb_open(u_int32_t * *csp0base, u_int32_t offset) {
|
||||
int Beb_open(u_int32_t * *csp0base, u_int32_t offset) {
|
||||
|
||||
int fd = open("/dev/mem", O_RDWR | O_SYNC, 0);
|
||||
if (fd == -1) {
|
||||
@ -1600,24 +1602,24 @@ int Beb_SetTop(enum TOPINDEX ind) {
|
||||
LOG(logDEBUG1, ("CSP0 mapped %p\n", (void *)*csp0base));
|
||||
}
|
||||
return fd;
|
||||
}
|
||||
}
|
||||
|
||||
u_int32_t Beb_Read32(u_int32_t * baseaddr, u_int32_t offset) {
|
||||
u_int32_t Beb_Read32(u_int32_t * baseaddr, u_int32_t offset) {
|
||||
volatile u_int32_t value;
|
||||
value = *(u_int32_t *)(baseaddr + offset / (sizeof(u_int32_t)));
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
u_int32_t Beb_Write32(u_int32_t * baseaddr, u_int32_t offset,
|
||||
u_int32_t Beb_Write32(u_int32_t * baseaddr, u_int32_t offset,
|
||||
u_int32_t data) {
|
||||
volatile u_int32_t *ptr1;
|
||||
ptr1 = (u_int32_t *)(baseaddr + offset / (sizeof(u_int32_t)));
|
||||
*ptr1 = data;
|
||||
return *ptr1;
|
||||
}
|
||||
}
|
||||
|
||||
void Beb_close(int fd, u_int32_t *csp0base) {
|
||||
void Beb_close(int fd, u_int32_t *csp0base) {
|
||||
if (fd >= 0)
|
||||
close(fd);
|
||||
munmap(csp0base, BEB_MMAP_SIZE);
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb);
|
||||
void Beb_GetModuleConfiguration(int *master, int *top, int *normal);
|
||||
int Beb_IsTransmitting(int *retval, int tengiga, int waitForDelay);
|
||||
|
||||
void Beb_SetTopVariable(int val);
|
||||
int Beb_SetTop(enum TOPINDEX ind);
|
||||
int Beb_SetMaster(enum MASTERINDEX ind);
|
||||
int Beb_Activate(int enable);
|
||||
|
@ -2463,10 +2463,10 @@ int Feb_Control_SetTop(enum TOPINDEX ind, int left, int right) {
|
||||
uint32_t offset = DAQ_REG_HRDWRE;
|
||||
unsigned int addr[2] = {0, 0};
|
||||
if (left) {
|
||||
addr[0] = Module_GetTopLeftAddress(&modules[0]);
|
||||
addr[0] = Module_GetTopLeftAddress(&modules[1]);
|
||||
}
|
||||
if (right) {
|
||||
addr[1] = Module_GetTopRightAddress(&modules[0]);
|
||||
addr[1] = Module_GetTopRightAddress(&modules[1]);
|
||||
}
|
||||
char *top_names[] = {TOP_NAMES};
|
||||
int i = 0;
|
||||
@ -2497,8 +2497,7 @@ int Feb_Control_SetTop(enum TOPINDEX ind, int left, int right) {
|
||||
return 0;
|
||||
}
|
||||
if (!Feb_Interface_WriteRegister(addr[i], offset, value, 0, 0)) {
|
||||
LOG(logERROR, ("Could not set Top flag to %s in %s Feb\n", val,
|
||||
top_names[ind], (i == 0 ? "left" : "right")));
|
||||
LOG(logERROR, ("Could not set Top flag to %s in %s Feb\n", top_names[ind], (i == 0 ? "left" : "right")));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -2510,11 +2509,13 @@ int Feb_Control_SetTop(enum TOPINDEX ind, int left, int right) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void Feb_Control_SetMasterVariable(int val) {Feb_control_master = val;}
|
||||
|
||||
int Feb_Control_SetMaster(enum MASTERINDEX ind) {
|
||||
uint32_t offset = DAQ_REG_HRDWRE;
|
||||
unsigned int addr[2] = {0, 0};
|
||||
addr[0] = Module_GetTopLeftAddress(&modules[0]);
|
||||
addr[1] = Module_GetTopRightAddress(&modules[0]);
|
||||
addr[0] = Module_GetTopLeftAddress(&modules[1]);
|
||||
addr[1] = Module_GetTopRightAddress(&modules[1]);
|
||||
char *master_names[] = {MASTER_NAMES};
|
||||
int i = 0;
|
||||
for (i = 0; i < 2; ++i) {
|
||||
@ -2538,12 +2539,11 @@ int Feb_Control_SetMaster(enum MASTERINDEX ind) {
|
||||
break;
|
||||
default:
|
||||
LOG(logERROR, ("Unknown master index in Feb: %d\n", ind));
|
||||
Beb_close(fd, csp0base);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!Feb_Interface_WriteRegister(addr[i], offset, value, 0, 0)) {
|
||||
LOG(logERROR, ("Could not set Master flag to %s in %s Feb\n", val,
|
||||
LOG(logERROR, ("Could not set Master flag to %s in %s Feb\n",
|
||||
master_names[ind], (i == 0 ? "left" : "right")));
|
||||
return 0;
|
||||
}
|
||||
@ -2560,7 +2560,8 @@ int Feb_Control_SetQuad(int val) {
|
||||
return 1;
|
||||
}
|
||||
LOG(logINFO, ("Setting Quad to %d in Feb\n", val));
|
||||
return Feb_Control_SetTop(val, 0, 1);
|
||||
// only setting on the right feb if quad
|
||||
return Feb_Control_SetTop(val == 0 ? TOP_HARDWARE : OW_TOP, 0, 1);
|
||||
}
|
||||
|
||||
int Feb_Control_SetReadNLines(int value) {
|
||||
@ -2644,6 +2645,7 @@ int Feb_Control_ReadRegister(uint32_t offset, uint32_t *retval) {
|
||||
addr[1] = Module_TopAddressIsValid(&modules[1])
|
||||
? Module_GetTopLeftAddress(&modules[1])
|
||||
: Module_GetBottomLeftAddress(&modules[1]);
|
||||
|
||||
uint32_t value[2] = {0, 0};
|
||||
|
||||
int run[2] = {0, 0};
|
||||
|
@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
#include "FebInterface.h"
|
||||
#include "slsDetectorServer_defs.h"
|
||||
#include <netinet/in.h>
|
||||
|
||||
struct Module {
|
||||
@ -176,6 +177,7 @@ int Feb_Control_SetInterruptSubframe(int val);
|
||||
int Feb_Control_GetInterruptSubframe();
|
||||
|
||||
int Feb_Control_SetTop(enum TOPINDEX ind, int left, int right);
|
||||
void Feb_Control_SetMasterVariable(int val);
|
||||
int Feb_Control_SetMaster(enum MASTERINDEX ind);
|
||||
int Feb_Control_SetQuad(int val);
|
||||
int Feb_Control_SetReadNLines(int value);
|
||||
|
Binary file not shown.
@ -226,6 +226,20 @@ u_int64_t getFirmwareAPIVersion() {
|
||||
#endif
|
||||
}
|
||||
|
||||
void readDetectorNumber() {
|
||||
#ifdef VIRTUAL
|
||||
return;
|
||||
#endif
|
||||
char output[255];
|
||||
FILE *sysFile = popen(IDFILECOMMAND, "r");
|
||||
fgets(output, sizeof(output), sysFile);
|
||||
pclose(sysFile);
|
||||
sscanf(output, "%u", &detid);
|
||||
if (isControlServer) {
|
||||
LOG(logINFOBLUE, ("Detector ID: %u\n", detid));
|
||||
}
|
||||
}
|
||||
|
||||
u_int32_t getDetectorNumber() {
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
@ -309,97 +323,67 @@ u_int32_t getDetectorIP() {
|
||||
/* initialization */
|
||||
|
||||
void initControlServer() {
|
||||
master = -1;
|
||||
top = -1;
|
||||
|
||||
// force top or master if in config file
|
||||
if (readConfigFile() == FAIL) {
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef VIRTUAL
|
||||
LOG(logINFOBLUE, ("Configuring Control server\n"));
|
||||
if (initError == OK) {
|
||||
readDetectorNumber();
|
||||
getModuleConfiguration();
|
||||
setupDetector();
|
||||
}
|
||||
eiger_virtual_activate = 0;
|
||||
LOG(logINFORED, ("Deactivated!\n"));
|
||||
initCheckDone = 1;
|
||||
return;
|
||||
#else
|
||||
if (initError == OK) {
|
||||
// Feb and Beb Initializations
|
||||
getModuleConfiguration();
|
||||
#ifndef VIRTUAL
|
||||
Feb_Control_SetMasterVariable(master);
|
||||
Feb_Interface_FebInterface();
|
||||
Feb_Control_FebControl();
|
||||
// different addresses for top and bottom
|
||||
if (getFirmwareVersion() < FIRMWARE_VERSION_SAME_TOP_BOT_ADDR) {
|
||||
Feb_Control_Init(master, top, normal, getDetectorNumber());
|
||||
}
|
||||
// same addresses for top and bottom
|
||||
else {
|
||||
Feb_Control_Init(master, 1, normal, getDetectorNumber());
|
||||
}
|
||||
// master of 9M, check high voltage serial communication to blackfin
|
||||
if (master && !normal) {
|
||||
if (Feb_Control_OpenSerialCommunication())
|
||||
; // Feb_Control_CloseSerialCommunication();
|
||||
}
|
||||
LOG(logDEBUG1, ("Control server: FEB Initialization done\n"));
|
||||
Beb_SetTopVariable(top);
|
||||
Beb_Beb(detid);
|
||||
Beb_SetDetectorNumber(getDetectorNumber());
|
||||
LOG(logDEBUG1, ("Control server: BEB Initialization done\n"));
|
||||
|
||||
#endif
|
||||
// also reads config file and deactivates
|
||||
setupDetector();
|
||||
// client first connect (from shm) will activate
|
||||
Beb_Activate(0);
|
||||
Feb_Control_activate(0);
|
||||
}
|
||||
initCheckDone = 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
void initStopServer() {
|
||||
master = -1;
|
||||
top = -1;
|
||||
|
||||
#ifdef VIRTUAL
|
||||
// force top or master if in config file
|
||||
if (readConfigFile() == FAIL) {
|
||||
return;
|
||||
}
|
||||
|
||||
LOG(logINFOBLUE, ("Configuring Stop server\n"));
|
||||
getModuleConfiguration();
|
||||
virtual_stop = 0;
|
||||
if (!isControlServer) {
|
||||
ComVirtual_setStop(virtual_stop);
|
||||
}
|
||||
eiger_virtual_activate = 0;
|
||||
LOG(logINFORED, ("Deactivated!\n"));
|
||||
return;
|
||||
// get top/master in virtual
|
||||
readConfigFile();
|
||||
#else
|
||||
// wait till control server has configured top/master
|
||||
usleep(2 * 1000 * 1000);
|
||||
|
||||
// wait a few s (control server is setting top/master from config file)
|
||||
usleep(WAIT_STOP_SERVER_START);
|
||||
LOG(logINFOBLUE, ("Configuring Stop server\n"));
|
||||
//exit(-1);
|
||||
readDetectorNumber();
|
||||
getModuleConfiguration();
|
||||
Feb_Control_SetMasterVariable(master);
|
||||
Feb_Interface_FebInterface();
|
||||
Feb_Control_FebControl();
|
||||
// different addresses for top and bottom
|
||||
if (getFirmwareVersion() < FIRMWARE_VERSION_SAME_TOP_BOT_ADDR) {
|
||||
Feb_Control_Init(master, top, normal, getDetectorNumber());
|
||||
}
|
||||
// same addresses for top and bottom
|
||||
else {
|
||||
Feb_Control_Init(master, 1, normal, getDetectorNumber());
|
||||
}
|
||||
LOG(logDEBUG1, ("Stop server: FEB Initialization done\n"));
|
||||
// client first connect (from shm) will activate
|
||||
Beb_Activate(0);
|
||||
Feb_Control_activate(0);
|
||||
#endif
|
||||
// client first connect (from shm) will activate
|
||||
if (setActivate(0) == FAIL) {
|
||||
LOG(logERROR, ("Could not deactivate in stop server\n"));
|
||||
}
|
||||
}
|
||||
|
||||
void getModuleConfiguration() {
|
||||
if (initError == FAIL) {
|
||||
return;
|
||||
}
|
||||
#ifdef VIRTUAL
|
||||
// if master not modified by config file
|
||||
if (master == -1) {
|
||||
@ -429,16 +413,6 @@ void getModuleConfiguration() {
|
||||
#endif
|
||||
|
||||
#else
|
||||
// read detector id
|
||||
char output[255];
|
||||
FILE *sysFile = popen(IDFILECOMMAND, "r");
|
||||
fgets(output, sizeof(output), sysFile);
|
||||
pclose(sysFile);
|
||||
sscanf(output, "%u", &detid);
|
||||
if (isControlServer) {
|
||||
LOG(logINFOBLUE, ("Detector ID: %u\n\n", detid));
|
||||
}
|
||||
|
||||
Beb_GetModuleConfiguration(&master, &top, &normal);
|
||||
#endif
|
||||
if (isControlServer) {
|
||||
@ -453,12 +427,14 @@ int readConfigFile() {
|
||||
if (initError == FAIL) {
|
||||
return initError;
|
||||
}
|
||||
|
||||
master = -1;
|
||||
top = -1;
|
||||
FILE *fd = fopen(CONFIG_FILE, "r");
|
||||
if (fd == NULL) {
|
||||
LOG(logINFO, ("No config file found. Resetting to hardware settings (Top/Master)\n"));
|
||||
// reset to hardware settings if not in config file (if overwritten)
|
||||
resetToHardwareSettings();
|
||||
return OK;
|
||||
return initError;
|
||||
}
|
||||
LOG(logINFO, ("Reading config file %s\n", CONFIG_FILE));
|
||||
|
||||
@ -470,7 +446,6 @@ int readConfigFile() {
|
||||
|
||||
// keep reading a line
|
||||
while (fgets(line, LZ, fd)) {
|
||||
|
||||
// ignore comments
|
||||
if (line[0] == '#') {
|
||||
LOG(logDEBUG1, ("Ignoring Comment\n"));
|
||||
@ -521,6 +496,15 @@ int readConfigFile() {
|
||||
top, line);
|
||||
break;
|
||||
}
|
||||
// validate change
|
||||
int actual_top = -1, temp = -1, temp2 = -1;
|
||||
Beb_GetModuleConfiguration(&temp, &actual_top, &temp2);
|
||||
if (actual_top != top) {
|
||||
sprintf(initErrorMessage,
|
||||
"Could not set top to %d. Read %d\n", top, actual_top);
|
||||
break;
|
||||
}
|
||||
Beb_SetTopVariable(top);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -552,6 +536,15 @@ int readConfigFile() {
|
||||
master, line);
|
||||
break;
|
||||
}
|
||||
// validate change
|
||||
int actual_master = -1, temp = -1, temp2 = -1;
|
||||
Beb_GetModuleConfiguration(&actual_master, &temp, &temp2);
|
||||
if (actual_master != master) {
|
||||
sprintf(initErrorMessage,
|
||||
"Could not set master to %d. Read %d\n", master, actual_master);
|
||||
break;
|
||||
}
|
||||
Feb_Control_SetMasterVariable(master);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -566,51 +559,66 @@ int readConfigFile() {
|
||||
}
|
||||
fclose(fd);
|
||||
|
||||
// reset to hardware settings if not in config file (if overwritten)
|
||||
resetToHardwareSettings();
|
||||
|
||||
if (strlen(initErrorMessage)) {
|
||||
initError = FAIL;
|
||||
LOG(logERROR, ("%s\n\n", initErrorMessage));
|
||||
} else {
|
||||
LOG(logINFO, ("Successfully read config file\n"));
|
||||
}
|
||||
|
||||
// reset to hardware settings if not in config file (if overwritten)
|
||||
resetToHardwareSettings();
|
||||
|
||||
return initError;
|
||||
}
|
||||
|
||||
int resetToHardwareSettings() {
|
||||
void resetToHardwareSettings() {
|
||||
#ifndef VIRTUAL
|
||||
if (initError == FAIL) {
|
||||
return;
|
||||
}
|
||||
// top not set in config file
|
||||
if (top == -1) {
|
||||
if (!Beb_SetTop(TOP_HARDWARE)) {
|
||||
initError = FAIL;
|
||||
sprintf(initErrorMessage,
|
||||
strcpy(initErrorMessage,
|
||||
"Could not reset Top flag to Beb hardware settings.\n");
|
||||
LOG(logERROR, ("%s\n\n", initErrorMessage));
|
||||
return;
|
||||
}
|
||||
if (!Feb_Control_SetTop(TOP_HARDWARE, 1, 1)) {
|
||||
initError = FAIL;
|
||||
sprintf(initErrorMessage,
|
||||
strcpy(initErrorMessage,
|
||||
"Could not reset Top flag to Feb hardware settings.\n");
|
||||
LOG(logERROR, ("%s\n\n", initErrorMessage));
|
||||
return;
|
||||
}
|
||||
getModuleConfiguration();
|
||||
Beb_SetTopVariable(top);
|
||||
}
|
||||
// master not set in config file
|
||||
if (master == -1) {
|
||||
if (!Beb_SetMaster(TOP_HARDWARE)) {
|
||||
initError = FAIL;
|
||||
sprintf(initErrorMessage,
|
||||
strcpy(initErrorMessage,
|
||||
"Could not reset Master flag to Beb hardware settings.\n");
|
||||
LOG(logERROR, ("%s\n\n", initErrorMessage));
|
||||
return;
|
||||
}
|
||||
if (!Feb_Control_SetMaster(TOP_HARDWARE)) {
|
||||
initError = FAIL;
|
||||
sprintf(initErrorMessage,
|
||||
strcpy(initErrorMessage,
|
||||
"Could not reset Master flag to Feb hardware settings.\n");
|
||||
LOG(logERROR, ("%s\n\n", initErrorMessage));
|
||||
return;
|
||||
}
|
||||
getModuleConfiguration();
|
||||
Feb_Control_SetMasterVariable(master);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* set up detector */
|
||||
|
||||
void allocateDetectorStructureMemory() {
|
||||
@ -696,6 +704,17 @@ void setupDetector() {
|
||||
#ifndef VIRTUAL
|
||||
Feb_Control_CheckSetup();
|
||||
#endif
|
||||
// force top or master if in config file
|
||||
if (readConfigFile() == FAIL) {
|
||||
return;
|
||||
}
|
||||
// client first connect (from shm) will activate
|
||||
if (setActivate(0) == FAIL) {
|
||||
initError = FAIL;
|
||||
sprintf(initErrorMessage, "Could not deactivate\n");
|
||||
LOG(logERROR, (initErrorMessage));
|
||||
}
|
||||
|
||||
LOG(logDEBUG1, ("Setup detector done\n\n"));
|
||||
}
|
||||
|
||||
@ -1860,21 +1879,37 @@ int getBebFPGATemp() {
|
||||
#endif
|
||||
}
|
||||
|
||||
int activate(int enable) {
|
||||
#ifdef VIRTUAL
|
||||
if (enable >= 0)
|
||||
eiger_virtual_activate = enable;
|
||||
if (eiger_virtual_activate == 0) {
|
||||
LOG(logINFORED, ("Deactivated!\n"));
|
||||
} else {
|
||||
LOG(logINFOGREEN, ("Activated!\n"));
|
||||
int setActivate(int enable) {
|
||||
if (enable < 0) {
|
||||
LOG(logERROR, ("Invalid activate argument: %d\n", enable));
|
||||
return FAIL;
|
||||
}
|
||||
return eiger_virtual_activate;
|
||||
enable = enable == 0 ? 0 : 1;
|
||||
#ifdef VIRTUAL
|
||||
eiger_virtual_activate = enable;
|
||||
#else
|
||||
int ret = Beb_Activate(enable);
|
||||
Feb_Control_activate(ret);
|
||||
return ret;
|
||||
if (!Beb_SetActivate(enable)) {
|
||||
return FAIL;
|
||||
}
|
||||
Feb_Control_activate(enable);
|
||||
#endif
|
||||
if (enable == 0) {
|
||||
LOG(logINFORED, ("Deactivated in %s Server!\n", isControlServer ? " Control" : "Stop"));
|
||||
} else {
|
||||
LOG(logINFOGREEN, ("Activated in %s Server!\n", isControlServer ? " Control" : "Stop"));
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
int getActivate(int* retval) {
|
||||
#ifdef VIRTUAL
|
||||
*retval = eiger_virtual_activate;
|
||||
#else
|
||||
if (!Beb_GetActivate(retval)) {
|
||||
return FAIL;
|
||||
}
|
||||
#endif
|
||||
return OK;
|
||||
}
|
||||
|
||||
int getTenGigaFlowControl() {
|
||||
@ -2310,7 +2345,7 @@ enum runStatus getRunStatus() {
|
||||
return ERROR;
|
||||
}
|
||||
if (isTransmitting) {
|
||||
printf("Status: TRANSMITTING\n");
|
||||
LOG(logINFOBLUE, ("Status: TRANSMITTING\n"));
|
||||
return TRANSMITTING;
|
||||
}
|
||||
LOG(logINFOBLUE, ("Status: IDLE\n"));
|
||||
@ -2360,7 +2395,7 @@ void readFrame(int *ret, char *mess) {
|
||||
printf("Transmitting...\n");
|
||||
}
|
||||
}
|
||||
printf("Detector has sent all data\n");
|
||||
LOG(logINFO, ("Detector has sent all data\n"));
|
||||
LOG(logINFOGREEN, ("Acquisition successfully finished\n"));
|
||||
#endif
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define REQUIRED_FIRMWARE_VERSION (26)
|
||||
#define IDFILECOMMAND "more /home/root/executables/detid.txt"
|
||||
#define CONFIG_FILE ("config.txt")
|
||||
#define FIRMWARE_VERSION_SAME_TOP_BOT_ADDR (26)
|
||||
#define WAIT_STOP_SERVER_START (1 * 1000 * 1000)
|
||||
|
||||
#define STATUS_IDLE 0
|
||||
#define STATUS_RUNNING 1
|
||||
|
@ -84,6 +84,9 @@ u_int16_t getHardwareSerialNumber();
|
||||
#ifdef JUNGFRAUD
|
||||
int isHardwareVersion2();
|
||||
#endif
|
||||
#ifdef EIGERD
|
||||
void readDetectorNumber();
|
||||
#endif
|
||||
u_int32_t getDetectorNumber();
|
||||
u_int64_t getDetectorMAC();
|
||||
u_int32_t getDetectorIP();
|
||||
@ -116,7 +119,7 @@ int setDefaultDacs();
|
||||
int readConfigFile();
|
||||
#endif
|
||||
#ifdef EIGERD
|
||||
int resetToHardwareSettings();
|
||||
void resetToHardwareSettings();
|
||||
#endif
|
||||
|
||||
// advanced read/write reg
|
||||
@ -435,7 +438,8 @@ void setExternalGating(int enable[]);
|
||||
int setAllTrimbits(int val);
|
||||
int getAllTrimbits();
|
||||
int getBebFPGATemp();
|
||||
int activate(int enable);
|
||||
int setActivate(int enable);
|
||||
int getActivate(int* retval);
|
||||
|
||||
// gotthard specific - adc phase
|
||||
#elif GOTTHARDD
|
||||
|
@ -4119,9 +4119,23 @@ int set_activate(int file_des) {
|
||||
#else
|
||||
// set & get
|
||||
if ((arg == -1) || (Server_VerifyLock() == OK)) {
|
||||
retval = activate(arg);
|
||||
if (arg >= 0) {
|
||||
if (setActivate(arg) == FAIL) {
|
||||
ret = FAIL;
|
||||
sprintf(mess, "Could not %s\n", (arg == 0 ? "deactivate" : "activate"));
|
||||
LOG(logERROR, (mess));
|
||||
}
|
||||
}
|
||||
if (ret == OK) {
|
||||
if (getActivate(&retval) == FAIL) {
|
||||
ret = FAIL;
|
||||
sprintf(mess, "Could not get activate flag\n");
|
||||
LOG(logERROR, (mess));
|
||||
} else {
|
||||
LOG(logDEBUG1, ("Activate: %d\n", retval));
|
||||
validate(arg, retval, "set activate", DEC);
|
||||
validate(arg, retval, "set/get activate", DEC);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
|
||||
@ -7264,7 +7278,8 @@ int get_receiver_parameters(int file_des) {
|
||||
|
||||
// activate
|
||||
#ifdef EIGERD
|
||||
i32 = activate(-1);
|
||||
i32 = 0;
|
||||
getActivate(&i32);
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
|
@ -10,4 +10,4 @@
|
||||
#define APIJUNGFRAU 0x200508
|
||||
#define APIMYTHEN3 0x200508
|
||||
#define APIMOENCH 0x200508
|
||||
#define APIEIGER 0x200508
|
||||
#define APIEIGER 0x200511
|
||||
|
Reference in New Issue
Block a user