eiger server compiles, client side of interface to do

This commit is contained in:
maliakal_d 2018-10-23 16:20:40 +02:00
parent dfad145e14
commit 261849d69c
52 changed files with 3442 additions and 6441 deletions

View File

@ -1,12 +1,8 @@
#include "xfs_types.h"
/** #include "xparameters.h"
* @author Ian Johnson #include "FebRegisterDefs.h"
* @version 1.0 #include "logger.h"
*/ #include "Beb.h"
//return reversed 1 means good, 0 means failed
#include <stdio.h> #include <stdio.h>
@ -14,14 +10,8 @@
#include <sys/types.h> #include <sys/types.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <sys/mman.h>
#include <fcntl.h>
#include "xfs_types.h"
#include "xparameters.h"
#include "FebRegisterDefs.h"
#include "Beb.h"
#define MAX(x, y) (((x) > (y)) ? (x) : (y)) #define MAX(x, y) (((x) > (y)) ? (x) : (y))
@ -88,19 +78,28 @@ unsigned int BebInfo_GetSrcPort(struct BebInfo* bebInfo, int ten_gig) {return te
void BebInfo_Print(struct BebInfo* bebInfo) { void BebInfo_Print(struct BebInfo* bebInfo) {
printf("\t%d) Beb Info.\n",bebInfo->beb_number); FILE_LOG(logINFO, (
printf("\t\tSerial Add: 0x%x\n",bebInfo->serial_address); "%d) Beb Info:\n"
printf("\t\tMAC 1GbE: %s\n",bebInfo->src_mac_1GbE); "\tSerial Add: 0x%x\n"
printf("\t\tIP 1GbE: %s\n",bebInfo->src_ip_1GbE); "\tMAC 1GbE: %s\n"
printf("\t\tport 1GbE: %d\n",bebInfo->src_port_1GbE); "\tIP 1GbE: %s\n"
printf("\t\tMAC 10GbE: %s\n",bebInfo->src_mac_10GbE); "\tPort 1GbE: %d\n"
printf("\t\tIP 10GbE: %s\n",bebInfo->src_ip_10GbE); "\tMAC 10GbE: %s\n"
printf("\t\tport 10GbE: %d\n",bebInfo->src_port_10GbE); "\tIP 10GbE: %s\n"
"\tPort 10GbE: %d\n",
bebInfo->beb_number,
bebInfo->serial_address,
bebInfo->src_mac_1GbE,
bebInfo->src_ip_1GbE,
bebInfo->src_port_1GbE,
bebInfo->src_mac_10GbE,
bebInfo->src_ip_10GbE,
bebInfo->src_port_10GbE));
} }
void Beb_Beb(){ void Beb_Beb(int id) {
Beb_detid = id;
Beb_send_ndata = 0; Beb_send_ndata = 0;
Beb_send_buffer_size = 1026; Beb_send_buffer_size = 1026;
Beb_send_data_raw = malloc((Beb_send_buffer_size+1) * sizeof(unsigned int)); Beb_send_data_raw = malloc((Beb_send_buffer_size+1) * sizeof(unsigned int));
@ -135,10 +134,10 @@ void Beb_Beb(){
if (!Beb_InitBebInfos()) exit(1); if (!Beb_InitBebInfos()) exit(1);
printf("Printing Beb infos:\n"); FILE_LOG(logDEBUG5, ("Printing Beb infos:\n"));
unsigned int i; unsigned int i;
for(i=1;i<bebInfoSize;i++) BebInfo_Print(&beb_infos[i]); for(i=1;i<bebInfoSize;i++) BebInfo_Print(&beb_infos[i]);
printf("\n");
Beb_bit_mode = 4; Beb_bit_mode = 4;
@ -159,12 +158,12 @@ void Beb_GetModuleConfiguration(int* master, int* top, int* normal){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Module Configuration FAIL\n"); FILE_LOG(logERROR, ("Module Configuration FAIL\n"));
} else { } else {
//read data //read data
ret = Beb_Read32(csp0base, MODULE_CONFIGURATION_MASK); ret = Beb_Read32(csp0base, MODULE_CONFIGURATION_MASK);
printf("Module Configuration OK\n"); FILE_LOG(logDEBUG5, ("Module Configuration OK\n"));
printf("Beb: value =0x%x\n",ret); FILE_LOG(logDEBUG5, ("Beb: value =0x%x\n",ret));
if (ret&TOP_BIT_MASK) { if (ret&TOP_BIT_MASK) {
*top = 1; *top = 1;
Beb_top = 1; Beb_top = 1;
@ -217,7 +216,7 @@ void Beb_EndofDataSend(int tengiga){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_COUNTER_BASEADDR); int fd = Beb_open(&csp0base,XPAR_COUNTER_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Delay read counter fail\n"); FILE_LOG(logERROR, ("Delay read counter fail\n"));
return; return;
} else { } else {
//read data first time //read data first time
@ -229,8 +228,7 @@ void Beb_EndofDataSend(int tengiga){
r_framepktMsbcounter = Beb_Read32(csp0base, addr_r_framepktMsbcounter); r_framepktMsbcounter = Beb_Read32(csp0base, addr_r_framepktMsbcounter);
r_txndelaycounter = Beb_Read32(csp0base, addr_r_txndelaycounter); r_txndelaycounter = Beb_Read32(csp0base, addr_r_txndelaycounter);
r_framedelaycounter = Beb_Read32(csp0base, addr_r_framedelaycounter); r_framedelaycounter = Beb_Read32(csp0base, addr_r_framedelaycounter);
//#ifdef VERBOSE FILE_LOG(logDEBUG5, ("\nLeft\n"
printf("\nLeft\n"
"FramepacketLsbcounter: %d\n" "FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n" "FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
@ -241,15 +239,14 @@ void Beb_EndofDataSend(int tengiga){
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
"Framedelaycounter:%d\n\n", "Framedelaycounter:%d\n\n",
l_framepktLsbcounter,l_framepktMsbcounter,l_txndelaycounter,l_framedelaycounter, l_framepktLsbcounter,l_framepktMsbcounter,l_txndelaycounter,l_framedelaycounter,
r_framepktLsbcounter,r_framepktMsbcounter,r_txndelaycounter,r_framedelaycounter); r_framepktLsbcounter,r_framepktMsbcounter,r_txndelaycounter,r_framedelaycounter));
//#endif
//keep comparing with previous values //keep comparing with previous values
int maxtimer; int maxtimer;
while(1) { while(1) {
maxtimer = MAX(MAX(l_txndelaycounter,l_framedelaycounter),MAX(r_txndelaycounter,r_framedelaycounter)); maxtimer = MAX(MAX(l_txndelaycounter,l_framedelaycounter),MAX(r_txndelaycounter,r_framedelaycounter));
maxtimer /= 100; maxtimer /= 100;
printf("Will wait for %d us\n",maxtimer); FILE_LOG(logINFO, ("Will wait for %d us\n",maxtimer));
usleep(maxtimer); usleep(maxtimer);
//read new values //read new values
@ -261,8 +258,7 @@ void Beb_EndofDataSend(int tengiga){
r_framepktMsbcounter_new = Beb_Read32(csp0base, addr_r_framepktMsbcounter); r_framepktMsbcounter_new = Beb_Read32(csp0base, addr_r_framepktMsbcounter);
r_txndelaycounter_new = Beb_Read32(csp0base, addr_r_txndelaycounter); r_txndelaycounter_new = Beb_Read32(csp0base, addr_r_txndelaycounter);
r_framedelaycounter_new = Beb_Read32(csp0base, addr_r_framedelaycounter); r_framedelaycounter_new = Beb_Read32(csp0base, addr_r_framedelaycounter);
//#ifdef VERBOSE FILE_LOG(logDEBUG5, ("\nLeft\n"
printf("\nLeft\n"
"FramepacketLsbcounter: %d\n" "FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n" "FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
@ -273,8 +269,7 @@ void Beb_EndofDataSend(int tengiga){
"Txndelaycounter:%d\n" "Txndelaycounter:%d\n"
"Framedelaycounter:%d\n\n", "Framedelaycounter:%d\n\n",
l_framepktLsbcounter_new,l_framepktMsbcounter_new,l_txndelaycounter_new,l_framedelaycounter_new, l_framepktLsbcounter_new,l_framepktMsbcounter_new,l_txndelaycounter_new,l_framedelaycounter_new,
r_framepktLsbcounter_new,r_framepktMsbcounter_new,r_txndelaycounter_new,r_framedelaycounter_new); r_framepktLsbcounter_new,r_framepktMsbcounter_new,r_txndelaycounter_new,r_framedelaycounter_new));
//#endif
if ((l_framepktLsbcounter == l_framepktLsbcounter_new) && if ((l_framepktLsbcounter == l_framepktLsbcounter_new) &&
(l_framepktMsbcounter == l_framepktMsbcounter_new) && (l_framepktMsbcounter == l_framepktMsbcounter_new) &&
@ -294,7 +289,7 @@ void Beb_EndofDataSend(int tengiga){
} }
printf("Detector has send all data\n"); FILE_LOG(logINFO, ("Detector has send all data\n"));
//close file pointer //close file pointer
Beb_close(fd,csp0base); Beb_close(fd,csp0base);
} }
@ -315,18 +310,19 @@ int Beb_SetMasterViaSoftware(){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0) if (fd < 0) {
cprintf(BG_RED,"Set Master FAIL\n"); FILE_LOG(logERROR, ("Set Master FAIL\n"));
else{ } else {
value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET); value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET);
value|=MASTER_BIT; value|=MASTER_BIT;
value|=OVERWRITE_HARDWARE_BIT; value|=OVERWRITE_HARDWARE_BIT;
int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value); int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value);
if(newval!=value) if (newval!=value) {
cprintf(BG_RED,"Could not set Master via Software\n"); FILE_LOG(logERROR, ("Could not set Master via Software\n"));
else } else {
ret = 0; ret = 0;
} }
}
//close file pointer //close file pointer
if (fd > 0) if (fd > 0)
@ -347,18 +343,19 @@ int Beb_SetSlaveViaSoftware(){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0) if (fd < 0) {
cprintf(BG_RED,"Set Slave FAIL\n"); FILE_LOG(logERROR, ("Set Slave FAIL\n"));
else{ } else {
value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET); value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET);
value&=~MASTER_BIT; value&=~MASTER_BIT;
value|=OVERWRITE_HARDWARE_BIT; value|=OVERWRITE_HARDWARE_BIT;
int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value); int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value);
if(newval!=value) if (newval!=value) {
cprintf(BG_RED,"Could not set Slave via Software\n"); FILE_LOG(logERROR, ("Could not set Slave via Software\n"));
else } else {
ret = 0; ret = 0;
} }
}
//close file pointer //close file pointer
if (fd > 0) if (fd > 0)
@ -374,12 +371,12 @@ int Beb_Activate(int enable){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0) if (fd < 0) {
cprintf(BG_RED,"Deactivate FAIL\n"); FILE_LOG(logERROR, ("Deactivate FAIL\n"));
else{ } else {
if (enable > -1) { if (enable > -1) {
value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET); value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET);
printf("Deactivate register value before:%d\n",value); FILE_LOG(logINFO, ("Deactivate register value before:%d\n",value));
if (enable) if (enable)
value&=~DEACTIVATE_BIT; value&=~DEACTIVATE_BIT;
else else
@ -387,10 +384,11 @@ int Beb_Activate(int enable){
int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value); int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value);
if (newval!=value) { if (newval!=value) {
if(enable) if (enable) {
cprintf(BG_RED,"Could not activate via Software\n"); FILE_LOG(logERROR, ("Could not activate via Software\n"));
else } else {
cprintf(BG_RED,"Could not deactivate via Software\n"); FILE_LOG(logERROR, ("Could not deactivate via Software\n"));
}
} }
} }
@ -398,10 +396,11 @@ int Beb_Activate(int enable){
if (value&DEACTIVATE_BIT) ret = 0; if (value&DEACTIVATE_BIT) ret = 0;
else ret = 1; else ret = 1;
if (enable == -1) { if (enable == -1) {
if(ret) if (ret) {
cprintf(BLUE,"Detector is active. Register value:%d\n", value); FILE_LOG(logINFOBLUE, ("Detector is active. Register value:%d\n", value));
else } else {
cprintf(BG_RED,"Detector is deactivated! Register value:%d\n", value); FILE_LOG(logERROR, ("Detector is deactivated! Register value:%d\n", value));
}
} }
} }
@ -428,7 +427,7 @@ int Beb_Set32bitOverflow(int val) {
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Could not read register to set overflow flag in 32 bit mode. FAIL\n"); FILE_LOG(logERROR, ("Could not read register to set overflow flag in 32 bit mode. FAIL\n"));
return -1; return -1;
} }
else { else {
@ -482,12 +481,12 @@ int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val){
strcpy(modename,"Flow Control for 10G"); strcpy(modename,"Flow Control for 10G");
if (val>0) val = 1; if (val>0) val = 1;
break; break;
default: cprintf(BG_RED,"Unrecognized mode in network parameter: %d\n",mode); return -1; default: FILE_LOG(logERROR, ("Unrecognized mode in network parameter: %d\n",mode)); return -1;
} }
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Could not read register to set network parameter. FAIL\n"); FILE_LOG(logERROR, ("Could not read register to set network parameter. FAIL\n"));
return -1; return -1;
} }
else { else {
@ -535,15 +534,16 @@ int Beb_ResetToHardwareSettings(){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0) if (fd < 0) {
cprintf(BG_RED,"Reset to Hardware Settings FAIL\n"); FILE_LOG(logERROR, ("Reset to Hardware Settings FAIL\n"));
else{ } else {
value = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,0); value = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,0);
if(value) if (value) {
cprintf(BG_RED,"Could not reset to hardware settings\n"); FILE_LOG(logERROR, ("Could not reset to hardware settings\n"));
else } else {
ret = 0; ret = 0;
} }
}
//close file pointer //close file pointer
if (fd > 0) if (fd > 0)
@ -561,12 +561,13 @@ u_int32_t Beb_GetFirmwareRevision(){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_VERSION); int fd = Beb_open(&csp0base,XPAR_VERSION);
if(fd < 0) if (fd < 0) {
cprintf(BG_RED,"Firmware Revision Read FAIL\n"); FILE_LOG(logERROR, ("Firmware Revision Read FAIL\n"));
else{ } else {
value = Beb_Read32(csp0base, FIRMWARE_VERSION_OFFSET); value = Beb_Read32(csp0base, FIRMWARE_VERSION_OFFSET);
if(!value) if (!value) {
cprintf(BG_RED,"Firmware Revision Number does not exist in this version\n"); FILE_LOG(logERROR, ("Firmware Revision Number does not exist in this version\n"));
}
} }
//close file pointer //close file pointer
@ -584,12 +585,13 @@ u_int32_t Beb_GetFirmwareSoftwareAPIVersion(){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_VERSION); int fd = Beb_open(&csp0base,XPAR_VERSION);
if(fd < 0) if (fd < 0) {
cprintf(BG_RED,"Firmware Software API Version Read FAIL\n"); FILE_LOG(logERROR, ("Firmware Software API Version Read FAIL\n"));
else{ } else {
value = Beb_Read32(csp0base, FIRMWARESOFTWARE_API_OFFSET); value = Beb_Read32(csp0base, FIRMWARESOFTWARE_API_OFFSET);
if(!value) if (!value) {
cprintf(BG_RED,"Firmware Software API Version does not exist in this version\n"); FILE_LOG(logERROR, ("Firmware Software API Version does not exist in this version\n"));
}
} }
//close file pointer //close file pointer
@ -609,14 +611,14 @@ void Beb_ResetFrameNumber(){
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Reset Frame Number FAIL\n"); FILE_LOG(logERROR, ("Reset Frame Number FAIL\n"));
} else { } else {
//write a 1 //write a 1
Beb_Write32(csp0base, FRAME_NUM_RESET_OFFSET, 1); Beb_Write32(csp0base, FRAME_NUM_RESET_OFFSET, 1);
usleep(100000); //100ms usleep(100000); //100ms
//write a 0 //write a 0
Beb_Write32(csp0base, FRAME_NUM_RESET_OFFSET, 0); Beb_Write32(csp0base, FRAME_NUM_RESET_OFFSET, 0);
printf("Frame Number Reset OK\n"); FILE_LOG(logINFO, ("Frame Number Reset OK\n"));
//close file pointer //close file pointer
Beb_close(fd,csp0base); Beb_close(fd,csp0base);
} }
@ -640,9 +642,9 @@ int Beb_InitBebInfos(){//file name at some point
bebInfoSize++; bebInfoSize++;
} }
int i0=34,i1=0; int i0=Beb_detid,i1=0;
if (Beb_GetBebInfoIndex(i0)) { if (Beb_GetBebInfoIndex(i0)) {
printf("Error adding beb 34(random), beb number %d already added.\n",i0); FILE_LOG(logERROR, ("cant add beb. adding beb %d, beb number %d already added.\n",Beb_detid, i0));
exit(0); exit(0);
} }
struct BebInfo b1; struct BebInfo b1;
@ -676,9 +678,8 @@ int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig, char* src_mac
/******* if (!i) return 0;****************************/ //i must be greater than 0, zero is the global send /******* if (!i) return 0;****************************/ //i must be greater than 0, zero is the global send
BebInfo_SetHeaderInfo(&beb_infos[i],ten_gig,src_mac,src_ip,src_port); BebInfo_SetHeaderInfo(&beb_infos[i],ten_gig,src_mac,src_ip,src_port);
printf("Printing Beb info number (%d) :\n",i); FILE_LOG(logINFO, ("Printing Beb info number (%d) :\n",i));
BebInfo_Print(&beb_infos[i]); BebInfo_Print(&beb_infos[i]);
printf("\n");
return 1; return 1;
} }
@ -689,8 +690,10 @@ int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig, char* src_mac
int Beb_CheckSourceStuffBebInfo() { int Beb_CheckSourceStuffBebInfo() {
unsigned int i; unsigned int i;
for(i=1;i<bebInfoSize;i++) { //header stuff always starts from 1 for(i=1;i<bebInfoSize;i++) { //header stuff always starts from 1
if(!Beb_SetHeaderData(BebInfo_GetBebNumber(&beb_infos[i]),0,"00:00:00:00:00:00","10.0.0.1",20000)||!Beb_SetHeaderData(BebInfo_GetBebNumber(&beb_infos[i]),1,"00:00:00:00:00:00","10.0.0.1",20000)){ if (!Beb_SetHeaderData(
printf("Error in BebInfo for module number %d.\n",BebInfo_GetBebNumber(&beb_infos[i])); BebInfo_GetBebNumber(&beb_infos[i]),0,"00:00:00:00:00:00","10.0.0.1",20000)||
!Beb_SetHeaderData(BebInfo_GetBebNumber(&beb_infos[i]),1,"00:00:00:00:00:00","10.0.0.1",20000)) {
FILE_LOG(logINFO, ("Error in BebInfo for module number %d.\n",BebInfo_GetBebNumber(&beb_infos[i])));
BebInfo_Print(&beb_infos[i]); BebInfo_Print(&beb_infos[i]);
return 0; return 0;
} }
@ -703,10 +706,10 @@ unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb){
unsigned int i; unsigned int i;
for(i=1;i<bebInfoSize;i++) for(i=1;i<bebInfoSize;i++)
if (beb_numb==BebInfo_GetBebNumber(&beb_infos[i])) { if (beb_numb==BebInfo_GetBebNumber(&beb_infos[i])) {
printf("*****found beb index:%d, for beb number:%d\n",i,beb_numb); FILE_LOG(logDEBUG5, ("*****found beb index:%d, for beb number:%d\n",i,beb_numb));
return i; return i;
} }
printf("*****Returning 0\n"); FILE_LOG(logDEBUG5, ("*****Returning 0\n"));
return 0; return 0;
} }
@ -718,7 +721,7 @@ int Beb_WriteTo(unsigned int index){
return 1; return 1;
if (index>=bebInfoSize) { if (index>=bebInfoSize) {
printf("WriteTo index error.\n"); FILE_LOG(logERROR, ("WriteTo index error.\n"));
return 0; return 0;
} }
@ -763,7 +766,7 @@ int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header
int fd = Beb_open(&csp0base,bram_phy_addr); int fd = Beb_open(&csp0base,bram_phy_addr);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Set up UDP Header FAIL\n"); FILE_LOG(logERROR, ("Set up UDP Header FAIL\n"));
} else { } else {
//read data //read data
memcpy(csp0base+header_number*16, &udp_header, sizeof(udp_header)); memcpy(csp0base+header_number*16, &udp_header, sizeof(udp_header));
@ -774,23 +777,6 @@ int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header
} }
//int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header_number, char* dst_mac, char* dst_ip, unsigned int dst_port){
// unsigned int i = 1;/*Beb_GetBebInfoIndex(beb_number);*/
//
// /***********************************if(!i) return 0; *************************************///i must be greater than 0, zero is the global send
//
// Beb_send_ndata = 14;
// Beb_send_data[0] = ten_gig ? 0x00020000 : 0x00010000; //write to fanout numbers 1 or 2
// Beb_send_data[1] = ((header_number*8)<<16);
// if(!Beb_SetHeaderData(beb_number,ten_gig,dst_mac,dst_ip,dst_port)) return 0;
//
// Beb_SwapDataFun(1,12,&(Beb_send_data[2]));
//
// if(!Beb_WriteTo(i)) return 0;
// printf("beb dst_port:%d\n",dst_port);
// return 1;
//}
int Beb_SetHeaderData(unsigned int beb_number, int ten_gig, char* dst_mac, char* dst_ip, unsigned int dst_port) { 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);*/ unsigned int i = 1;/*Beb_GetBebInfoIndex(beb_number);*/
@ -826,18 +812,18 @@ int Beb_SetHeaderData1(char* src_mac, char* src_ip, unsigned int src_port, char*
*/ */
if (!Beb_SetMAC(src_mac,&(udp_header.src_mac[0]))) return 0; if (!Beb_SetMAC(src_mac,&(udp_header.src_mac[0]))) return 0;
printf("Setting Source MAC to %s\n",src_mac); FILE_LOG(logINFO, ("Setting Source MAC to %s\n",src_mac));
if (!Beb_SetIP(src_ip,&(udp_header.src_ip[0]))) return 0; if (!Beb_SetIP(src_ip,&(udp_header.src_ip[0]))) return 0;
printf("Setting Source IP to %s\n",src_ip); FILE_LOG(logINFO, ("Setting Source IP to %s\n",src_ip));
if (!Beb_SetPortNumber(src_port,&(udp_header.src_port[0]))) return 0; if (!Beb_SetPortNumber(src_port,&(udp_header.src_port[0]))) return 0;
printf("Setting Source port to %d\n",src_port); FILE_LOG(logINFO, ("Setting Source port to %d\n",src_port));
if (!Beb_SetMAC(dst_mac,&(udp_header.dst_mac[0]))) return 0; if (!Beb_SetMAC(dst_mac,&(udp_header.dst_mac[0]))) return 0;
printf("Setting Destination MAC to %s\n",dst_mac); FILE_LOG(logINFO, ("Setting Destination MAC to %s\n",dst_mac));
if (!Beb_SetIP(dst_ip,&(udp_header.dst_ip[0]))) return 0; if (!Beb_SetIP(dst_ip,&(udp_header.dst_ip[0]))) return 0;
printf("Setting Destination IP to %s\n",dst_ip); FILE_LOG(logINFO, ("Setting Destination IP to %s\n",dst_ip));
if (!Beb_SetPortNumber(dst_port,&(udp_header.dst_port[0]))) return 0; if (!Beb_SetPortNumber(dst_port,&(udp_header.dst_port[0]))) return 0;
printf("Setting Destination port to %d\n",dst_port); FILE_LOG(logINFO, ("Setting Destination port to %d\n",dst_port));
Beb_AdjustIPChecksum(&udp_header); Beb_AdjustIPChecksum(&udp_header);
@ -862,7 +848,7 @@ int Beb_SetMAC(char* mac, uint8_t* dst_ptr){
char *pch = strtok (macVal,":"); char *pch = strtok (macVal,":");
while (pch != NULL) { while (pch != NULL) {
if (strlen(pch)!=2) { if (strlen(pch)!=2) {
printf("Error: in mac address -> %s\n",macVal); FILE_LOG(logERROR, ("Error: in mac address -> %s\n",macVal));
return 0; return 0;
} }
@ -881,7 +867,7 @@ int Beb_SetIP(char* ip, uint8_t* dst_ptr){
char *pch = strtok (ipVal,"."); char *pch = strtok (ipVal,".");
while (pch != NULL) { while (pch != NULL) {
if (((i!=3) && ((strlen(pch)>3) || (strlen(pch)<1))) || ((i==3)&&((strlen(pch)<1) || (strlen(pch) > 3)))) { if (((i!=3) && ((strlen(pch)>3) || (strlen(pch)<1))) || ((i==3)&&((strlen(pch)<1) || (strlen(pch) > 3)))) {
printf("Error: in ip address -> %s\n",ipVal); FILE_LOG(logERROR, ("Error: in ip address -> %s\n",ipVal));
return 0; return 0;
} }
@ -944,15 +930,11 @@ int Beb_SendMultiReadRequest(unsigned int beb_number, unsigned int left_right, i
Beb_send_data[1] = 0x62000000 | (!stop_read_when_fifo_empty) << 27 | (ten_gig==1) << 24 | packet_size << 14 | dst_number << 8 | npackets; Beb_send_data[1] = 0x62000000 | (!stop_read_when_fifo_empty) << 27 | (ten_gig==1) << 24 | packet_size << 14 | dst_number << 8 | npackets;
#ifdef MARTIN FILE_LOG(logDEBUG5, ("Beb_send_data[1]:%X\n",Beb_send_data[1]));
cprintf(GREEN, "Beb_send_data[1]:%X\n",Beb_send_data[1]);
#endif
Beb_send_data[2] = 0; Beb_send_data[2] = 0;
Beb_SwapDataFun(0,2,&(Beb_send_data[1])); Beb_SwapDataFun(0,2,&(Beb_send_data[1]));
#ifdef MARTIN FILE_LOG(logDEBUG5, ("Beb_send_data[1] Swapped:%X\n",Beb_send_data[1]));
cprintf(GREEN, "Beb_send_data[1] Swapped:%X\n",Beb_send_data[1]);
#endif
if (Beb_activated) { if (Beb_activated) {
if (!Beb_WriteTo(i)) return 0; if (!Beb_WriteTo(i)) return 0;
@ -983,7 +965,7 @@ int Beb_StopAcquisition()
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_CMD_GENERATOR); int fd = Beb_open(&csp0base,XPAR_CMD_GENERATOR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Beb Stop Acquisition FAIL\n"); FILE_LOG(logERROR, ("Beb Stop Acquisition FAIL\n"));
return 0; return 0;
} else { } else {
//find value //find value
@ -996,7 +978,7 @@ int Beb_StopAcquisition()
Beb_Write32(csp0base, (LEFT_OFFSET + STOP_ACQ_OFFSET),(valuel&(~STOP_ACQ_BIT))); Beb_Write32(csp0base, (LEFT_OFFSET + STOP_ACQ_OFFSET),(valuel&(~STOP_ACQ_BIT)));
Beb_Write32(csp0base, (RIGHT_OFFSET + STOP_ACQ_OFFSET),(valuer&(~STOP_ACQ_BIT))); Beb_Write32(csp0base, (RIGHT_OFFSET + STOP_ACQ_OFFSET),(valuer&(~STOP_ACQ_BIT)));
printf("Beb Stop Acquisition OK\n"); FILE_LOG(logINFO, ("Beb Stop Acquisition OK\n"));
//close file pointer //close file pointer
Beb_close(fd,csp0base); Beb_close(fd,csp0base);
} }
@ -1022,10 +1004,11 @@ int Beb_RequestNImages(unsigned int beb_number, int ten_gig, unsigned int dst_nu
if (in_two_requests) npackets/=2; if (in_two_requests) npackets/=2;
#ifdef MARTIN FILE_LOG(logDEBUG5, ("----Beb_RequestNImages Start----\n"));
cprintf(RED, "----Beb_RequestNImages Start----\n"); FILE_LOG(logDEBUG5, ("beb_number:%X, ten_gig:%X,dst_number:%X, npackets:%X, "
cprintf(RED, "beb_number:%X, ten_gig:%X,dst_number:%X,npackets:%X,Beb_bit_mode:%X,header_size:%X,nimages:%d,test_just_send_out_packets_no_wait:%X\n",beb_number,ten_gig,dst_number,npackets,Beb_bit_mode,header_size,nimages,test_just_send_out_packets_no_wait); "Beb_bit_mode:%X, header_size:%X, nimages:%d, test_just_send_out_packets_no_wait:%X\n",
#endif beb_number, ten_gig, dst_number, npackets, Beb_bit_mode, header_size,
nimages, test_just_send_out_packets_no_wait));
// CMD_GEN core registers // CMD_GEN core registers
// //
@ -1062,25 +1045,23 @@ int Beb_RequestNImages(unsigned int beb_number, int ten_gig, unsigned int dst_nu
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_CMD_GENERATOR); int fd = Beb_open(&csp0base,XPAR_CMD_GENERATOR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Beb Request N Images FAIL\n"); FILE_LOG(logERROR, ("Beb Request N Images FAIL\n"));
return 0; return 0;
} else { } else {
{
#ifdef MARTIN
int i; int i;
for (i=0; i < 10; i++) for (i=0; i < 10; i++)
printf("%X\n",Beb_Read32(baseaddr, (LEFT_OFFSET + i*4))); FILE_LOG(logDEBUG5, ("%X\n",Beb_Read32(csp0base, (LEFT_OFFSET + i*4))));
#endif }
// Generating commands // Generating commands
send_header_command = 0x62000000 | (!test_just_send_out_packets_no_wait) << 27 | (ten_gig==1) << 24 | header_size << 14 | 0; send_header_command = 0x62000000 | (!test_just_send_out_packets_no_wait) << 27 | (ten_gig==1) << 24 | header_size << 14 | 0;
send_frame_command = 0x62000000 | (!test_just_send_out_packets_no_wait) << 27 | (ten_gig==1) << 24 | packet_size << 14 | (npackets-1); send_frame_command = 0x62000000 | (!test_just_send_out_packets_no_wait) << 27 | (ten_gig==1) << 24 | packet_size << 14 | (npackets-1);
{
#ifdef MARTIN int i;
for (i=0; i < 10; i++) for (i=0; i < 10; i++)
printf("%X\n",Beb_Read32(baseaddr, (LEFT_OFFSET + i*4))); FILE_LOG(logDEBUG5, ("%X\n",Beb_Read32(csp0base, (LEFT_OFFSET + i*4))));
printf("%d\n",in_two_requests); FILE_LOG(logDEBUG5, ("%d\n",in_two_requests));
#endif }
//"0x20 << 8" is dst_number (0x00 for left, 0x20 for right) //"0x20 << 8" is dst_number (0x00 for left, 0x20 for right)
//Left //Left
Beb_Write32(csp0base, (LEFT_OFFSET + FIRST_CMD_PART1_OFFSET),0); Beb_Write32(csp0base, (LEFT_OFFSET + FIRST_CMD_PART1_OFFSET),0);
@ -1104,18 +1085,15 @@ int Beb_RequestNImages(unsigned int beb_number, int ten_gig, unsigned int dst_nu
// Set number of frames // Set number of frames
Beb_Write32(csp0base, (LEFT_OFFSET + COMMAND_COUNTER_OFFSET), nimages*(2+in_two_requests)); Beb_Write32(csp0base, (LEFT_OFFSET + COMMAND_COUNTER_OFFSET), nimages*(2+in_two_requests));
Beb_Write32(csp0base, (RIGHT_OFFSET + COMMAND_COUNTER_OFFSET), nimages*(2+in_two_requests)); Beb_Write32(csp0base, (RIGHT_OFFSET + COMMAND_COUNTER_OFFSET), nimages*(2+in_two_requests));
{
#ifdef MARTIN int i;
for (i=0; i < 10; i++) for (i=0; i < 10; i++)
printf("%X\n",Beb_Read32(baseaddr, (LEFT_OFFSET + i*4))); //*(ptrl+i)); FILE_LOG(logDEBUG5, ("%X\n",Beb_Read32(csp0base, (LEFT_OFFSET + i*4)))); //*(ptrl+i));
printf("%d\n",in_two_requests); FILE_LOG(logDEBUG5, ("%d\n",in_two_requests));
#endif }
Beb_close(fd,csp0base); Beb_close(fd,csp0base);
#ifdef MARTIN FILE_LOG(logDEBUG5, ("----Beb_RequestNImages----\n"));
printf("----Beb_RequestNImages----\n");
#endif
} }
return 1; return 1;
@ -1123,7 +1101,7 @@ int Beb_RequestNImages(unsigned int beb_number, int ten_gig, unsigned int dst_nu
int Beb_Test(unsigned int beb_number) { int Beb_Test(unsigned int beb_number) {
printf("Testing module number: %d\n",beb_number); FILE_LOG(logINFO, ("Testing module number: %d\n",beb_number));
//int SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header_number, string dst_mac, string dst_ip, unsigned int dst_port) { //int SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header_number, string dst_mac, string dst_ip, unsigned int dst_port) {
@ -1131,14 +1109,14 @@ int Beb_Test(unsigned int beb_number){
unsigned int index = Beb_GetBebInfoIndex(beb_number); unsigned int index = Beb_GetBebInfoIndex(beb_number);
if (!index) { if (!index) {
printf("Error beb number (%d)not in list????\n",beb_number); FILE_LOG(logERROR, ("Error beb number (%d)not in list????\n",beb_number));
return 0; return 0;
} }
unsigned int i; unsigned int i;
for(i=0;i<64;i++) { for(i=0;i<64;i++) {
if (!Beb_SetUpUDPHeader(beb_number,0,i,"60:fb:42:f4:e3:d2","129.129.205.186",22000+i)) { if (!Beb_SetUpUDPHeader(beb_number,0,i,"60:fb:42:f4:e3:d2","129.129.205.186",22000+i)) {
printf("Error setting up header table....\n"); FILE_LOG(logERROR, ("Error setting up header table....\n"));
return 0; return 0;
} }
} }
@ -1146,7 +1124,7 @@ int Beb_Test(unsigned int beb_number){
// 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=1); // 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=1);
for(i=0;i<64;i++) { for(i=0;i<64;i++) {
if (!Beb_SendMultiReadRequest(beb_number,i%3+1,0,i,1,0,1)) { if (!Beb_SendMultiReadRequest(beb_number,i%3+1,0,i,1,0,1)) {
printf("Error requesting data....\n"); FILE_LOG(logERROR, ("Error requesting data....\n"));
return 0; return 0;
} }
} }
@ -1166,7 +1144,7 @@ int Beb_GetBebFPGATemp()
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_SYSMON_0_BASEADDR); int fd = Beb_open(&csp0base,XPAR_SYSMON_0_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Module Configuration FAIL\n"); FILE_LOG(logERROR, ("Module Configuration FAIL\n"));
} else { } else {
//read data //read data
ret = Beb_Read32(csp0base, FPGA_TEMP_OFFSET); ret = Beb_Read32(csp0base, FPGA_TEMP_OFFSET);
@ -1184,30 +1162,30 @@ void Beb_SetDetectorNumber(uint32_t detid) {
return; return;
uint32_t swapid = Beb_swap_uint16(detid); uint32_t swapid = Beb_swap_uint16(detid);
//cprintf(GREEN, "detector id %d swapped %d\n", detid, swapid); //FILE_LOG(logINFO, "detector id %d swapped %d\n", detid, swapid));
u_int32_t* csp0base=0; u_int32_t* csp0base=0;
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_TEST_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_TEST_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Set Detector ID FAIL\n"); FILE_LOG(logERROR, ("Set Detector ID FAIL\n"));
return; return;
} else { } else {
uint32_t value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_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_LEFT_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_LEFT_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)) if ((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK)) {
cprintf(BG_RED,"Set Detector ID FAIL\n"); FILE_LOG(logERROR, ("Set Detector ID FAIL\n"));
}
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST); value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_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_RIGHT_OFST, value | ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK)); 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); 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"); FILE_LOG(logERROR, ("Set Detector ID FAIL\n"));
}
Beb_close(fd,csp0base); Beb_close(fd,csp0base);
} }
printf("detector id %d has been set in udp header\n", detid); FILE_LOG(logINFO, ("Detector id %d set in UDP Header\n\n", detid));
} }
@ -1215,7 +1193,7 @@ void Beb_SetDetectorNumber(uint32_t detid) {
int Beb_SetDetectorPosition(int pos[]) { int Beb_SetDetectorPosition(int pos[]) {
if (!Beb_activated) if (!Beb_activated)
return OK; return OK;
cprintf(BLUE,"Got Position values %d %d %d...\n", pos[0],pos[1], pos[2]); FILE_LOG(logINFO, ("Got Position values %d %d %d...\n", pos[0],pos[1], pos[2]));
pos[0] = Beb_swap_uint16(pos[0]); pos[0] = Beb_swap_uint16(pos[0]);
//pos[1] = Beb_swap_uint16(pos[1]); //pos[1] = Beb_swap_uint16(pos[1]);
@ -1227,7 +1205,7 @@ int Beb_SetDetectorPosition(int pos[]) {
//open file pointer //open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_TEST_BASEADDR); int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_TEST_BASEADDR);
if (fd < 0) { if (fd < 0) {
cprintf(BG_RED,"Set Detector Position FAIL\n"); FILE_LOG(logERROR, ("Set Detector Position FAIL\n"));
return FAIL; return FAIL;
} else { } else {
uint32_t value = 0; uint32_t value = 0;
@ -1289,11 +1267,11 @@ int Beb_SetDetectorPosition(int pos[]) {
Beb_close(fd,csp0base); Beb_close(fd,csp0base);
} }
if (ret == OK) { if (ret == OK) {
cprintf(BLUE, "Position set to...\n" FILE_LOG(logINFO, ("Position set to...\n"
"Left: [%d, %d, %d]\n" "Left: [%d, %d, %d]\n"
"Right:[%d, %d, %d]\n", "Right:[%d, %d, %d]\n",
Beb_swap_uint16(pos[0]), Beb_top ? pos[1] : (pos[1]+1), Beb_swap_uint16(pos[2]), Beb_swap_uint16(pos[0]), Beb_top ? pos[1] : (pos[1]+1), Beb_swap_uint16(pos[2]),
Beb_swap_uint16(pos[0]), Beb_top ? (pos[1]+1) : pos[1], Beb_swap_uint16(pos[2])); Beb_swap_uint16(pos[0]), Beb_top ? (pos[1]+1) : pos[1], Beb_swap_uint16(pos[2])));
} }
return ret; return ret;
@ -1307,20 +1285,16 @@ uint16_t Beb_swap_uint16( uint16_t val) {
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); int fd = open("/dev/mem", O_RDWR | O_SYNC, 0);
if (fd == -1) if (fd == -1) {
cprintf(BG_RED,"\nCan't find /dev/mem!\n"); FILE_LOG(logERROR, ("\nCan't find /dev/mem!\n"));
else{ } else {
#ifdef VERBOSE FILE_LOG(logDEBUG5, ("/dev/mem opened\n"));
printf("/dev/mem opened\n");
#endif
*csp0base = (u_int32_t*)mmap(0, BEB_MMAP_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, offset); *csp0base = (u_int32_t*)mmap(0, BEB_MMAP_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, offset);
if (*csp0base == MAP_FAILED) { if (*csp0base == MAP_FAILED) {
cprintf(BG_RED,"\nCan't map memmory area!!\n"); FILE_LOG(logERROR, ("\nCan't map memmory area!!\n"));
fd = -1; fd = -1;
} }
#ifdef VERBOSE else FILE_LOG(logDEBUG5, ("CSP0 mapped %p\n",(void*)*csp0base));
else printf("CSP0 mapped %p\n",(void*)*csp0base);
#endif
} }
return fd; return fd;
} }

View File

@ -1,13 +1,4 @@
#pragma once
/**
* @author Ian Johnson
* @version 1.0
*/
#ifndef BEB_H
#define BEB_H
#include "LocalLinkInterface.h" #include "LocalLinkInterface.h"
@ -36,9 +27,6 @@ struct BebInfo{
char* BebInfo_GetSrcIP(struct BebInfo* bebInfo, int ten_gig); char* BebInfo_GetSrcIP(struct BebInfo* bebInfo, int ten_gig);
unsigned int BebInfo_GetSrcPort(struct BebInfo* bebInfo, int ten_gig); unsigned int BebInfo_GetSrcPort(struct BebInfo* bebInfo, int ten_gig);
void BebInfo_Print(struct BebInfo* bebInfo); void BebInfo_Print(struct BebInfo* bebInfo);
void Beb_ClearBebInfos(); void Beb_ClearBebInfos();
int Beb_InitBebInfos(); int Beb_InitBebInfos();
int Beb_CheckSourceStuffBebInfo(); int Beb_CheckSourceStuffBebInfo();
@ -57,9 +45,7 @@ struct BebInfo{
u_int32_t Beb_GetFirmwareRevision(); u_int32_t Beb_GetFirmwareRevision();
u_int32_t Beb_GetFirmwareSoftwareAPIVersion(); u_int32_t Beb_GetFirmwareSoftwareAPIVersion();
void Beb_ResetFrameNumber(); void Beb_ResetFrameNumber();
int Beb_WriteTo(unsigned int index); int Beb_WriteTo(unsigned int index);
int Beb_SetMAC(char* mac, uint8_t* dst_ptr); int Beb_SetMAC(char* mac, uint8_t* dst_ptr);
int Beb_SetIP(char* ip, uint8_t* dst_ptr); int Beb_SetIP(char* ip, uint8_t* dst_ptr);
int Beb_SetPortNumber(unsigned int port_number, uint8_t* dst_ptr); int Beb_SetPortNumber(unsigned int port_number, uint8_t* dst_ptr);
@ -70,11 +56,7 @@ struct BebInfo{
void Beb_SwapDataFun(int little_endian, unsigned int n, unsigned int *d); void Beb_SwapDataFun(int little_endian, unsigned int n, unsigned int *d);
int Beb_SetByteOrder(); int Beb_SetByteOrder();
void Beb_Beb(); void Beb_Beb();
int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig, char* src_mac, char* src_ip, unsigned int src_port); int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig, char* src_mac, char* src_ip, unsigned int src_port);
int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header_number, char* dst_mac, char* dst_ip, unsigned int dst_port); int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header_number, char* dst_mac, char* dst_ip, unsigned int dst_port);
@ -99,5 +81,4 @@ struct BebInfo{
u_int32_t Beb_Write32 (u_int32_t* baseaddr, u_int32_t offset, u_int32_t data); u_int32_t Beb_Write32 (u_int32_t* baseaddr, u_int32_t offset, u_int32_t data);
void Beb_close(int fd,u_int32_t* csp0base); void Beb_close(int fd,u_int32_t* csp0base);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,8 @@
#pragma once
/** #include "FebInterface.h"
* @author Ian Johnson
* @version 1.0
*/
#ifndef FEBCONTROL_H
#define FEBCONTROL_H
#include <netinet/in.h> #include <netinet/in.h>
#include <stdlib.h> #include <stdlib.h>
//#include <string>
//#include <vector>
#include "FebInterface.h"
struct Module{ struct Module{
@ -60,62 +48,36 @@ int Module_SetBottomDACValue(struct Module* mod,unsigned int i, int val
int Module_GetBottomDACValue(struct Module* mod,unsigned int i); int Module_GetBottomDACValue(struct Module* mod,unsigned int i);
void Feb_Control_activate(int activate); void Feb_Control_activate(int activate);
int Feb_Control_IsBottomModule(); int Feb_Control_IsBottomModule();
int Feb_Control_GetModuleNumber(); int Feb_Control_GetModuleNumber();
void Feb_Control_PrintModuleList(); void Feb_Control_PrintModuleList();
int Feb_Control_GetModuleIndex(unsigned int module_number, unsigned int* module_index); int Feb_Control_GetModuleIndex(unsigned int module_number, unsigned int* module_index);
int Feb_Control_CheckModuleAddresses(struct Module* m); int Feb_Control_CheckModuleAddresses(struct Module* m);
int Feb_Control_AddModule(unsigned int module_number, unsigned int top_address); int Feb_Control_AddModule(unsigned int module_number, unsigned int top_address);
/*int Feb_Control_AddModule(unsigned int module_number, unsigned int top_address, unsigned int bottom_address, int half_module=0);*/
int Feb_Control_AddModule1(unsigned int module_number, int top_enable, unsigned int top_address, unsigned int bottom_address, int half_module); int Feb_Control_AddModule1(unsigned int module_number, int top_enable, unsigned int top_address, unsigned int bottom_address, int half_module);
int Feb_Control_GetDACNumber(char* s, unsigned int* n); int Feb_Control_GetDACNumber(char* s, unsigned int* n);
int Feb_Control_SendDACValue(unsigned int dst_num, unsigned int ch, unsigned int* value); int Feb_Control_SendDACValue(unsigned int dst_num, unsigned int ch, unsigned int* value);
int Feb_Control_VoltageToDAC(float value, unsigned int* digital, unsigned int nsteps, float vmin, float vmax); int Feb_Control_VoltageToDAC(float value, unsigned int* digital, unsigned int nsteps, float vmin, float vmax);
float Feb_Control_DACToVoltage(unsigned int digital,unsigned int nsteps,float vmin,float vmax); float Feb_Control_DACToVoltage(unsigned int digital,unsigned int nsteps,float vmin,float vmax);
int Feb_Control_SendIDelays(unsigned int dst_num, int chip_lr, unsigned int channels, unsigned int ndelay_units); int Feb_Control_SendIDelays(unsigned int dst_num, int chip_lr, unsigned int channels, unsigned int ndelay_units);
int Feb_Control_SetStaticBits(); int Feb_Control_SetStaticBits();
int Feb_Control_SetStaticBits1(unsigned int the_static_bits); int Feb_Control_SetStaticBits1(unsigned int the_static_bits);
int Feb_Control_SendBitModeToBebServer(); int Feb_Control_SendBitModeToBebServer();
unsigned int Feb_Control_ConvertTimeToRegister(float time_in_sec); unsigned int Feb_Control_ConvertTimeToRegister(float time_in_sec);
unsigned int Feb_Control_AddressToAll(); unsigned int Feb_Control_AddressToAll();
int Feb_Control_SetCommandRegister(unsigned int cmd); int Feb_Control_SetCommandRegister(unsigned int cmd);
int Feb_Control_GetDAQStatusRegister(unsigned int dst_address, unsigned int* ret_status); int Feb_Control_GetDAQStatusRegister(unsigned int dst_address, unsigned int* ret_status);
/*int Feb_Control_StartDAQOnlyNWaitForFinish(int sleep_time_us=5000);*/
int Feb_Control_StartDAQOnlyNWaitForFinish(int sleep_time_us); int Feb_Control_StartDAQOnlyNWaitForFinish(int sleep_time_us);
int Feb_Control_ResetChipCompletely(); int Feb_Control_ResetChipCompletely();
int Feb_Control_ResetChipPartially(); int Feb_Control_ResetChipPartially();
//struct sockaddr_in Feb_Control_serv_addr;
/*
int Feb_Control_SetupSendToSocket(const char* ip_address_hostname, unsigned short int port);
int Feb_Control_WriteNRead(char* message, int length, int max_length);
*/
void Feb_Control_FebControl(); void Feb_Control_FebControl();
int Feb_Control_Init(int master, int top, int normal, int module_num); int Feb_Control_Init(int master, int top, int normal, int module_num);
int Feb_Control_OpenSerialCommunication(); int Feb_Control_OpenSerialCommunication();
void Feb_Control_CloseSerialCommunication(); void Feb_Control_CloseSerialCommunication();
int Feb_Control_CheckSetup(); int Feb_Control_CheckSetup();
unsigned int Feb_Control_GetNModules(); unsigned int Feb_Control_GetNModules();
unsigned int Feb_Control_GetNHalfModules(); unsigned int Feb_Control_GetNHalfModules();
@ -129,21 +91,13 @@ int Feb_Control_GetModuleNumber();
int Feb_Control_SetIDelays1(unsigned int module_num, unsigned int chip_pos, unsigned int ndelay_units); int Feb_Control_SetIDelays1(unsigned int module_num, unsigned int chip_pos, unsigned int ndelay_units);
int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* top, int* bottom, unsigned int* dac_ch); int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* top, int* bottom, unsigned int* dac_ch);
/*int Feb_Control_SetDAC(string s, int value, int is_a_voltage_mv=0);*/
int Feb_Control_SetDAC(char* s, int value, int is_a_voltage_mv); int Feb_Control_SetDAC(char* s, int value, int is_a_voltage_mv);
/* int Feb_Control_GetDAC(string s, int* ret_value, int voltage_mv=0);*/
int Feb_Control_GetDAC(char* s, int* ret_value, int voltage_mv); int Feb_Control_GetDAC(char* s, int* ret_value, int voltage_mv);
int Feb_Control_GetDACName(unsigned int dac_num,char* s); int Feb_Control_GetDACName(unsigned int dac_num,char* s);
int Feb_Control_SetTrimbits(unsigned int module_num, unsigned int* trimbits); int Feb_Control_SetTrimbits(unsigned int module_num, unsigned int* trimbits);
unsigned int* Feb_Control_GetTrimbits(); unsigned int* Feb_Control_GetTrimbits();
/**Added by Dhanya */
int Feb_Control_SaveAllTrimbitsTo(int value); int Feb_Control_SaveAllTrimbitsTo(int value);
int Feb_Control_Reset(); int Feb_Control_Reset();
int Feb_Control_PrepareForAcquisition(); int Feb_Control_PrepareForAcquisition();
@ -151,11 +105,8 @@ int Feb_Control_GetModuleNumber();
int Feb_Control_StopAcquisition(); int Feb_Control_StopAcquisition();
int Feb_Control_AcquisitionInProgress(); int Feb_Control_AcquisitionInProgress();
int Feb_Control_AcquisitionStartedBit(); int Feb_Control_AcquisitionStartedBit();
/*int Feb_Control_WaitForFinishedFlag(int sleep_time_us=5000);*/
int Feb_Control_WaitForFinishedFlag(int sleep_time_us); int Feb_Control_WaitForFinishedFlag(int sleep_time_us);
int Feb_Control_WaitForStartedFlag(int sleep_time_us, int prev_flag); int Feb_Control_WaitForStartedFlag(int sleep_time_us, int prev_flag);
//functions for setting up exposure
void Feb_Control_PrintAcquisitionSetup(); void Feb_Control_PrintAcquisitionSetup();
int Feb_Control_SetNExposures(unsigned int n_images); int Feb_Control_SetNExposures(unsigned int n_images);
unsigned int Feb_Control_GetNExposures(); unsigned int Feb_Control_GetNExposures();
@ -175,8 +126,6 @@ int Feb_Control_GetModuleNumber();
int Feb_Control_SetTriggerMode(unsigned int trigger_mode, int polarity);//0 and 1 was default, int Feb_Control_SetTriggerMode(unsigned int trigger_mode, int polarity);//0 and 1 was default,
int Feb_Control_SetExternalEnableMode(int use_external_enable, int polarity);//0 and 1 was default, int Feb_Control_SetExternalEnableMode(int use_external_enable, int polarity);//0 and 1 was default,
//functions for testing
/*int Feb_Control_SetTestModeVariable(int on=1);*/
int Feb_Control_SetInTestModeVariable(int on); int Feb_Control_SetInTestModeVariable(int on);
int Feb_Control_GetTestModeVariable(); int Feb_Control_GetTestModeVariable();
@ -207,4 +156,4 @@ int Feb_Control_GetModuleNumber();
uint32_t Feb_Control_WriteRegister(uint32_t offset, uint32_t data); uint32_t Feb_Control_WriteRegister(uint32_t offset, uint32_t data);
uint32_t Feb_Control_ReadRegister(uint32_t offset); uint32_t Feb_Control_ReadRegister(uint32_t offset);
#endif

View File

@ -1,26 +1,12 @@
#include "FebInterface.h"
/** #include "LocalLinkInterface.h"
* @author Ian Johnson #include "xparameters.h"
* @version 1.0 #include "logger.h"
*/
//#include <iostream>
//#include <iomanip>
//#include <unistd.h>
//#include <string.h>
//#include <sys/mman.h>
//#include <fcntl.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include "xparameters.h"
#include "FebInterface.h"
struct LocalLinkInterface ll_local,* ll; struct LocalLinkInterface ll_local,* ll;
@ -71,9 +57,7 @@ void Feb_Interface_SendCompleteList(unsigned int n,unsigned int* list){
int Feb_Interface_WriteTo(unsigned int ch) { int Feb_Interface_WriteTo(unsigned int ch) {
if (ch>0xfff) return 0; if (ch>0xfff) return 0;
#ifdef MARTIN FILE_LOG(logDEBUG5, ("FIW ch %d\n", ch));
cprintf(YELLOW, "FIW ch %d\n", ch);
#endif
Feb_Interface_send_data_raw[0] = 0x8fff0000; Feb_Interface_send_data_raw[0] = 0x8fff0000;
if (Local_Write(ll,4,Feb_Interface_send_data_raw)!=4) return 0; if (Local_Write(ll,4,Feb_Interface_send_data_raw)!=4) return 0;
@ -193,7 +177,10 @@ int Feb_Interface_WriteMemory(unsigned int sub_num, unsigned int mem_num, unsign
mem_num &= 0x3f; mem_num &= 0x3f;
start_address &= 0x3fff; start_address &= 0x3fff;
nwrites &= 0x3ff; nwrites &= 0x3ff;
if(!nwrites||nwrites>Feb_Interface_send_buffer_size-2) {printf("error herer: nwrites:%d\n",nwrites);return 0;}//*d-1026 if (!nwrites||nwrites>Feb_Interface_send_buffer_size-2) {
FILE_LOG(logERROR, ("invalid nwrites:%d\n",nwrites));
return 0;
}//*d-1026
Feb_Interface_send_ndata = nwrites+2;//*d-1026 Feb_Interface_send_ndata = nwrites+2;//*d-1026
Feb_Interface_send_data[0] = 0xc0000000 | mem_num << 24 | nwrites << 14 | start_address; //cmd -> write to memory, nwrites, mem number, start address Feb_Interface_send_data[0] = 0xc0000000 | mem_num << 24 | nwrites << 14 | start_address; //cmd -> write to memory, nwrites, mem number, start address

View File

@ -1,43 +1,14 @@
#pragma once
/**
* @author Ian Johnson
* @version 1.0
*/
#ifndef FEBINTERFACE_H
#define FEBINTERFACE_H
#include "LocalLinkInterface.h"
int Feb_Interface_WriteTo(unsigned int ch); int Feb_Interface_WriteTo(unsigned int ch);
/*int Feb_Interface_ReadFrom(unsigned int ch, unsigned int ntrys=20);*/
int Feb_Interface_ReadFrom(unsigned int ch, unsigned int ntrys); int Feb_Interface_ReadFrom(unsigned int ch, unsigned int ntrys);
void Feb_Interface_FebInterface(); void Feb_Interface_FebInterface();
void Feb_Interface_SendCompleteList(unsigned int n,unsigned int* list); void Feb_Interface_SendCompleteList(unsigned int n,unsigned int* list);
int Feb_Interface_SetByteOrder(); int Feb_Interface_SetByteOrder();
int Feb_Interface_ReadRegister(unsigned int sub_num, unsigned int reg_num,unsigned int* value_read); int Feb_Interface_ReadRegister(unsigned int sub_num, unsigned int reg_num,unsigned int* value_read);
int Feb_Interface_ReadRegisters(unsigned int sub_num, unsigned int nreads, unsigned int* reg_nums,unsigned int* values_read); int Feb_Interface_ReadRegisters(unsigned int sub_num, unsigned int nreads, unsigned int* reg_nums,unsigned int* values_read);
/*int Feb_Interface_WriteRegister(unsigned int sub_num, unsigned int reg_num,unsigned int value, int wait_on=0, unsigned int wait_on_address=0);*/
int Feb_Interface_WriteRegister(unsigned int sub_num, unsigned int reg_num,unsigned int value, int wait_on, unsigned int wait_on_address); int Feb_Interface_WriteRegister(unsigned int sub_num, unsigned int reg_num,unsigned int value, int wait_on, unsigned int wait_on_address);
/*int Feb_Interface_WriteRegisters(unsigned int sub_num, unsigned int nwrites, unsigned int* reg_nums, unsigned int* values, int* wait_ons=0, unsigned int* wait_on_addresses=0);*/
int Feb_Interface_WriteRegisters(unsigned int sub_num, unsigned int nwrites, unsigned int* reg_nums, unsigned int* values, int* wait_ons, unsigned int* wait_on_addresses); int Feb_Interface_WriteRegisters(unsigned int sub_num, unsigned int nwrites, unsigned int* reg_nums, unsigned int* values, int* wait_ons, unsigned int* wait_on_addresses);
//mem_num is 0 for trimbit BRAM and 1 for rate correction BRAM
int Feb_Interface_WriteMemoryInLoops(unsigned int sub_num, unsigned int mem_num, unsigned int start_address, unsigned int nwrites, unsigned int *values); int Feb_Interface_WriteMemoryInLoops(unsigned int sub_num, unsigned int mem_num, unsigned int start_address, unsigned int nwrites, unsigned int *values);
int Feb_Interface_WriteMemory(unsigned int sub_num, unsigned int mem_num, unsigned int start_address, unsigned int nwrites, unsigned int *values); int Feb_Interface_WriteMemory(unsigned int sub_num, unsigned int mem_num, unsigned int start_address, unsigned int nwrites, unsigned int *values);
#endif

View File

@ -1,14 +1,3 @@
//Class initially from Gerd and was called mmap_test.c
//return reversed 1 means good, 0 means failed
//#include <stdio.h>
//#include <unistd.h>
//#include <string.h>
//#include <sys/mman.h>
//#include <fcntl.h>
#include "HardwareIO.h" #include "HardwareIO.h"
xfs_u8 HWIO_xfs_in8(xfs_u32 InAddress) xfs_u8 HWIO_xfs_in8(xfs_u32 InAddress)

View File

@ -1,35 +1,27 @@
#include "LocalLinkInterface.h"
//Class initially from Gerd and was called mmap_test.c #include "HardwareMMappingDefs.h"
//return reversed 1 means good, 0 means failed #include "logger.h"
#include "ansi.h"
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
//#include <string.h> #include <sys/mman.h>
#include <fcntl.h>
#include "HardwareMMappingDefs.h"
#include "LocalLinkInterface.h"
void Local_LocalLinkInterface1(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr) { void Local_LocalLinkInterface1(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr) {
// printf("\n v 1 \n"); FILE_LOG(logDEBUG5, ("Initialize PLB LL FIFOs\n"));
printf("Initialize PLB LL FIFOs\n");
ll->ll_fifo_base=0; ll->ll_fifo_base=0;
ll->ll_fifo_ctrl_reg=0; ll->ll_fifo_ctrl_reg=0;
if (Local_Init(ll,ll_fifo_badr)) { if (Local_Init(ll,ll_fifo_badr)) {
Local_Reset(ll); Local_Reset(ll);
printf("\tFIFO Status : 0x%08x\n",Local_StatusVector(ll)); FILE_LOG(logDEBUG5, ("\tFIFO Status : 0x%08x\n\n\n", Local_StatusVector(ll)));
}else printf("\tError LocalLink Mappping : 0x%08x\n",ll_fifo_badr); } else FILE_LOG(logERROR, ("\tCould not map LocalLink : 0x%08x\n\n\n", ll_fifo_badr));
printf("\n\n");
} }
/*~LocalLinkInterface(){};*/
void Local_LocalLinkInterface(struct LocalLinkInterface* ll) { void Local_LocalLinkInterface(struct LocalLinkInterface* ll) {
printf("Initializing new memory\n"); FILE_LOG(logDEBUG5, ("Initializing new memory\n"));
} }
@ -65,7 +57,7 @@ int Local_Reset(struct LocalLinkInterface* ll){
int Local_Reset1(struct LocalLinkInterface* ll,unsigned int rst_mask) { int Local_Reset1(struct LocalLinkInterface* ll,unsigned int rst_mask) {
ll->ll_fifo_ctrl_reg |= rst_mask; ll->ll_fifo_ctrl_reg |= rst_mask;
printf("\tCTRL Register bits: 0x%08x\n",ll->ll_fifo_ctrl_reg); FILE_LOG(logDEBUG5, ("\tCTRL Register bits: 0x%08x\n",ll->ll_fifo_ctrl_reg));
HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg); HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg);
HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg); HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg);
@ -75,7 +67,6 @@ int Local_Reset1(struct LocalLinkInterface* ll,unsigned int rst_mask){
ll->ll_fifo_ctrl_reg &= (~rst_mask); ll->ll_fifo_ctrl_reg &= (~rst_mask);
HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg); HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg);
// printf("FIFO CTRL Address: 0x%08x\n FIFO CTRL Register: 0x%08x\n",PLB_LL_FIFO_REG_CTRL,plb_ll_fifo[PLB_LL_FIFO_REG_CTRL]);
return 1; return 1;
} }
@ -101,12 +92,9 @@ int Local_Write(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buf
last_word = (buffer_len-1)/4; last_word = (buffer_len-1)/4;
word_ptr = (unsigned int *)buffer; word_ptr = (unsigned int *)buffer;
#ifdef MARTIN FILE_LOG(logDEBUG5, ("LL Write - Len: %2d - If: %X - Data: ",buffer_len, ll->ll_fifo_base));
cprintf(BLUE, "LL Write - Len: %2d - If: %X - Data: ",buffer_len, ll->ll_fifo_base);
for (i=0; i < buffer_len/4; i++) for (i=0; i < buffer_len/4; i++)
cprintf(BLUE, "%.8X ",*(((unsigned *) buffer)+i)); FILE_LOG(logDEBUG5, ("%.8X ",*(((unsigned *) buffer)+i)));
printf("\n");
#endif
while (words_send <= last_word) while (words_send <= last_word)
{ {
@ -114,9 +102,9 @@ int Local_Write(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buf
{ {
status = HWIO_xfs_in32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_STATUS); status = HWIO_xfs_in32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_STATUS);
if ((status & PLB_LL_FIFO_STATUS_ALMOSTFULL) == 0) vacancy = 1; if ((status & PLB_LL_FIFO_STATUS_ALMOSTFULL) == 0) vacancy = 1;
#ifdef MARTIN if (vacancy == 0) {
if (vacancy == 0) cprintf(RED, "Fifo full!\n"); FILE_LOG(logERROR, ("Fifo full!\n"));
#endif }
} }
//Just to know: #define PLB_LL_FIFO_ALMOST_FULL_THRESHOLD_WORDS 100 //Just to know: #define PLB_LL_FIFO_ALMOST_FULL_THRESHOLD_WORDS 100
@ -150,9 +138,7 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
volatile unsigned int fifo_val; volatile unsigned int fifo_val;
int sof = 0; int sof = 0;
#ifdef MARTIN FILE_LOG(logDEBUG5, ("LL Read - If: %X - Data: ",ll->ll_fifo_base));
cprintf(CYAN, "LL Read - If: %X - Data: ",ll->ll_fifo_base);
#endif
word_ptr = (unsigned int *)buffer; word_ptr = (unsigned int *)buffer;
do do
@ -168,7 +154,6 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
buffer_ptr = 0; buffer_ptr = 0;
return -1; // buffer overflow return -1; // buffer overflow
} }
// printf(">>>> SOF\n\r");
buffer_ptr = 0; buffer_ptr = 0;
sof = 1; sof = 1;
} }
@ -179,9 +164,7 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
{ {
if ( (buffer_len >> 2) > buffer_ptr) if ( (buffer_len >> 2) > buffer_ptr)
{ {
#ifdef MARTIN FILE_LOG(logDEBUG5, ("%.8X ", fifo_val));
cprintf(CYAN, "%.8X ", fifo_val);
#endif
word_ptr[buffer_ptr++] = fifo_val; //write to buffer word_ptr[buffer_ptr++] = fifo_val; //write to buffer
} }
else else
@ -193,10 +176,7 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
if (status & PLB_LL_FIFO_STATUS_LL_EOF) if (status & PLB_LL_FIFO_STATUS_LL_EOF)
{ {
len = (buffer_ptr << 2) -3 + ( (status & PLB_LL_FIFO_STATUS_LL_REM)>>PLB_LL_FIFO_STATUS_LL_REM_SHIFT ); len = (buffer_ptr << 2) -3 + ( (status & PLB_LL_FIFO_STATUS_LL_REM)>>PLB_LL_FIFO_STATUS_LL_REM_SHIFT );
#ifdef MARTIN FILE_LOG(logDEBUG5, ("Len: %d\n",len));
cprintf(CYAN, "Len: %d\n",len);
#endif
// printf(">>>>status=0x%08x EOF len = %d \n\r\n\r",status, len);
buffer_ptr = 0; buffer_ptr = 0;
return len; return len;
} }
@ -210,13 +190,9 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
} }
int Local_ctrl_reg_write_mask(struct LocalLinkInterface* ll,unsigned int mask, unsigned int val) { int Local_ctrl_reg_write_mask(struct LocalLinkInterface* ll,unsigned int mask, unsigned int val) {
// printf("Fifo CTRL Reg(1): 0x%08x\n",plb_ll_fifo_ctrl_reg);
ll->ll_fifo_ctrl_reg &= (~mask); ll->ll_fifo_ctrl_reg &= (~mask);
//printf("Fifo CTRL Reg(2): 0x%08x\n",plb_ll_fifo_ctrl_reg);
ll->ll_fifo_ctrl_reg |= ( mask & val); ll->ll_fifo_ctrl_reg |= ( mask & val);
// printf("Fifo CTRL Reg: 0x%08x\n",plb_ll_fifo_ctrl_reg);
HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg); HWIO_xfs_out32(ll->ll_fifo_base+4*PLB_LL_FIFO_REG_CTRL,ll->ll_fifo_ctrl_reg);
// printf("Fifo STAT Reg: 0x%08x\n", plb_ll_fifo[PLB_LL_FIFO_REG_STATUS]);
return 1; return 1;
} }
@ -233,28 +209,14 @@ int Local_Test(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
do{ do{
len = Local_Read(ll,rec_buff_len,rec_buffer); len = Local_Read(ll,rec_buff_len,rec_buffer);
printf("receive length: %i\n",len); FILE_LOG(logDEBUG5, ("receive length: %i\n",len));
if (len > 0) { if (len > 0) {
rec_buffer[len]=0; rec_buffer[len]=0;
printf((char*) rec_buffer); FILE_LOG(logINFO, ("%s\n", (char*) rec_buffer));
printf("\n");
} }
} while(len > 0); } while(len > 0);
printf("\n\n\n\n");
return 1; return 1;
} }
void Local_llfifo_print_frame(struct LocalLinkInterface* ll,unsigned char* fbuff, int len){
int i;
printf("\n\r----Frame of len : %d Byte\n\r",len);
for(i=0;i<len;i++){
printf("0x%02x ",fbuff[i] );
if ((i&0xf) == 0x7) printf(" ");
if ((i&0xf) == 0xf) printf("\n\r");
}
printf("\n\r");
}

View File

@ -1,18 +1,6 @@
#pragma once
//Class initially from Gerd and was called mmap_test.c
#ifndef LOCALLINKINTERFACE_H
#define LOCALLINKINTERFACE_H
#include "xfs_types.h"
#include "HardwareIO.h" #include "HardwareIO.h"
#include <sys/types.h>
#include "ansi.h"
#include <sys/mman.h>
#include <fcntl.h>
/*class LocalLinkInterface: public HardwareIO{ //*/
struct LocalLinkInterface{ struct LocalLinkInterface{
@ -20,35 +8,14 @@ struct LocalLinkInterface{
unsigned int ll_fifo_ctrl_reg; unsigned int ll_fifo_ctrl_reg;
}; };
int Local_Init(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr); int Local_Init(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr);
int Local_Reset1(struct LocalLinkInterface* ll,unsigned int rst_mask); int Local_Reset1(struct LocalLinkInterface* ll,unsigned int rst_mask);
int Local_ctrl_reg_write_mask(struct LocalLinkInterface* ll,unsigned int mask, unsigned int val); int Local_ctrl_reg_write_mask(struct LocalLinkInterface* ll,unsigned int mask, unsigned int val);
void Local_llfifo_print_frame(struct LocalLinkInterface* ll,unsigned char* fbuff, int len);
void Local_LocalLinkInterface1(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr); void Local_LocalLinkInterface1(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr);
/* virtual ~LocalLinkInterface();*/
unsigned int Local_StatusVector(struct LocalLinkInterface* ll); unsigned int Local_StatusVector(struct LocalLinkInterface* ll);
int Local_Reset(struct LocalLinkInterface* ll); int Local_Reset(struct LocalLinkInterface* ll);
int Local_Write(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer); int Local_Write(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer);
int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer); int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer);
int Local_Test(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer); int Local_Test(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer);
void Local_LocalLinkInterface(struct LocalLinkInterface* ll); void Local_LocalLinkInterface(struct LocalLinkInterface* ll);
/*
int FiFoReset(unsigned int numb);
int FifoSend(unsigned int numb, unsigned int frame_len, void *buffer);
int FifoReceive(unsigned int numb, unsigned int frame_len, void *buffer);
int FifoTest(unsigned int numb,unsigned int send_len, char *send_str);
*/
#endif

View File

@ -1,9 +1,9 @@
Path: slsDetectorPackage/slsDetectorServers/eigerDetectorServer Path: slsDetectorPackage/slsDetectorServers/eigerDetectorServer
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 178b83222380f7b7294cde66e66719c5d1c1363c Repsitory UUID: dfad145e1492e961c95063aa5b2f54e5e1b418a0
Revision: 2 Revision: 3
Branch: refactor Branch: refactor
Last Changed Author: Dhanya_Thattil Last Changed Author: Dhanya_Thattil
Last Changed Rev: 4125 Last Changed Rev: 4127
Last Changed Date: 2018-10-16 09:02:45.000000002 +0200 ./Makefile Last Changed Date: 2018-10-23 12:30:26.000000002 +0200 ./Beb.c

View File

@ -1,6 +1,6 @@
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git" #define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
#define GITREPUUID "178b83222380f7b7294cde66e66719c5d1c1363c" #define GITREPUUID "dfad145e1492e961c95063aa5b2f54e5e1b418a0"
#define GITAUTH "Dhanya_Thattil" #define GITAUTH "Dhanya_Thattil"
#define GITREV 0x4125 #define GITREV 0x4127
#define GITDATE 0x20181016 #define GITDATE 0x20181023
#define GITBRANCH "refactor" #define GITBRANCH "refactor"

View File

@ -42,7 +42,7 @@ enum DACINDEX {SVP,VTR,VRF,VRS,SVN,VTGSTV,VCMP_LL,VCMP_LR,CAL,VCMP_RL,RX
}; };
enum ADCINDEX {TEMP_FPGAEXT, TEMP_10GE, TEMP_DCDC, TEMP_SODL, TEMP_SODR, TEMP_FPGA, TEMP_FPGAFEBL, TEMP_FPGAFEBR}; enum ADCINDEX {TEMP_FPGAEXT, TEMP_10GE, TEMP_DCDC, TEMP_SODL, TEMP_SODR, TEMP_FPGA, TEMP_FPGAFEBL, TEMP_FPGAFEBR};
enum NETWORKINDEX {TXN_LEFT, TXN_RIGHT, TXN_FRAME,FLOWCTRL_10G}; enum NETWORKINDEX {TXN_LEFT, TXN_RIGHT, TXN_FRAME,FLOWCTRL_10G};
enum {E_PARALLEL, E_NON_PARALLEL, E_SAFE};
/* Hardware Definitions */ /* Hardware Definitions */
#define NCHAN (256 * 256) #define NCHAN (256 * 256)

View File

@ -448,7 +448,7 @@ void setupDetector() {
bus_w(DAQ_REG, 0x0); /* Only once at server startup */ bus_w(DAQ_REG, 0x0); /* Only once at server startup */
setSpeed(CLOCK_DIVIDER, HALF_SPEED); setSpeed(HALF_SPEED);
cleanFifos(); cleanFifos();
resetCore(); resetCore();
@ -465,7 +465,7 @@ void setupDetector() {
setTimer(DELAY_AFTER_TRIGGER, DEFAULT_DELAY); setTimer(DELAY_AFTER_TRIGGER, DEFAULT_DELAY);
setTimer(STORAGE_CELL_NUMBER, DEFAULT_NUM_STRG_CLLS); setTimer(STORAGE_CELL_NUMBER, DEFAULT_NUM_STRG_CLLS);
selectStoragecellStart(DEFAULT_STRG_CLL_STRT); selectStoragecellStart(DEFAULT_STRG_CLL_STRT);
/*setSpeed(CLOCK_DIVIDER, HALF_SPEED); depends if all the previous stuff works*/ /*setSpeed(HALF_SPEED); depends if all the previous stuff works*/
setTiming(DEFAULT_TIMING_MODE); setTiming(DEFAULT_TIMING_MODE);
setHighVoltage(DEFAULT_HIGH_VOLTAGE); setHighVoltage(DEFAULT_HIGH_VOLTAGE);
@ -611,10 +611,7 @@ int setDynamicRange(int dr){
/* parameters - readout */ /* parameters - readout */
int setSpeed(enum speedVariable arg, int val) { enum speedVariable setSpeed(int val) {
if (arg != CLOCK_DIVIDER)
return -1;
// setting // setting
if(val >= 0) { if(val >= 0) {
@ -1620,7 +1617,7 @@ void readFrame(int *ret, char *mess){
} else { } else {
*ret = (int)FINISHED; *ret = (int)FINISHED;
sprintf(mess,"acquisition successfully finished\n"); sprintf(mess,"acquisition successfully finished\n");
printf("%s",mess); cprintf(GREEN, "%s",mess);
} }
} }

View File

@ -1 +0,0 @@
../slsDetectorServer/AD9257.h

View File

@ -1,33 +0,0 @@
CROSS = bfin-uclinux-
CC = $(CROSS)gcc
#CC = gcc
CLAGS += -Wall -DMYTHEN3D -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSEI #-DVERBOSE
LDLIBS += -lm -lstdc++
PROGS = mythen3DetectorServer
DESTDIR ?= bin
INSTMODE = 0777
SRC_CLNT = communication_funcs.c slsDetectorServer.c slsDetectorServer_funcs.c slsDetectorFunctionList.c
OBJS = $(SRC_CLNT:.c=.o)
all: clean versioning $(PROGS)
boot: $(OBJS)
versioning:
@echo `tput setaf 6; ./updateGitVersion.sh; tput sgr0;`
$(PROGS): $(OBJS)
# echo $(OBJS)
mkdir -p $(DESTDIR)
$(CC) -o $@ $^ $(CFLAGS) $(LDLIBS)
mv $(PROGS) $(DESTDIR)
rm *.gdb
clean:
rm -rf $(DESTDIR)/$(PROGS) *.o

View File

@ -1,25 +0,0 @@
CC = gcc
CFLAGS += -Wall -DVIRTUAL -DMYTHEN3D -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSEI #-DVERBOSE
LDLIBS += -lm -lstdc++
PROGS = virtualMythen3DetectorServer
DESTDIR ?= bin
INSTMODE = 0777
SRC_CLNT = communication_funcs.c slsDetectorServer.c slsDetectorServer_funcs.c slsDetectorFunctionList.c
OBJS = $(SRC_CLNT:.c=.o)
all: clean $(PROGS)
boot: $(OBJS)
$(PROGS): $(OBJS)
echo $(OBJS)
mkdir -p $(DESTDIR)
$(CC) -o $@ $^ $(CFLAGS) $(LDLIBS)
mv $(PROGS) $(DESTDIR)
rm *.gdb
clean:
rm -rf $(DESTDIR)/$(PROGS) *.o

View File

@ -1,101 +0,0 @@
#ifndef REGISTERS_G_H
#define REGISTERS_G_H
/* Definitions for FPGA*/
/* FPGA Version register */
#define FPGA_VERSION_REG (0x00 << 11)
#define BOARD_REVISION_OFST (0)
#define BOARD_REVISION_MSK (0x00FFFFFF << BOARD_REVISION_OFST)
#define DETECTOR_TYPE_OFST (24)
#define DETECTOR_TYPE_MSK (0x000000FF << DETECTOR_TYPE_OFST)
/* Fix pattern register */
#define FIX_PATT_REG (0x01 << 11)
/* Timer 64 bit Regiser */
#define SET_DELAY_LSB_REG (0x60 << 11) //96<<11 //0x68<<11
#define SET_DELAY_MSB_REG (0x61 << 11) //97<<11 //0x69<<11
#define SET_CYCLES_LSB_REG (0x62 << 11) //98<<11//0x6c<<11
#define SET_CYCLES_MSB_REG (0x63 << 11) //99<<11//0x6d<<11
#define SET_FRAMES_LSB_REG (0x64 << 11) //(100<<11)/** to hex */
#define SET_FRAMES_MSB_REG (0x65 << 11) //101<<11//0x71<<11
#define SET_PERIOD_LSB_REG (0x66 << 11) //102<<11//0x74<<11
#define SET_PERIOD_MSB_REG (0x67 << 11) //103<<11//0x75<<11
#define SET_GATES_LSB_REG (0x6A << 11) /*check in firmware*///106<<11//0x7c<<11
#define SET_GATES_MSB_REG (0x6B << 11) //107<<11//0x7d<<11
#define SET_EXPTIME_LSB_REG (0x72 << 11) /** check in firmware *///114<<11//0x78<<11
#define SET_EXPTIME_MSB_REG (0x73 << 11) //115<<11//0x79<<11
#define GET_ACTUAL_TIME_LSB_REG (0x10 << 11) //16<<11
#define GET_ACTUAL_TIME_MSB_REG (0x11 << 11) //17<<11
#define GET_DELAY_LSB_REG (0x12 << 11) //18<<11//0x6a<<11
#define GET_DELAY_MSB_REG (0x13 << 11) //19<<11//0x6b<<11
#define GET_CYCLES_LSB_REG (0x14 << 11) //20<<11//0x6e<<11
#define GET_CYCLES_MSB_REG (0x15 << 11) //21<<11//0x6f<<11
#define GET_FRAMES_LSB_REG (0x16 << 11) //22<<11//0x72<<11
#define GET_FRAMES_MSB_REG (0x17 << 11) //23<<11//0x73<<11
#define GET_PERIOD_LSB_REG (0x18 << 11) //24<<11//0x76<<11
#define GET_PERIOD_MSB_REG (0x19 << 11) //25<<11//0x77<<11
#define GET_EXPTIME_LSB_REG (0x1A << 11) //26<<11//0x7a<<11
#define GET_EXPTIME_MSB_REG (0x1B << 11) //27<<11//0x7b<<11
#define GET_GATES_LSB_REG (0x1C << 11) //28<<11//0x7e<<11
#define GET_GATES_MSB_REG (0x1D << 11) //29<<11//0x7f<<11
#define FRAMES_FROM_START_LSB_REG (0x22 << 11) //34<<11
#define FRAMES_FROM_START_MSB_REG (0x23 << 11) //35<<11
#define FRAMES_FROM_START_PG_LSB_REG (0x24 << 11) //36<<11
#define FRAMES_FROM_START_PG_MSB_REG (0x25 << 11) //37<<11
#define GET_MEASUREMENT_TIME_LSB_REG (0x26 << 11) //38<<11
#define GET_MEASUREMENT_TIME_MSB_REG (0x27 << 11) //39<<11
/* SPI (Serial Peripheral Interface) Register */
#define SPI_REG (0x40 << 11)
#define DAC_SERIAL_DIGITAL_OUT_OFST (0)
#define DAC_SERIAL_DIGITAL_OUT_MSK (0x00000001 << DAC_SERIAL_DIGITAL_OUT_OFST)
#define DAC_SERIAL_CLK_OUT_OFST (1)
#define DAC_SERIAL_CLK_OUT_MSK (0x00000001 << DAC_SERIAL_CLK_OUT_OFST)
#define DAC_SERIAL_CS_OUT_OFST (2)
#define DAC_SERIAL_CS_OUT_MSK (0x00000001 << DAC_SERIAL_CS_OUT_OFST)
#define HV_SERIAL_DIGITAL_OUT_OFST (8)
#define HV_SERIAL_DIGITAL_OUT_MSK (0x00000001 << HV_SERIAL_DIGITAL_OUT_OFST)
#define HV_SERIAL_CLK_OUT_OFST (9)
#define HV_SERIAL_CLK_OUT_MSK (0x00000001 << HV_SERIAL_CLK_OUT_OFST)
#define HV_SERIAL_CS_OUT_OFST (10)
#define HV_SERIAL_CS_OUT_MSK (0x00000001 << HV_SERIAL_CS_OUT_OFST)
/* Control Register */
#define CONTROL_REG (0x4F << 11) //(79 << 11) /** to hex */
/* Reconfiguratble PLL Control Regiser */
#define PLL_CONTROL_REG (0x51 << 11) //(81 << 11)/** to hex */
//#define PLL_CTRL_RECONFIG_RST_OFST (0) //parameter reset
//#define PLL_CTRL_RECONFIG_RST_MSK (0x00000001 << PLL_CTRL_RECONFIG_RST_OFST) //parameter reset
//#define PLL_CTRL_WR_PARAMETER_OFST (2)
//#define PLL_CTRL_WR_PARAMETER_MSK (0x00000001 << PLL_CTRL_WR_PARAMETER_OFST)
#define PLL_CTRL_RST_OFST (3)
#define PLL_CTRL_RST_MSK (0x00000001 << PLL_CTRL_RST_OFST)
//#define PLL_CTRL_ADDR_OFST (16)
//#define PLL_CTRL_ADDR_MSK (0x0000003F << PLL_CTRL_ADDR_OFST)
/* Samples Register */
#define NSAMPLES_REG (0x5D << 11) //93<<11
/* Power On Register */
#define POWER_ON_REG (0x5e<<11)
#define POWER_ENABLE_OFST (16)
/* Dac Registers */
#define DAC_VAL_REG (0x79 << 11) //121<<11
#define DAC_NUM_REG (0x80 << 11) //122<<11
#define DAC_VAL_OUT_REG (0x2A << 11) //42<<11
#endif

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/ansi.h

View File

@ -1 +0,0 @@
/afs/psi.ch/project/mythen/marie_a/MythenServer/slsDetectorPackage/slsDetectorSoftware/slsDetectorServer/blackfin.h

View File

@ -1 +0,0 @@
../slsDetectorServer/commonServerFunctions.h

View File

@ -1 +0,0 @@
../commonFiles/communication_funcs.c

View File

@ -1 +0,0 @@
../commonFiles/communication_funcs.h

View File

@ -1,9 +0,0 @@
Path: slsDetectorsPackage/slsDetectorSoftware/jungfrauDetectorServer
URL: origin git@git.psi.ch:sls_detectors_software/slsDetectorPackage.git
Repository Root: origin git@git.psi.ch:sls_detectors_software/slsDetectorPackage.git
Repsitory UUID: 2f3dc8d109de8607f3217cf429619073dc9cc60e
Revision: 103
Branch: developer
Last Changed Author: Dhanya_Maliakal
Last Changed Rev: 3397
Last Changed Date: 2017-12-04 18:23:05.000000002 +0100 ./RegisterDefs.h

View File

@ -1,6 +0,0 @@
#define GITURL "git@git.psi.ch:sls_detectors_software/slsDetectorPackage.git"
#define GITREPUUID "2f3dc8d109de8607f3217cf429619073dc9cc60e"
#define GITAUTH "Dhanya_Maliakal"
#define GITREV 0x3397
#define GITDATE 0x20171204
#define GITBRANCH "developer"

View File

@ -1,6 +0,0 @@
#define GITURL ""
#define GITREPUUID ""
#define GITAUTH ""
#define GITREV ""
#define GITDATE ""
#define GITBRANCH ""

View File

@ -1 +0,0 @@
../slsDetectorServer/programfpga.h

View File

@ -1 +0,0 @@
../slsDetectorServer/slsDetectorFunctionList.h

View File

@ -1 +0,0 @@
../slsDetectorServer/slsDetectorServer.c

View File

@ -1,167 +0,0 @@
/*
* mythen3Server_defs.h
*
* Created on: Jan 24, 2013
* Author: l_maliakal_d, changed my Marie A.
*/
#ifndef SLSDETECTORSERVER_DEFS_H_
#define SLSDETECTORSERVER_DEFS_H_
#include "sls_detector_defs.h"
#include <stdint.h>
/** This is only an example file!!! */
#define GOODBYE (-200)
enum DACINDEX {vIpre, vIbias, Vrf, VrfSh, vIinSh, VdcSh, Vth2, VPL, Vth1, Vth3, Vtrim, casSh, cas, vIbiasSh, vIcin, VPH, NC, vIpreOut, V_D, V_CHIP, V_C, V_B, V_A, V_IO, V_LIM}; // Mythen 3.01
enum PWRINDEX {PWR_IO, PWR_A, PWR_B, PWR_C, PWR_D, PWR_CHIP=-1, PWR_LIMIT=-1};
enum CLKINDEX {RUN_CLK_C, ADC_CLK_C, SYNC_CLK_C, DBIT_CLK_C};
#define DEFAULT_DAC_VALS { 2150, /* vIpre */ \
1200, /* vIbias */ \
900, /* Vrf */ \
1050, /* VrfSh */ \
1400, /* vIinSh */ \
655, /* VdcSh */ \
850, /* Vth2 */ \
1400, /* VPL */ \
850, /* Vth1 */ \
850, /* Vth3 */ \
2294, /* Vtrim */ \
983, /* casSh */ \
1474, /* cas */ \
1200, /* vIbiasSh */ \
1600, /* vIcin */ \
1520, /* VPH */ \
0, /* NC */ \
1000 /* vIpreOut */ \
0 /* V_D */ \
0 /* V_CHIP */ \
0 /* V_C */ \
1335 /* V_B */ \
1335 /* V_A */ \
1350 /* V_IO */ \
};
#define DEFAULT_DAC_NAMES { "vIpre", \
"vIbias", \
"Vrf", \
"VrfSh", \
"vIinSh", \
"VdcSh", \
"Vth2", \
"VPL", \
"Vth1", \
"Vth3", \
"Vtrim", \
"casSh", \
"cas", \
"vIbiasSh", \
"vIcin", \
"VPH", \
"NC", \
"vIpreOut" \
"v_d" \
"v_chip" \
"v_c" \
"v_b" \
"v_a" \
"v_io" \
};
/*Hardware Definitions */
#define NMAXMOD (1)
#define NMOD (1)
#define NCHAN (32)
#define NCHIP (1)
#define NADC (0)
#define NDAC (24)
#define NDAC_PER_SET (8)
#define NPWR (5)
#define MAX_DACVOLTVAL (2500) //mV
#define MAX_DACVAL (4096) // dac val
#define MAX_VCHIPVAL (2700) //mV /** name ???? */
#define MIN_VCHIP_OFSTVAL (200) //mV /** name ???? */
#define MIN_VCHIP_VAL (600) //mV /** name ???? */
/** Default Parameters */
#define DEFAULT_NUM_FRAMES (1)
#define DEFAULT_NUM_CYCLES (1)
#define DEFAULT_EXPTIME (200*1000) //ns
#define DEFAULT_PERIOD (1*1000*1000) //ns
#define DEFAULT_DELAY (0)
#define DEFAULT_HIGH_VOLTAGE (0)
#define DEFAULT_TIMING_MODE (AUTO_TIMING)
/* Defines in the Firmware */
#define FIX_PATT_VAL (0xACDC1980)
/* LTC2620 DAC DEFINES */
#define LTC2620_DAC_CMD_OFST (20)
#define LTC2620_DAC_CMD_MSK (0x0000000F << LTC2620_DAC_CMD_OFST)
#define LTC2620_DAC_ADDR_OFST (16)
#define LTC2620_DAC_ADDR_MSK (0x0000000F << LTC2620_DAC_ADDR_OFST)
#define LTC2620_DAC_DATA_OFST (4)
#define LTC2620_DAC_DATA_MSK (0x00000FFF << LTC2620_DAC_DATA_OFST)
#define LTC2620_DAC_CMD_WRITE (0x00000000 << LTC2620_DAC_CMD_OFST)
#define LTC2620_DAC_CMD_SET (0x00000003 << LTC2620_DAC_CMD_OFST)
#define LTC2620_DAC_CMD_POWER_DOWN (0x00000004 << LTC2620_DAC_CMD_OFST)
#define LTC2620_DAC_NUMBITS (24)
/** PLL Reconfiguration Registers */
//https://www.altera.com/documentation/mcn1424769382940.html
#define PLL_MODE_REG (0x00)
#define PLL_STATUS_REG (0x01)
#define PLL_START_REG (0x02)
#define PLL_N_COUNTER_REG (0x03)
#define PLL_M_COUNTER_REG (0x04)
#define PLL_C_COUNTER_REG (0x05)
#define PLL_PHASE_SHIFT_REG (0x06)
#define PLL_SHIFT_NUM_SHIFTS_OFST (0)
#define PLL_SHIFT_NUM_SHIFTS_MSK (0x0000FFFF << PLL_SHIFT_NUM_SHIFTS_OFST)
#define PLL_SHIFT_CNT_SELECT_OFST (16)
#define PLL_SHIFT_CNT_SELECT_MSK (0x0000001F << PLL_SHIFT_CNT_SELECT_OFST)
#define PLL_SHIFT_CNT_SLCT_C0_VAL ((0x0 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C1_VAL ((0x1 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C2_VAL ((0x2 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C3_VAL ((0x3 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C4_VAL ((0x4 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C5_VAL ((0x5 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C6_VAL ((0x6 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C7_VAL ((0x7 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C8_VAL ((0x8 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C9_VAL ((0x9 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C10_VAL ((0x10 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C11_VAL ((0x11 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C12_VAL ((0x12 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C13_VAL ((0x13 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C14_VAL ((0x14 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C15_VAL ((0x15 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C16_VAL ((0x16 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_CNT_SLCT_C17_VAL ((0x17 << PLL_SHIFT_CNT_SELECT_OFST) & PLL_SHIFT_CNT_SELECT_MSK)
#define PLL_SHIFT_UP_DOWN_OFST (21)
#define PLL_SHIFT_UP_DOWN_MSK (0x00000001 << PLL_SHIFT_UP_DOWN_OFST)
#define PLL_SHIFT_UP_DOWN_NEG_VAL ((0x0 << PLL_SHIFT_UP_DOWN_OFST) & PLL_SHIFT_UP_DOWN_MSK)
#define PLL_SHIFT_UP_DOWN_POS_VAL ((0x1 << PLL_SHIFT_UP_DOWN_OFST) & PLL_SHIFT_UP_DOWN_MSK)
#define PLL_K_COUNTER_REG (0x07)
#define PLL_BANDWIDTH_REG (0x08)
#define PLL_CHARGEPUMP_REG (0x09)
#define PLL_VCO_DIV_REG (0x1c)
#define PLL_MIF_REG (0x1f)
#define PLL_VCO_FREQ_MHZ 400
#endif /* SLSDETECTORSERVER_DEFS_H_ */

View File

@ -1 +0,0 @@
../slsDetectorServer/slsDetectorServer_funcs.c

View File

@ -1 +0,0 @@
../slsDetectorServer/slsDetectorServer_funcs.h

View File

@ -1 +0,0 @@
../commonFiles/sls_detector_defs.h

View File

@ -1 +0,0 @@
../commonFiles/sls_detector_funcs.h

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/sls_receiver_defs.h

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/sls_receiver_funcs.h

View File

@ -1,31 +0,0 @@
SERVER=jungfrauDetectorServer
MAINDIR=slsDetectorsPackage
SPECDIR=slsDetectorSoftware/$SERVER
TMPFILE=gitInfoJungfrauTmp.h
INCLFILE=gitInfoJungfrau.h
#evaluate the variables
EVALFILE=../../evalVersionVariables.sh
source $EVALFILE
#get modified date
#RDATE1='git log --pretty=format:"%ci" -1'
RDATE1="find ../slsDetectorServer . -type f -exec stat --format '%Y :%y %n' '{}' \; | sort -nr | cut -d: -f2- | egrep -v 'gitInfo|bin|.git|updateGitVersion|.o' | head -n 1"
RDATE=`eval $RDATE1`
NEWDATE=$(sed "s/-//g" <<< $RDATE | awk '{print $1;}')
NEWDATE=${NEWDATE/#/0x}
#get old date from INCLFILE
OLDDATE=$(more $INCLFILE | grep '#define GITDATE' | awk '{print $3}')
#update INCLFILE if changes
if [ "$OLDDATE" != "$NEWDATE" ]; then
echo Path: ${MAINDIR}/${SPECDIR} $'\n'URL: ${GITREPO} $'\n'Repository Root: ${GITREPO} $'\n'Repsitory UUID: ${REPUID} $'\n'Revision: ${FOLDERREV} $'\n'Branch: ${BRANCH} $'\n'Last Changed Author: ${AUTH1}_${AUTH2} $'\n'Last Changed Rev: ${REV} $'\n'Last Changed Date: ${RDATE} > gitInfo.txt
cd ../../
./genVersionHeader.sh $SPECDIR/gitInfo.txt $SPECDIR/$TMPFILE $SPECDIR/$INCLFILE
cd $WD
fi

View File

@ -95,7 +95,7 @@ int bindSocket(unsigned short int port_number) {
// success // success
myport = port_number; myport = port_number;
ret = OK; ret = OK;
FILE_LOG(logINFO, (" %s socket bound: isock=%d port=%d fd=%d\n", FILE_LOG(logDEBUG5, ("%s socket bound: isock=%d, port=%d, fd=%d\n",
(isControlServer ? "Control":"Stop"), isock, port_number, socketDescriptor)); (isControlServer ? "Control":"Stop"), isock, port_number, socketDescriptor));
} }
@ -356,25 +356,34 @@ int sendModule(int file_des, sls_detector_module *myMod) {
int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) { int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) {
int ts = 0; int ts = 0, n = 0;
int nChips = myMod->nchip; int nChips = myMod->nchip;
int nChans = myMod->nchan; int nChans = myMod->nchan;
int nAdcs = myMod->nadc; int nAdcs = myMod->nadc;
int nDacs = myMod->ndac; int nDacs = myMod->ndac;
// send module structure // send module structure
ts += sendData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32); n = sendData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
ts += sendData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32); if (!n) return -1; ts += n;
ts += sendData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32); n = sendData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
ts += sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32); if (!n) return -1; ts += n;
ts += sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32); n = sendData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
ts += sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32); if (!n) return -1; ts += n;
ts += sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER); n = sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
ts += sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER); if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("module of size %d sent\n",ts)); FILE_LOG(logDEBUG5, ("module of size %d sent\n",ts));
// send dac // send dac
ts += sendData(file_des,myMod->dacs,sizeof(int)*nDacs,INT32); n = sendData(file_des,myMod->dacs,sizeof(int)*nDacs,INT32);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("dacs of size %d sent\n",ts)); FILE_LOG(logDEBUG5, ("dacs of size %d sent\n",ts));
{ {
int idac; int idac;
@ -383,18 +392,21 @@ int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) {
} }
// send adc // send adc
ts += sendData(file_des,myMod->adcs,sizeof(int)*nAdcs,INT32); n = sendData(file_des,myMod->adcs,sizeof(int)*nAdcs,INT32);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("adcs of size %d sent\n", ts)); FILE_LOG(logDEBUG5, ("adcs of size %d sent\n", ts));
// some detectors dont require sending all trimbits etc. // some detectors dont require sending all trimbits etc.
if(sendAll) { if(sendAll) {
// chips // chips
ts += sendData(file_des,myMod->chipregs,sizeof(int)*nChips,INT32); n = sendData(file_des,myMod->chipregs,sizeof(int)*nChips,INT32);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("chips of size %d sent\n", ts)); FILE_LOG(logDEBUG5, ("chips of size %d sent\n", ts));
// channels // channels
ts += sendData(file_des,myMod->chanregs,sizeof(int)*nChans,INT32); n = sendData(file_des,myMod->chanregs,sizeof(int)*nChans,INT32);
FILE_LOG(logDEBUG5, ("chans of size %d sent - %d\n", ts, myMod->nchan)); FILE_LOG(logDEBUG5, ("chans of size %d sent - %d\n", ts, myMod->nchan));
if (!n) return -1; ts += n;
} }
FILE_LOG(logDEBUG5, ("module of size %d sent register %x\n", ts, myMod->reg)); FILE_LOG(logDEBUG5, ("module of size %d sent register %x\n", ts, myMod->reg));
@ -408,7 +420,7 @@ int receiveModule(int file_des, sls_detector_module* myMod) {
} }
int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveAll) { int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveAll) {
int ts = 0; int ts = 0, n = 0;
int *dacptr = myMod->dacs; int *dacptr = myMod->dacs;
int *adcptr = myMod->adcs; int *adcptr = myMod->adcs;
int *chipptr = myMod->chipregs, *chanptr = myMod->chanregs; int *chipptr = myMod->chipregs, *chanptr = myMod->chanregs;
@ -416,14 +428,22 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
int nChans, nchanold = myMod->nchan, nchandiff; int nChans, nchanold = myMod->nchan, nchandiff;
int nDacs, ndold = myMod->ndac, ndacdiff; int nDacs, ndold = myMod->ndac, ndacdiff;
int nAdcs, naold = myMod->nadc, nadcdiff; int nAdcs, naold = myMod->nadc, nadcdiff;
ts += receiveData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32); n = receiveData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
ts += receiveData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32); if (!n) return -1; ts += n;
ts += receiveData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32); n = receiveData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
ts += receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32); if (!n) return -1; ts += n;
ts += receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32); n = receiveData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
ts += receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32); if (!n) return -1; ts += n;
ts += receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER); n = receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
ts += receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER); if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
if (!n) return -1; ts += n;
myMod->dacs = dacptr; myMod->dacs = dacptr;
myMod->adcs = adcptr; myMod->adcs = adcptr;
@ -473,7 +493,8 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
else else
FILE_LOG(logDEBUG5, ("received %d adcs\n",nAdcs)); FILE_LOG(logDEBUG5, ("received %d adcs\n",nAdcs));
if (ndacdiff <= 0) { if (ndacdiff <= 0) {
ts += receiveData(file_des,myMod->dacs, sizeof(int)*nDacs,INT32); n = receiveData(file_des,myMod->dacs, sizeof(int)*nDacs,INT32);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("dacs received\n")); FILE_LOG(logDEBUG5, ("dacs received\n"));
int id; int id;
for (id = 0; id<nDacs; id++) for (id = 0; id<nDacs; id++)
@ -481,20 +502,25 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
} else { } else {
dacptr = (int*)malloc(ndacdiff*sizeof(int)); dacptr = (int*)malloc(ndacdiff*sizeof(int));
myMod->ndac = ndold; myMod->ndac = ndold;
ts += receiveData(file_des,myMod->dacs, sizeof(int)*ndold,INT32); n = receiveData(file_des,myMod->dacs, sizeof(int)*ndold,INT32);
ts += receiveData(file_des,dacptr, sizeof(int)*ndacdiff,INT32); if (!n) return -1; ts += n;
n = receiveData(file_des,dacptr, sizeof(int)*ndacdiff,INT32);
if (!n) return -1; ts += n;
free(dacptr); free(dacptr);
return FAIL; return FAIL;
} }
if (nadcdiff <= 0) { if (nadcdiff <= 0) {
ts += receiveData(file_des,myMod->adcs, sizeof(int)*nAdcs,INT32); n = receiveData(file_des,myMod->adcs, sizeof(int)*nAdcs,INT32);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("adcs received\n")); FILE_LOG(logDEBUG5, ("adcs received\n"));
} else { } else {
adcptr = (int*)malloc(nadcdiff*sizeof(int)); adcptr = (int*)malloc(nadcdiff*sizeof(int));
myMod->nadc = naold; myMod->nadc = naold;
ts += receiveData(file_des,myMod->adcs, sizeof(int)*naold,INT32); n = receiveData(file_des,myMod->adcs, sizeof(int)*naold,INT32);
ts += receiveData(file_des,adcptr, sizeof(int)*nadcdiff,INT32); if (!n) return -1; ts += n;
n = receiveData(file_des,adcptr, sizeof(int)*nadcdiff,INT32);
if (!n) return -1; ts += n;
free(adcptr); free(adcptr);
return FAIL; return FAIL;
} }
@ -504,25 +530,31 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
if(receiveAll){ if(receiveAll){
if (nchipdiff <= 0) { if (nchipdiff <= 0) {
ts += receiveData(file_des,myMod->chipregs, sizeof(int)*nChips,INT32); n = receiveData(file_des,myMod->chipregs, sizeof(int)*nChips,INT32);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("chips received\n")); FILE_LOG(logDEBUG5, ("chips received\n"));
} else { } else {
chipptr = (int*)malloc(nchipdiff*sizeof(int)); chipptr = (int*)malloc(nchipdiff*sizeof(int));
myMod->nchip = nchipold; myMod->nchip = nchipold;
ts += receiveData(file_des,myMod->chipregs, sizeof(int)*nchipold,INT32); n = receiveData(file_des,myMod->chipregs, sizeof(int)*nchipold,INT32);
ts += receiveData(file_des,chipptr, sizeof(int)*nchipdiff,INT32); if (!n) return -1; ts += n;
n = receiveData(file_des,chipptr, sizeof(int)*nchipdiff,INT32);
if (!n) return -1; ts += n;
free(chipptr); free(chipptr);
return FAIL; return FAIL;
} }
if (nchandiff <= 0) { if (nchandiff <= 0) {
ts += receiveData(file_des,myMod->chanregs, sizeof(int)*nChans,INT32); n = receiveData(file_des,myMod->chanregs, sizeof(int)*nChans,INT32);
if (!n) return -1; ts += n;
FILE_LOG(logDEBUG5, ("chans received\n")); FILE_LOG(logDEBUG5, ("chans received\n"));
} else { } else {
chanptr = (int*)malloc(nchandiff*sizeof(int)); chanptr = (int*)malloc(nchandiff*sizeof(int));
myMod->nchan = nchanold; myMod->nchan = nchanold;
ts += receiveData(file_des,myMod->chanregs, sizeof(int)*nchanold,INT32); n = receiveData(file_des,myMod->chanregs, sizeof(int)*nchanold,INT32);
ts += receiveData(file_des,chanptr, sizeof(int)*nchandiff,INT32); if (!n) return -1; ts += n;
n = receiveData(file_des,chanptr, sizeof(int)*nchandiff,INT32);
if (!n) return -1; ts += n;
free(chanptr); free(chanptr);
return FAIL; return FAIL;
} }
@ -546,7 +578,7 @@ int Server_VerifyLock() {
} }
void Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize) { int Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize) {
// update if different clients (ret can be ok or acquisition finished), not fail to not overwrite e message // update if different clients (ret can be ok or acquisition finished), not fail to not overwrite e message
if (update && ret != FAIL && differentClients) if (update && ret != FAIL && differentClients)
@ -554,7 +586,7 @@ void Server_SendResult(int fileDes, intType itype, int update, void* retval, int
// send success of operation // send success of operation
int ret1 = ret; int ret1 = ret;
sendData(fileDes, &ret1,sizeof(ret1), INT32);/* if < 0, return , socket crash*/ sendData(fileDes, &ret1,sizeof(ret1), INT32);
if(ret == FAIL) { if(ret == FAIL) {
// send error message // send error message
if (strlen(mess)) if (strlen(mess))
@ -567,4 +599,6 @@ void Server_SendResult(int fileDes, intType itype, int update, void* retval, int
} }
// send return value // send return value
sendData(fileDes, retval, retvalSize, itype); sendData(fileDes, retval, retvalSize, itype);
return ret;
} }

View File

@ -64,7 +64,8 @@ int Server_VerifyLock();
* @param update 1 if one must update if different clients, else 0 * @param update 1 if one must update if different clients, else 0
* @param retval pointer to result * @param retval pointer to result
* @param retvalSize size of result * @param retvalSize size of result
* @returns result of operation
*/ */
void Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize); int Server_SendResult(int fileDes, intType itype, int update, void* retval, int retvalSize);
#endif #endif

View File

@ -20,7 +20,7 @@
#endif #endif
typedef enum { typedef enum {
logERROR, logWARNING, logINFO, logINFOBLUE, logERROR, logWARNING, logINFO, logINFOBLUE, logGREEN,
logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logDEBUG5 logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logDEBUG5
}TLogLevel; }TLogLevel;
@ -35,6 +35,7 @@ static inline void FILELOG_PrintLog(TLogLevel level, char* m) {
case logERROR: cprintf(RED BOLD, "ERROR: %s", m); break; case logERROR: cprintf(RED BOLD, "ERROR: %s", m); break;
case logWARNING: cprintf(YELLOW BOLD, "WARNING: %s", m); break; case logWARNING: cprintf(YELLOW BOLD, "WARNING: %s", m); break;
case logINFOBLUE: cprintf(BLUE, "INFO: %s", m); break; case logINFOBLUE: cprintf(BLUE, "INFO: %s", m); break;
case logGREEN: cprintf(GREEN, "INFO: %s", m); break;
case logINFO: cprintf(RESET, "INFO: %s", m); break; case logINFO: cprintf(RESET, "INFO: %s", m); break;
case logDEBUG: cprintf(MAGENTA, "DEBUG: %s", m); break; case logDEBUG: cprintf(MAGENTA, "DEBUG: %s", m); break;
case logDEBUG1: cprintf(MAGENTA, "DEBUG1: %s", m); break; case logDEBUG1: cprintf(MAGENTA, "DEBUG1: %s", m); break;

View File

@ -19,15 +19,12 @@ int getFirmwareCheckResult(char** mess);
#endif #endif
void checkFirmwareCompatibility(); void checkFirmwareCompatibility();
#if defined(MYTHEN3D) || defined(JUNGFRAUD) #ifdef JUNGFRAUD
int checkType(); int checkType();
u_int32_t testFpga(void); u_int32_t testFpga(void);
int testBus(void); int testBus(void);
#endif #endif
#ifdef MYTHEN3D
int moduleTest( enum digitalTestMode arg);
#endif
#ifdef JUNGFRAUD #ifdef JUNGFRAUD
int detectorTest( enum digitalTestMode arg); int detectorTest( enum digitalTestMode arg);
#endif #endif
@ -40,7 +37,7 @@ u_int64_t getFirmwareAPIVersion();
u_int16_t getHardwareVersionNumber(); u_int16_t getHardwareVersionNumber();
u_int16_t getHardwareSerialNumber(); u_int16_t getHardwareSerialNumber();
#endif #endif
#if !defined(MYTHEN3D) || !defined(EIGERD) #ifdef EIGERD
u_int32_t getDetectorNumber(); u_int32_t getDetectorNumber();
#endif #endif
u_int64_t getDetectorMAC(); u_int64_t getDetectorMAC();
@ -73,17 +70,11 @@ uint32_t readRegister(uint32_t offset);
// firmware functions (resets) // firmware functions (resets)
#if defined(MYTHEN3D) || defined(JUNGFRAUD) #ifdef JUNGFRAUD
int powerChip (int on); int powerChip (int on);
void cleanFifos(); void cleanFifos();
void resetCore(); void resetCore();
void resetPeripheral(); void resetPeripheral();
#endif
#ifdef MYTHEN3D
int getPhase(int i);
int configurePhase(int val, enum CLKINDEX i);
int configureFrequency(int val, int i);
#elif JUNGFRAUD
int autoCompDisable(int on); int autoCompDisable(int on);
int adcPhase(int st); int adcPhase(int st);
int getPhase(); int getPhase();
@ -97,7 +88,7 @@ int setROI(int n, ROI arg[], int *retvalsize, int *ret);
#endif #endif
// parameters - readout // parameters - readout
int setSpeed(enum speedVariable arg, int val); enum speedVariable setSpeed(int val);
#ifdef EIGERD #ifdef EIGERD
enum readOutFlags setReadOutFlags(enum readOutFlags val); enum readOutFlags setReadOutFlags(enum readOutFlags val);
#endif #endif
@ -129,35 +120,21 @@ int setThresholdEnergy(int ev);
#endif #endif
// parameters - dac, adc, hv // parameters - dac, adc, hv
#if defined(MYTHEN3D) || defined(JUNGFRAUD) #ifdef JUNGFRAUD
void serializeToSPI(u_int32_t addr, u_int32_t val, u_int32_t csmask, int numbitstosend, u_int32_t clkmask, u_int32_t digoutmask, int digofset); void serializeToSPI(u_int32_t addr, u_int32_t val, u_int32_t csmask, int numbitstosend, u_int32_t clkmask, u_int32_t digoutmask, int digofset);
void initDac(int dacnum); void initDac(int dacnum);
int voltageToDac(int value); int voltageToDac(int value);
int dacToVoltage(unsigned int digital); int dacToVoltage(unsigned int digital);
#endif #endif
#ifdef MYTHEN3D
int setPower(enum DACINDEX ind, int val);
int powerToDac(int value, int chip);
int dacToPower(int value, int chip);
#endif
#ifdef JUNGFRAUD #ifdef JUNGFRAUD
extern void setAdc(int addr, int val); // AD9257.h extern void setAdc(int addr, int val); // AD9257.h
#endif #endif
void setDAC(enum DACINDEX ind, int val, int mV, int retval[]); void setDAC(enum DACINDEX ind, int val, int mV, int retval[]);
#ifdef MYTHEN3D
int getVLimit();
void setDacRegister(int dacnum,int dacvalue);
int getDacRegister(int dacnum);
#endif
#ifndef MYTHEN3D
int getADC(enum ADCINDEX ind); int getADC(enum ADCINDEX ind);
#endif
#ifndef MYTHEN3D
int setHighVoltage(int val); int setHighVoltage(int val);
#endif
@ -169,8 +146,10 @@ enum externalCommunicationMode getTiming();
#ifdef JUNGFRAUD #ifdef JUNGFRAUD
long int calcChecksum(int sourceip, int destip); long int calcChecksum(int sourceip, int destip);
#endif #endif
#ifndef MYTHEN3D #ifdef GOTTHARDD
int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2, int ival); int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2, int ival);
#else
int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2);
#endif #endif
#if defined(JUNGFRAUD) || defined(EIGERD) #if defined(JUNGFRAUD) || defined(EIGERD)
int setDetectorPosition(int pos[]); int setDetectorPosition(int pos[]);
@ -187,7 +166,7 @@ int resetCounterBlock(int startACQ);
int calibratePedestal(int frames); int calibratePedestal(int frames);
// jungfrau specific - pll, flashing firmware // jungfrau specific - pll, flashing firmware
#elif defined(JUNGFRAUD) || defined(MYTHEN3D) #elif JUNGFRAUD
void resetPLL(); void resetPLL();
u_int32_t setPllReconfigReg(u_int32_t reg, u_int32_t val); u_int32_t setPllReconfigReg(u_int32_t reg, u_int32_t val);
void configurePll(); void configurePll();

View File

@ -33,6 +33,7 @@ int main(int argc, char *argv[]){
// subsequent read/write to socket gives error - must handle locally // subsequent read/write to socket gives error - must handle locally
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
// circumvent the basic tests // circumvent the basic tests
{ {
int i; int i;
@ -64,28 +65,20 @@ int main(int argc, char *argv[]){
#endif #endif
if (isControlServer) { if (isControlServer) {
portno = DEFAULT_PORTNO; portno = DEFAULT_PORTNO;
FILE_LOG(logINFOBLUE, FILE_LOG(logINFO, ("Opening control server on port %d \n", portno));
("***************************************************\n"
"********* opening control server on port %d **********\n"
"********************************************************\n\n"
, portno));
#ifdef STOP_SERVER #ifdef STOP_SERVER
{ {
int i; int i;
for (i = 0; i < argc; ++i) for (i = 0; i < argc; ++i)
sprintf(cmd, "%s %s", cmd, argv[i]); sprintf(cmd, "%s %s", cmd, argv[i]);
sprintf(cmd,"%s -stopserver&", cmd); sprintf(cmd,"%s -stopserver&", cmd);
FILE_LOG(logINFO, ("Command to start stop server:%s\n", cmd)); FILE_LOG(logDEBUG5, ("Command to start stop server:%s\n", cmd));
system(cmd); system(cmd);
} }
#endif #endif
} else { } else {
portno = DEFAULT_PORTNO + 1; portno = DEFAULT_PORTNO + 1;
FILE_LOG(logINFOBLUE, FILE_LOG(logINFO,("Opening stop server on port %d \n", portno));
("***************************************************\n"
"*********** opening stop server on port %d ***********\n"
"********************************************************\n\n"
, portno));
} }
init_detector(); init_detector();
@ -100,7 +93,7 @@ int main(int argc, char *argv[]){
function_table(); function_table();
if (isControlServer) { if (isControlServer) {
FILE_LOG(logINFO, ("Control Server Ready...\n\n")); FILE_LOG(logINFOBLUE, ("Control Server Ready...\n\n"));
} else { } else {
FILE_LOG(logINFO, ("Stop Server Ready...\n\n")); FILE_LOG(logINFO, ("Stop Server Ready...\n\n"));
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,4 @@
#ifndef SERVER_FUNCS_H #pragma once
#define SERVER_FUNCS_H
#include "sls_detector_defs.h" #include "sls_detector_defs.h"
#include <stdlib.h> #include <stdlib.h>
@ -14,6 +12,7 @@ void function_table();
void functionNotImplemented(); void functionNotImplemented();
void modeNotImplemented(char* modename, int mode); void modeNotImplemented(char* modename, int mode);
void validate(int arg, int retval, char* modename, int hex); void validate(int arg, int retval, char* modename, int hex);
void validate64(int64_t arg, int64_t retval, char* modename, int hex);
int M_nofunc(int); int M_nofunc(int);
int M_nofuncMode(int); int M_nofuncMode(int);
@ -79,4 +78,3 @@ int storage_cell_start(int);
int check_version(int); int check_version(int);
int software_trigger(int); int software_trigger(int);
#endif

View File

@ -2867,27 +2867,21 @@ int slsDetector::setDynamicRange(int n) {
if (connectControl() == OK){ if (connectControl() == OK){
controlSocket->SendDataOnly(&fnum,sizeof(fnum)); controlSocket->SendDataOnly(&fnum,sizeof(fnum));
controlSocket->SendDataOnly(&n,sizeof(n)); controlSocket->SendDataOnly(&n,sizeof(n));
//rate correction is switched off if not 32 bit mode controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
if(thisDetector->myDetectorType == EIGER){ if (ret==FAIL) {
controlSocket->ReceiveDataOnly(&rateret,sizeof(rateret));
if (rateret==FAIL) {
controlSocket->ReceiveDataOnly(mess,sizeof(mess)); controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl; std::cout<< "Detector returned error: " << mess << std::endl;
if(strstr(mess,"Rate Correction")!=NULL){ if(strstr(mess,"Rate Correction")!=NULL){
// rate correction is switched off if not 32 bit mode
if(strstr(mess,"32")!=NULL) if(strstr(mess,"32")!=NULL)
setErrorMask((getErrorMask())|(RATE_CORRECTION_NOT_32or16BIT)); setErrorMask((getErrorMask())|(RATE_CORRECTION_NOT_32or16BIT));
else else
setErrorMask((getErrorMask())|(COULD_NOT_SET_RATE_CORRECTION)); setErrorMask((getErrorMask())|(COULD_NOT_SET_RATE_CORRECTION));
} }
else ret = OK;
} }
}
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==FAIL) {
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl;
} else {
controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); controlSocket->ReceiveDataOnly(&retval,sizeof(retval));
}
disconnectControl(); disconnectControl();
if (ret==FORCE_UPDATE) if (ret==FORCE_UPDATE)
updateDetector(); updateDetector();
@ -4268,13 +4262,24 @@ int slsDetector::sendROI(int n,ROI roiLimits[]) {
#ifdef VERBOSE #ifdef VERBOSE
std::cout << "Sending ROI of size " << arg << " to detector" << std::endl; std::cout << "Sending ROI of size " << arg << " to detector" << std::endl;
#endif #endif
controlSocket->SendDataOnly(roiLimits,arg*sizeof(ROI)); for(int i = 0; i < n; ++i){
controlSocket->SendDataOnly(&roiLimits[i].xmin, sizeof(int));
controlSocket->SendDataOnly(&roiLimits[i].xmax, sizeof(int));
controlSocket->SendDataOnly(&roiLimits[i].ymin, sizeof(int));
controlSocket->SendDataOnly(&roiLimits[i].ymax, sizeof(int));
}
//controlSocket->SendDataOnly(roiLimits,arg*sizeof(ROI));
} }
controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret!=FAIL){ if (ret!=FAIL){
controlSocket->ReceiveDataOnly(&retvalsize,sizeof(retvalsize)); controlSocket->ReceiveDataOnly(&retvalsize,sizeof(retvalsize));
nrec = controlSocket->ReceiveDataOnly(retval,retvalsize*sizeof(ROI)); nrec = 0;
nrec += controlSocket->ReceiveDataOnly(&retval[i].xmin, sizeof(int));
nrec += controlSocket->ReceiveDataOnly(&retval[i].xmax, sizeof(int));
nrec += controlSocket->ReceiveDataOnly(&retval[i].ymin, sizeof(int));
nrec += controlSocket->ReceiveDataOnly(&retval[i].ymax, sizeof(int));
//nrec = controlSocket->ReceiveDataOnly(retval,retvalsize*sizeof(ROI));
if(nrec!=(retvalsize*(int)sizeof(ROI))){ if(nrec!=(retvalsize*(int)sizeof(ROI))){
ret=FAIL; ret=FAIL;
std::cout << " wrong size received: received " << nrec << std::cout << " wrong size received: received " << nrec <<

View File

@ -290,9 +290,7 @@ int slsReceiverTCPIPInterface::M_nofunc(){
strcpy(mess,"Unrecognized Function. Please do not proceed.\n"); strcpy(mess,"Unrecognized Function. Please do not proceed.\n");
FILE_LOG(logERROR) << mess; FILE_LOG(logERROR) << mess;
interface->Server_SendResult(false, ret, NULL, 0, mess); return interface->Server_SendResult(false, ret, NULL, 0, mess);
return ret;
} }
@ -329,21 +327,17 @@ int slsReceiverTCPIPInterface::exec_command() {
} }
} }
interface->Server_SendResult(false, ret, retval, MAX_STR_LENGTH, mess); return interface->Server_SendResult(false, ret, retval, MAX_STR_LENGTH, mess);
return ret;
} }
int slsReceiverTCPIPInterface::exit_server() { int slsReceiverTCPIPInterface::exit_server() {
cprintf(RED,"Closing receiver server\n"); cprintf(RED,"Closing server\n");
ret = OK; ret = OK;
interface->Server_SendResult(false, ret, NULL, 0); interface->Server_SendResult(false, ret, NULL, 0);
return GOODBYE;
ret = GOODBYE;
return ret;
} }
@ -369,18 +363,14 @@ int slsReceiverTCPIPInterface::lock_receiver() {
interface->Server_LockedError(ret, mess); interface->Server_LockedError(ret, mess);
} }
interface->Server_SendResult(true, ret, &lockStatus,sizeof(lockStatus), mess); return interface->Server_SendResult(true, ret, &lockStatus,sizeof(lockStatus), mess);
return ret;
} }
int slsReceiverTCPIPInterface::get_last_client_ip() { int slsReceiverTCPIPInterface::get_last_client_ip() {
ret = OK; ret = OK;
interface->Server_SendResult(true, ret,mySock->lastClientIP, sizeof(mySock->lastClientIP)); return interface->Server_SendResult(true, ret,mySock->lastClientIP, sizeof(mySock->lastClientIP));
return ret;
} }
@ -560,9 +550,7 @@ int slsReceiverTCPIPInterface::get_id(){
ret = OK; ret = OK;
int64_t retval = getReceiverVersion(); int64_t retval = getReceiverVersion();
interface->Server_SendResult(true, ret, &retval, sizeof(retval)); return interface->Server_SendResult(true, ret, &retval, sizeof(retval));
return ret;
} }
@ -622,9 +610,7 @@ int slsReceiverTCPIPInterface::set_detector_type(){
//get //get
retval = myDetectorType; retval = myDetectorType;
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -679,7 +665,13 @@ int slsReceiverTCPIPInterface::set_roi() {
int iloop = 0; int iloop = 0;
for (iloop = 0; iloop < nroi; iloop++) { for (iloop = 0; iloop < nroi; iloop++) {
ROI temp; ROI temp;
if ( mySock->ReceiveDataOnly(&temp,sizeof(ROI)) < 0 ) if ( mySock->ReceiveDataOnly(&temp.xmin,sizeof(int)) < 0 )
return interface->Server_SocketCrash();
if ( mySock->ReceiveDataOnly(&temp.xmax,sizeof(int)) < 0 )
return interface->Server_SocketCrash();
if ( mySock->ReceiveDataOnly(&temp.ymin,sizeof(int)) < 0 )
return interface->Server_SocketCrash();
if ( mySock->ReceiveDataOnly(&temp.ymax,sizeof(int)) < 0 )
return interface->Server_SocketCrash(); return interface->Server_SocketCrash();
roiLimits.push_back(temp); roiLimits.push_back(temp);
} }
@ -766,9 +758,7 @@ int slsReceiverTCPIPInterface::setup_udp(){
} }
} }
interface->Server_SendResult(true, ret, retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, retval, sizeof(retval), mess);
return ret;
} }
@ -865,9 +855,7 @@ int slsReceiverTCPIPInterface::set_timer() {
FILE_LOG(logDEBUG1) << slsDetectorDefs::getTimerType((timerIndex)(index[0])) << ":" << retval; FILE_LOG(logDEBUG1) << slsDetectorDefs::getTimerType((timerIndex)(index[0])) << ":" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -927,9 +915,7 @@ int slsReceiverTCPIPInterface::set_dynamic_range() {
FILE_LOG(logDEBUG1) << "dynamic range: " << retval; FILE_LOG(logDEBUG1) << "dynamic range: " << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -966,9 +952,7 @@ int slsReceiverTCPIPInterface::set_streaming_frequency(){
} }
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -984,9 +968,7 @@ int slsReceiverTCPIPInterface::get_status(){
if (ret == OK) if (ret == OK)
retval = receiver->getStatus(); retval = receiver->getStatus();
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1017,11 +999,7 @@ int slsReceiverTCPIPInterface::start_receiver(){
} }
} }
interface->Server_SendResult(true, ret, NULL, 0, mess); return interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
} }
@ -1050,9 +1028,7 @@ int slsReceiverTCPIPInterface::stop_receiver(){
} }
} }
interface->Server_SendResult(true, ret, NULL, 0, mess); return interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
} }
@ -1162,9 +1138,7 @@ int slsReceiverTCPIPInterface::set_file_index() {
FILE_LOG(logDEBUG1) << "file index:" << retval; FILE_LOG(logDEBUG1) << "file index:" << retval;
} }
interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
return ret;
} }
@ -1182,9 +1156,7 @@ int slsReceiverTCPIPInterface::get_frame_index(){
if (ret == OK) if (ret == OK)
retval=receiver->getAcquisitionIndex(); retval=receiver->getAcquisitionIndex();
interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
return ret;
} }
@ -1199,9 +1171,7 @@ int slsReceiverTCPIPInterface::get_frames_caught(){
if (ret == OK) if (ret == OK)
retval=receiver->getTotalFramesCaught(); retval=receiver->getTotalFramesCaught();
interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
return ret;
} }
@ -1221,9 +1191,7 @@ int slsReceiverTCPIPInterface::reset_frames_caught(){
} }
} }
interface->Server_SendResult(true, ret, NULL, 0, mess); return interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
} }
@ -1256,9 +1224,7 @@ int slsReceiverTCPIPInterface::enable_file_write(){
FILE_LOG(logDEBUG1) << "file write enable:" << retval; FILE_LOG(logDEBUG1) << "file write enable:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1293,9 +1259,7 @@ int slsReceiverTCPIPInterface::enable_overwrite() {
FILE_LOG(logDEBUG1) << "file overwrite enable:" << retval; FILE_LOG(logDEBUG1) << "file overwrite enable:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1331,9 +1295,7 @@ int slsReceiverTCPIPInterface::enable_tengiga() {
FILE_LOG(logDEBUG1) << "10Gbe:" << retval; FILE_LOG(logDEBUG1) << "10Gbe:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1371,9 +1333,7 @@ int slsReceiverTCPIPInterface::set_fifo_depth() {
FILE_LOG(logDEBUG1) << "fifo depth:" << retval; FILE_LOG(logDEBUG1) << "fifo depth:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1409,9 +1369,7 @@ int slsReceiverTCPIPInterface::set_activate() {
FILE_LOG(logDEBUG1) << "Activate: " << retval; FILE_LOG(logDEBUG1) << "Activate: " << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1444,9 +1402,7 @@ int slsReceiverTCPIPInterface::set_data_stream_enable(){
FILE_LOG(logDEBUG1) << "data streaming enable:" << retval; FILE_LOG(logDEBUG1) << "data streaming enable:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1479,9 +1435,7 @@ int slsReceiverTCPIPInterface::set_streaming_timer(){
FILE_LOG(logDEBUG1) << "Streaming timer:" << retval; FILE_LOG(logDEBUG1) << "Streaming timer:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1517,9 +1471,7 @@ int slsReceiverTCPIPInterface::set_flipped_data(){
FILE_LOG(logDEBUG1) << "Flipped Data:" << retval; FILE_LOG(logDEBUG1) << "Flipped Data:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1554,9 +1506,7 @@ int slsReceiverTCPIPInterface::set_file_format() {
FILE_LOG(logDEBUG1) << "File Format: " << retval; FILE_LOG(logDEBUG1) << "File Format: " << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1589,9 +1539,7 @@ int slsReceiverTCPIPInterface::set_detector_posid() {
FILE_LOG(logDEBUG1) << "Position Id:" << retval; FILE_LOG(logDEBUG1) << "Position Id:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1628,9 +1576,7 @@ int slsReceiverTCPIPInterface::set_multi_detector_size() {
FILE_LOG(logDEBUG1) << "Multi Detector Size:" << retval; FILE_LOG(logDEBUG1) << "Multi Detector Size:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1659,9 +1605,7 @@ int slsReceiverTCPIPInterface::set_streaming_port() {
FILE_LOG(logDEBUG1) << "streaming port:" << retval; FILE_LOG(logDEBUG1) << "streaming port:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1727,9 +1671,7 @@ int slsReceiverTCPIPInterface::set_silent_mode() {
FILE_LOG(logDEBUG1) << "silent mode:" << retval; FILE_LOG(logDEBUG1) << "silent mode:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1768,9 +1710,7 @@ int slsReceiverTCPIPInterface::enable_gap_pixels() {
FILE_LOG(logDEBUG1) << "Gap Pixels Enable: " << retval; FILE_LOG(logDEBUG1) << "Gap Pixels Enable: " << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1801,9 +1741,7 @@ int slsReceiverTCPIPInterface::restream_stop(){
} }
} }
interface->Server_SendResult(true, ret, NULL, 0, mess); return interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
} }
@ -1871,9 +1809,7 @@ int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
FILE_LOG(logDEBUG1) << "UDP Socket Buffer Size:" << retval; FILE_LOG(logDEBUG1) << "UDP Socket Buffer Size:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1888,9 +1824,7 @@ int slsReceiverTCPIPInterface::get_real_udp_socket_buffer_size(){
if (ret == OK) if (ret == OK)
retval = receiver->getActualUDPSocketBufferSize(); retval = receiver->getActualUDPSocketBufferSize();
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1924,9 +1858,7 @@ int slsReceiverTCPIPInterface::set_frames_per_file() {
FILE_LOG(logDEBUG1) << "frames per file:" << retval; FILE_LOG(logDEBUG1) << "frames per file:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -1971,9 +1903,7 @@ int slsReceiverTCPIPInterface::check_version_compatibility() {
} }
else FILE_LOG(logINFO) << "Compatibility with Client: Successful"; else FILE_LOG(logINFO) << "Compatibility with Client: Successful";
interface->Server_SendResult(true, ret, NULL, 0, mess); return interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
} }
@ -2007,9 +1937,7 @@ int slsReceiverTCPIPInterface::set_discard_policy() {
FILE_LOG(logDEBUG1) << "frame discard policy:" << retval; FILE_LOG(logDEBUG1) << "frame discard policy:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -2045,9 +1973,7 @@ int slsReceiverTCPIPInterface::set_padding_enable() {
FILE_LOG(logDEBUG1) << "Frame Padding Enable:" << retval; FILE_LOG(logDEBUG1) << "Frame Padding Enable:" << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }
@ -2084,7 +2010,5 @@ int slsReceiverTCPIPInterface::set_deactivated_receiver_padding_enable() {
FILE_LOG(logDEBUG1) << "Deactivated Padding Enable: " << retval; FILE_LOG(logDEBUG1) << "Deactivated Padding Enable: " << retval;
} }
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess); return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
} }

View File

@ -53,7 +53,7 @@ int ClientInterface::Client_Send(int fnum,
} }
void ClientInterface::Server_SendResult(bool update, int ret, int ClientInterface::Server_SendResult(bool update, int ret,
void* retval, int retvalSize, char* mess) { void* retval, int retvalSize, char* mess) {
// update if different clients // update if different clients
@ -72,6 +72,8 @@ void ClientInterface::Server_SendResult(bool update, int ret,
} }
// send return value // send return value
mySocket->SendDataOnly(retval, retvalSize); mySocket->SendDataOnly(retval, retvalSize);
return ret;
} }

View File

@ -65,8 +65,9 @@ public:
* @param retval pointer to result * @param retval pointer to result
* @param retvalSize size of result * @param retvalSize size of result
* @param mess message * @param mess message
* @returns success of operation
*/ */
void Server_SendResult(bool update, int ret, void* retval, int retvalSize, char* mess = 0); int Server_SendResult(bool update, int ret, void* retval, int retvalSize, char* mess = 0);
/** only Receiver /** only Receiver
* Server receives arguments and checks if base object is null (if checkbase is true) * Server receives arguments and checks if base object is null (if checkbase is true)

View File

@ -82,9 +82,7 @@ public:
EIGER, /**< eiger */ EIGER, /**< eiger */
GOTTHARD, /**< gotthard */ GOTTHARD, /**< gotthard */
JUNGFRAU, /**< jungfrau */ JUNGFRAU, /**< jungfrau */
JUNGFRAUCTB, /**< jungfrauCTBversion */ JUNGFRAUCTB /**< jungfrauCTBversion */
MYTHEN3, /**< mythen 3 */
MOENCH /**< moench */
}; };