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 @@
/**
* @author Ian Johnson
* @version 1.0
*/
//return reversed 1 means good, 0 means failed
#include "xfs_types.h"
#include "xparameters.h"
#include "FebRegisterDefs.h"
#include "logger.h"
#include "Beb.h"
#include <stdio.h>
@ -14,14 +10,8 @@
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include "xfs_types.h"
#include "xparameters.h"
#include "FebRegisterDefs.h"
#include "Beb.h"
#include <sys/mman.h>
#include <fcntl.h>
#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) {
printf("\t%d) Beb Info.\n",bebInfo->beb_number);
printf("\t\tSerial Add: 0x%x\n",bebInfo->serial_address);
printf("\t\tMAC 1GbE: %s\n",bebInfo->src_mac_1GbE);
printf("\t\tIP 1GbE: %s\n",bebInfo->src_ip_1GbE);
printf("\t\tport 1GbE: %d\n",bebInfo->src_port_1GbE);
printf("\t\tMAC 10GbE: %s\n",bebInfo->src_mac_10GbE);
printf("\t\tIP 10GbE: %s\n",bebInfo->src_ip_10GbE);
printf("\t\tport 10GbE: %d\n",bebInfo->src_port_10GbE);
FILE_LOG(logINFO, (
"%d) Beb Info:\n"
"\tSerial Add: 0x%x\n"
"\tMAC 1GbE: %s\n"
"\tIP 1GbE: %s\n"
"\tPort 1GbE: %d\n"
"\tMAC 10GbE: %s\n"
"\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_buffer_size = 1026;
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);
printf("Printing Beb infos:\n");
FILE_LOG(logDEBUG5, ("Printing Beb infos:\n"));
unsigned int i;
for(i=1;i<bebInfoSize;i++) BebInfo_Print(&beb_infos[i]);
printf("\n");
Beb_bit_mode = 4;
@ -159,12 +158,12 @@ void Beb_GetModuleConfiguration(int* master, int* top, int* normal){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if (fd < 0) {
cprintf(BG_RED,"Module Configuration FAIL\n");
FILE_LOG(logERROR, ("Module Configuration FAIL\n"));
} else {
//read data
ret = Beb_Read32(csp0base, MODULE_CONFIGURATION_MASK);
printf("Module Configuration OK\n");
printf("Beb: value =0x%x\n",ret);
FILE_LOG(logDEBUG5, ("Module Configuration OK\n"));
FILE_LOG(logDEBUG5, ("Beb: value =0x%x\n",ret));
if (ret&TOP_BIT_MASK) {
*top = 1;
Beb_top = 1;
@ -217,7 +216,7 @@ void Beb_EndofDataSend(int tengiga){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_COUNTER_BASEADDR);
if (fd < 0) {
cprintf(BG_RED,"Delay read counter fail\n");
FILE_LOG(logERROR, ("Delay read counter fail\n"));
return;
} else {
//read data first time
@ -229,8 +228,7 @@ void Beb_EndofDataSend(int tengiga){
r_framepktMsbcounter = Beb_Read32(csp0base, addr_r_framepktMsbcounter);
r_txndelaycounter = Beb_Read32(csp0base, addr_r_txndelaycounter);
r_framedelaycounter = Beb_Read32(csp0base, addr_r_framedelaycounter);
//#ifdef VERBOSE
printf("\nLeft\n"
FILE_LOG(logDEBUG5, ("\nLeft\n"
"FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n"
@ -241,15 +239,14 @@ void Beb_EndofDataSend(int tengiga){
"Txndelaycounter:%d\n"
"Framedelaycounter:%d\n\n",
l_framepktLsbcounter,l_framepktMsbcounter,l_txndelaycounter,l_framedelaycounter,
r_framepktLsbcounter,r_framepktMsbcounter,r_txndelaycounter,r_framedelaycounter);
//#endif
r_framepktLsbcounter,r_framepktMsbcounter,r_txndelaycounter,r_framedelaycounter));
//keep comparing with previous values
int maxtimer;
while(1) {
maxtimer = MAX(MAX(l_txndelaycounter,l_framedelaycounter),MAX(r_txndelaycounter,r_framedelaycounter));
maxtimer /= 100;
printf("Will wait for %d us\n",maxtimer);
FILE_LOG(logINFO, ("Will wait for %d us\n",maxtimer));
usleep(maxtimer);
//read new values
@ -261,8 +258,7 @@ void Beb_EndofDataSend(int tengiga){
r_framepktMsbcounter_new = Beb_Read32(csp0base, addr_r_framepktMsbcounter);
r_txndelaycounter_new = Beb_Read32(csp0base, addr_r_txndelaycounter);
r_framedelaycounter_new = Beb_Read32(csp0base, addr_r_framedelaycounter);
//#ifdef VERBOSE
printf("\nLeft\n"
FILE_LOG(logDEBUG5, ("\nLeft\n"
"FramepacketLsbcounter: %d\n"
"FramepacketMsbcounter: %d\n"
"Txndelaycounter:%d\n"
@ -273,8 +269,7 @@ void Beb_EndofDataSend(int tengiga){
"Txndelaycounter:%d\n"
"Framedelaycounter:%d\n\n",
l_framepktLsbcounter_new,l_framepktMsbcounter_new,l_txndelaycounter_new,l_framedelaycounter_new,
r_framepktLsbcounter_new,r_framepktMsbcounter_new,r_txndelaycounter_new,r_framedelaycounter_new);
//#endif
r_framepktLsbcounter_new,r_framepktMsbcounter_new,r_txndelaycounter_new,r_framedelaycounter_new));
if ((l_framepktLsbcounter == l_framepktLsbcounter_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
Beb_close(fd,csp0base);
}
@ -315,18 +310,19 @@ int Beb_SetMasterViaSoftware(){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0)
cprintf(BG_RED,"Set Master FAIL\n");
else{
if (fd < 0) {
FILE_LOG(logERROR, ("Set Master FAIL\n"));
} else {
value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET);
value|=MASTER_BIT;
value|=OVERWRITE_HARDWARE_BIT;
int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value);
if(newval!=value)
cprintf(BG_RED,"Could not set Master via Software\n");
else
if (newval!=value) {
FILE_LOG(logERROR, ("Could not set Master via Software\n"));
} else {
ret = 0;
}
}
//close file pointer
if (fd > 0)
@ -347,18 +343,19 @@ int Beb_SetSlaveViaSoftware(){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0)
cprintf(BG_RED,"Set Slave FAIL\n");
else{
if (fd < 0) {
FILE_LOG(logERROR, ("Set Slave FAIL\n"));
} else {
value = Beb_Read32(csp0base, MASTERCONFIG_OFFSET);
value&=~MASTER_BIT;
value|=OVERWRITE_HARDWARE_BIT;
int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value);
if(newval!=value)
cprintf(BG_RED,"Could not set Slave via Software\n");
else
if (newval!=value) {
FILE_LOG(logERROR, ("Could not set Slave via Software\n"));
} else {
ret = 0;
}
}
//close file pointer
if (fd > 0)
@ -374,12 +371,12 @@ int Beb_Activate(int enable){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0)
cprintf(BG_RED,"Deactivate FAIL\n");
else{
if (fd < 0) {
FILE_LOG(logERROR, ("Deactivate FAIL\n"));
} else {
if (enable > -1) {
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)
value&=~DEACTIVATE_BIT;
else
@ -387,10 +384,11 @@ int Beb_Activate(int enable){
int newval = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,value);
if (newval!=value) {
if(enable)
cprintf(BG_RED,"Could not activate via Software\n");
else
cprintf(BG_RED,"Could not deactivate via Software\n");
if (enable) {
FILE_LOG(logERROR, ("Could not activate via Software\n"));
} else {
FILE_LOG(logERROR, ("Could not deactivate via Software\n"));
}
}
}
@ -398,10 +396,11 @@ int Beb_Activate(int enable){
if (value&DEACTIVATE_BIT) ret = 0;
else ret = 1;
if (enable == -1) {
if(ret)
cprintf(BLUE,"Detector is active. Register value:%d\n", value);
else
cprintf(BG_RED,"Detector is deactivated! Register value:%d\n", value);
if (ret) {
FILE_LOG(logINFOBLUE, ("Detector is active. Register value:%d\n", value));
} else {
FILE_LOG(logERROR, ("Detector is deactivated! Register value:%d\n", value));
}
}
}
@ -428,7 +427,7 @@ int Beb_Set32bitOverflow(int val) {
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
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;
}
else {
@ -482,12 +481,12 @@ int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val){
strcpy(modename,"Flow Control for 10G");
if (val>0) val = 1;
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
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
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;
}
else {
@ -535,15 +534,16 @@ int Beb_ResetToHardwareSettings(){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if(fd < 0)
cprintf(BG_RED,"Reset to Hardware Settings FAIL\n");
else{
if (fd < 0) {
FILE_LOG(logERROR, ("Reset to Hardware Settings FAIL\n"));
} else {
value = Beb_Write32(csp0base, MASTERCONFIG_OFFSET,0);
if(value)
cprintf(BG_RED,"Could not reset to hardware settings\n");
else
if (value) {
FILE_LOG(logERROR, ("Could not reset to hardware settings\n"));
} else {
ret = 0;
}
}
//close file pointer
if (fd > 0)
@ -561,12 +561,13 @@ u_int32_t Beb_GetFirmwareRevision(){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_VERSION);
if(fd < 0)
cprintf(BG_RED,"Firmware Revision Read FAIL\n");
else{
if (fd < 0) {
FILE_LOG(logERROR, ("Firmware Revision Read FAIL\n"));
} else {
value = Beb_Read32(csp0base, FIRMWARE_VERSION_OFFSET);
if(!value)
cprintf(BG_RED,"Firmware Revision Number does not exist in this version\n");
if (!value) {
FILE_LOG(logERROR, ("Firmware Revision Number does not exist in this version\n"));
}
}
//close file pointer
@ -584,12 +585,13 @@ u_int32_t Beb_GetFirmwareSoftwareAPIVersion(){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_VERSION);
if(fd < 0)
cprintf(BG_RED,"Firmware Software API Version Read FAIL\n");
else{
if (fd < 0) {
FILE_LOG(logERROR, ("Firmware Software API Version Read FAIL\n"));
} else {
value = Beb_Read32(csp0base, FIRMWARESOFTWARE_API_OFFSET);
if(!value)
cprintf(BG_RED,"Firmware Software API Version does not exist in this version\n");
if (!value) {
FILE_LOG(logERROR, ("Firmware Software API Version does not exist in this version\n"));
}
}
//close file pointer
@ -609,14 +611,14 @@ void Beb_ResetFrameNumber(){
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
if (fd < 0) {
cprintf(BG_RED,"Reset Frame Number FAIL\n");
FILE_LOG(logERROR, ("Reset Frame Number FAIL\n"));
} else {
//write a 1
Beb_Write32(csp0base, FRAME_NUM_RESET_OFFSET, 1);
usleep(100000); //100ms
//write a 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
Beb_close(fd,csp0base);
}
@ -640,9 +642,9 @@ int Beb_InitBebInfos(){//file name at some point
bebInfoSize++;
}
int i0=34,i1=0;
int i0=Beb_detid,i1=0;
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);
}
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
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]);
printf("\n");
return 1;
}
@ -689,8 +690,10 @@ int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig, char* src_mac
int Beb_CheckSourceStuffBebInfo() {
unsigned int i;
for(i=1;i<bebInfoSize;i++) { //header stuff always starts from 1
if(!Beb_SetHeaderData(BebInfo_GetBebNumber(&beb_infos[i]),0,"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)){
printf("Error in BebInfo for module number %d.\n",BebInfo_GetBebNumber(&beb_infos[i]));
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)) {
FILE_LOG(logINFO, ("Error in BebInfo for module number %d.\n",BebInfo_GetBebNumber(&beb_infos[i])));
BebInfo_Print(&beb_infos[i]);
return 0;
}
@ -703,10 +706,10 @@ unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb){
unsigned int i;
for(i=1;i<bebInfoSize;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;
}
printf("*****Returning 0\n");
FILE_LOG(logDEBUG5, ("*****Returning 0\n"));
return 0;
}
@ -718,7 +721,7 @@ int Beb_WriteTo(unsigned int index){
return 1;
if (index>=bebInfoSize) {
printf("WriteTo index error.\n");
FILE_LOG(logERROR, ("WriteTo index error.\n"));
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);
if (fd < 0) {
cprintf(BG_RED,"Set up UDP Header FAIL\n");
FILE_LOG(logERROR, ("Set up UDP Header FAIL\n"));
} else {
//read data
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) {
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;
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;
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;
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;
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;
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;
printf("Setting Destination port to %d\n",dst_port);
FILE_LOG(logINFO, ("Setting Destination port to %d\n",dst_port));
Beb_AdjustIPChecksum(&udp_header);
@ -862,7 +848,7 @@ int Beb_SetMAC(char* mac, uint8_t* dst_ptr){
char *pch = strtok (macVal,":");
while (pch != NULL) {
if (strlen(pch)!=2) {
printf("Error: in mac address -> %s\n",macVal);
FILE_LOG(logERROR, ("Error: in mac address -> %s\n",macVal));
return 0;
}
@ -881,7 +867,7 @@ int Beb_SetIP(char* ip, uint8_t* dst_ptr){
char *pch = strtok (ipVal,".");
while (pch != NULL) {
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;
}
@ -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;
#ifdef MARTIN
cprintf(GREEN, "Beb_send_data[1]:%X\n",Beb_send_data[1]);
#endif
FILE_LOG(logDEBUG5, ("Beb_send_data[1]:%X\n",Beb_send_data[1]));
Beb_send_data[2] = 0;
Beb_SwapDataFun(0,2,&(Beb_send_data[1]));
#ifdef MARTIN
cprintf(GREEN, "Beb_send_data[1] Swapped:%X\n",Beb_send_data[1]);
#endif
FILE_LOG(logDEBUG5, ("Beb_send_data[1] Swapped:%X\n",Beb_send_data[1]));
if (Beb_activated) {
if (!Beb_WriteTo(i)) return 0;
@ -983,7 +965,7 @@ int Beb_StopAcquisition()
//open file pointer
int fd = Beb_open(&csp0base,XPAR_CMD_GENERATOR);
if (fd < 0) {
cprintf(BG_RED,"Beb Stop Acquisition FAIL\n");
FILE_LOG(logERROR, ("Beb Stop Acquisition FAIL\n"));
return 0;
} else {
//find value
@ -996,7 +978,7 @@ int Beb_StopAcquisition()
Beb_Write32(csp0base, (LEFT_OFFSET + STOP_ACQ_OFFSET),(valuel&(~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
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;
#ifdef MARTIN
cprintf(RED, "----Beb_RequestNImages Start----\n");
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);
#endif
FILE_LOG(logDEBUG5, ("----Beb_RequestNImages Start----\n"));
FILE_LOG(logDEBUG5, ("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));
// 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
int fd = Beb_open(&csp0base,XPAR_CMD_GENERATOR);
if (fd < 0) {
cprintf(BG_RED,"Beb Request N Images FAIL\n");
FILE_LOG(logERROR, ("Beb Request N Images FAIL\n"));
return 0;
} else {
#ifdef MARTIN
{
int i;
for (i=0; i < 10; i++)
printf("%X\n",Beb_Read32(baseaddr, (LEFT_OFFSET + i*4)));
#endif
FILE_LOG(logDEBUG5, ("%X\n",Beb_Read32(csp0base, (LEFT_OFFSET + i*4))));
}
// Generating commands
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);
#ifdef MARTIN
{
int i;
for (i=0; i < 10; i++)
printf("%X\n",Beb_Read32(baseaddr, (LEFT_OFFSET + i*4)));
printf("%d\n",in_two_requests);
#endif
FILE_LOG(logDEBUG5, ("%X\n",Beb_Read32(csp0base, (LEFT_OFFSET + i*4))));
FILE_LOG(logDEBUG5, ("%d\n",in_two_requests));
}
//"0x20 << 8" is dst_number (0x00 for left, 0x20 for right)
//Left
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
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));
#ifdef MARTIN
{
int i;
for (i=0; i < 10; i++)
printf("%X\n",Beb_Read32(baseaddr, (LEFT_OFFSET + i*4))); //*(ptrl+i));
printf("%d\n",in_two_requests);
#endif
FILE_LOG(logDEBUG5, ("%X\n",Beb_Read32(csp0base, (LEFT_OFFSET + i*4)))); //*(ptrl+i));
FILE_LOG(logDEBUG5, ("%d\n",in_two_requests));
}
Beb_close(fd,csp0base);
#ifdef MARTIN
printf("----Beb_RequestNImages----\n");
#endif
FILE_LOG(logDEBUG5, ("----Beb_RequestNImages----\n"));
}
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) {
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) {
@ -1131,14 +1109,14 @@ int Beb_Test(unsigned int beb_number){
unsigned int index = Beb_GetBebInfoIndex(beb_number);
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;
}
unsigned int 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)) {
printf("Error setting up header table....\n");
FILE_LOG(logERROR, ("Error setting up header table....\n"));
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);
for(i=0;i<64;i++) {
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;
}
}
@ -1166,7 +1144,7 @@ int Beb_GetBebFPGATemp()
//open file pointer
int fd = Beb_open(&csp0base,XPAR_SYSMON_0_BASEADDR);
if (fd < 0) {
cprintf(BG_RED,"Module Configuration FAIL\n");
FILE_LOG(logERROR, ("Module Configuration FAIL\n"));
} else {
//read data
ret = Beb_Read32(csp0base, FPGA_TEMP_OFFSET);
@ -1184,30 +1162,30 @@ void Beb_SetDetectorNumber(uint32_t detid) {
return;
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;
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_TEST_BASEADDR);
if (fd < 0) {
cprintf(BG_RED,"Set Detector ID FAIL\n");
FILE_LOG(logERROR, ("Set Detector ID FAIL\n"));
return;
} else {
uint32_t value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
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));
value = Beb_Read32(csp0base, UDP_HEADER_A_LEFT_OFST);
if((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK))
cprintf(BG_RED,"Set Detector ID FAIL\n");
if ((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK)) {
FILE_LOG(logERROR, ("Set Detector ID FAIL\n"));
}
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
value &= UDP_HEADER_X_MSK; // to keep previous x value
Beb_Write32(csp0base, UDP_HEADER_A_RIGHT_OFST, value | ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK));
value = Beb_Read32(csp0base, UDP_HEADER_A_RIGHT_OFST);
if((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK))
cprintf(BG_RED,"Set Detector ID FAIL\n");
if ((value & UDP_HEADER_ID_MSK) != ((swapid << UDP_HEADER_ID_OFST) & UDP_HEADER_ID_MSK)) {
FILE_LOG(logERROR, ("Set Detector ID FAIL\n"));
}
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[]) {
if (!Beb_activated)
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[1] = Beb_swap_uint16(pos[1]);
@ -1227,7 +1205,7 @@ int Beb_SetDetectorPosition(int pos[]) {
//open file pointer
int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_TEST_BASEADDR);
if (fd < 0) {
cprintf(BG_RED,"Set Detector Position FAIL\n");
FILE_LOG(logERROR, ("Set Detector Position FAIL\n"));
return FAIL;
} else {
uint32_t value = 0;
@ -1289,11 +1267,11 @@ int Beb_SetDetectorPosition(int pos[]) {
Beb_close(fd,csp0base);
}
if (ret == OK) {
cprintf(BLUE, "Position set to...\n"
FILE_LOG(logINFO, ("Position set to...\n"
"Left: [%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]+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;
@ -1307,20 +1285,16 @@ uint16_t Beb_swap_uint16( uint16_t val) {
int Beb_open(u_int32_t** csp0base, u_int32_t offset) {
int fd = open("/dev/mem", O_RDWR | O_SYNC, 0);
if (fd == -1)
cprintf(BG_RED,"\nCan't find /dev/mem!\n");
else{
#ifdef VERBOSE
printf("/dev/mem opened\n");
#endif
if (fd == -1) {
FILE_LOG(logERROR, ("\nCan't find /dev/mem!\n"));
} else {
FILE_LOG(logDEBUG5, ("/dev/mem opened\n"));
*csp0base = (u_int32_t*)mmap(0, BEB_MMAP_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, offset);
if (*csp0base == MAP_FAILED) {
cprintf(BG_RED,"\nCan't map memmory area!!\n");
FILE_LOG(logERROR, ("\nCan't map memmory area!!\n"));
fd = -1;
}
#ifdef VERBOSE
else printf("CSP0 mapped %p\n",(void*)*csp0base);
#endif
else FILE_LOG(logDEBUG5, ("CSP0 mapped %p\n",(void*)*csp0base));
}
return fd;
}

View File

@ -1,13 +1,4 @@
/**
* @author Ian Johnson
* @version 1.0
*/
#ifndef BEB_H
#define BEB_H
#pragma once
#include "LocalLinkInterface.h"
@ -36,9 +27,6 @@ struct BebInfo{
char* BebInfo_GetSrcIP(struct BebInfo* bebInfo, int ten_gig);
unsigned int BebInfo_GetSrcPort(struct BebInfo* bebInfo, int ten_gig);
void BebInfo_Print(struct BebInfo* bebInfo);
void Beb_ClearBebInfos();
int Beb_InitBebInfos();
int Beb_CheckSourceStuffBebInfo();
@ -57,9 +45,7 @@ struct BebInfo{
u_int32_t Beb_GetFirmwareRevision();
u_int32_t Beb_GetFirmwareSoftwareAPIVersion();
void Beb_ResetFrameNumber();
int Beb_WriteTo(unsigned int index);
int Beb_SetMAC(char* mac, uint8_t* dst_ptr);
int Beb_SetIP(char* ip, 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);
int Beb_SetByteOrder();
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_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);
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 @@
/**
* @author Ian Johnson
* @version 1.0
*/
#ifndef FEBCONTROL_H
#define FEBCONTROL_H
#pragma once
#include "FebInterface.h"
#include <netinet/in.h>
#include <stdlib.h>
//#include <string>
//#include <vector>
#include "FebInterface.h"
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);
void Feb_Control_activate(int activate);
int Feb_Control_IsBottomModule();
int Feb_Control_GetModuleNumber();
void Feb_Control_PrintModuleList();
int Feb_Control_GetModuleIndex(unsigned int module_number, unsigned int* module_index);
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, 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_GetDACNumber(char* s, unsigned int* n);
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);
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_SetStaticBits();
int Feb_Control_SetStaticBits1(unsigned int the_static_bits);
int Feb_Control_SendBitModeToBebServer();
unsigned int Feb_Control_ConvertTimeToRegister(float time_in_sec);
unsigned int Feb_Control_AddressToAll();
int Feb_Control_SetCommandRegister(unsigned int cmd);
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_ResetChipCompletely();
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();
int Feb_Control_Init(int master, int top, int normal, int module_num);
int Feb_Control_OpenSerialCommunication();
void Feb_Control_CloseSerialCommunication();
int Feb_Control_CheckSetup();
unsigned int Feb_Control_GetNModules();
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_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_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_GetDACName(unsigned int dac_num,char* s);
int Feb_Control_SetTrimbits(unsigned int module_num, unsigned int* trimbits);
unsigned int* Feb_Control_GetTrimbits();
/**Added by Dhanya */
int Feb_Control_SaveAllTrimbitsTo(int value);
int Feb_Control_Reset();
int Feb_Control_PrepareForAcquisition();
@ -151,11 +105,8 @@ int Feb_Control_GetModuleNumber();
int Feb_Control_StopAcquisition();
int Feb_Control_AcquisitionInProgress();
int Feb_Control_AcquisitionStartedBit();
/*int Feb_Control_WaitForFinishedFlag(int sleep_time_us=5000);*/
int Feb_Control_WaitForFinishedFlag(int sleep_time_us);
int Feb_Control_WaitForStartedFlag(int sleep_time_us, int prev_flag);
//functions for setting up exposure
void Feb_Control_PrintAcquisitionSetup();
int Feb_Control_SetNExposures(unsigned int n_images);
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_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_GetTestModeVariable();
@ -207,4 +156,4 @@ int Feb_Control_GetModuleNumber();
uint32_t Feb_Control_WriteRegister(uint32_t offset, uint32_t data);
uint32_t Feb_Control_ReadRegister(uint32_t offset);
#endif

View File

@ -1,26 +1,12 @@
/**
* @author Ian Johnson
* @version 1.0
*/
//#include <iostream>
//#include <iomanip>
//#include <unistd.h>
//#include <string.h>
//#include <sys/mman.h>
//#include <fcntl.h>
#include "FebInterface.h"
#include "LocalLinkInterface.h"
#include "xparameters.h"
#include "logger.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "xparameters.h"
#include "FebInterface.h"
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) {
if (ch>0xfff) return 0;
#ifdef MARTIN
cprintf(YELLOW, "FIW ch %d\n", ch);
#endif
FILE_LOG(logDEBUG5, ("FIW ch %d\n", ch));
Feb_Interface_send_data_raw[0] = 0x8fff0000;
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;
start_address &= 0x3fff;
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_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 @@
/**
* @author Ian Johnson
* @version 1.0
*/
#ifndef FEBINTERFACE_H
#define FEBINTERFACE_H
#include "LocalLinkInterface.h"
#pragma once
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);
void Feb_Interface_FebInterface();
void Feb_Interface_SendCompleteList(unsigned int n,unsigned int* list);
int Feb_Interface_SetByteOrder();
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_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_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);
//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_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"
xfs_u8 HWIO_xfs_in8(xfs_u32 InAddress)

View File

@ -1,35 +1,27 @@
//Class initially from Gerd and was called mmap_test.c
//return reversed 1 means good, 0 means failed
#include "LocalLinkInterface.h"
#include "HardwareMMappingDefs.h"
#include "logger.h"
#include "ansi.h"
#include <stdio.h>
#include <unistd.h>
//#include <string.h>
#include "HardwareMMappingDefs.h"
#include "LocalLinkInterface.h"
#include <sys/mman.h>
#include <fcntl.h>
void Local_LocalLinkInterface1(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr) {
// printf("\n v 1 \n");
printf("Initialize PLB LL FIFOs\n");
FILE_LOG(logDEBUG5, ("Initialize PLB LL FIFOs\n"));
ll->ll_fifo_base=0;
ll->ll_fifo_ctrl_reg=0;
if (Local_Init(ll,ll_fifo_badr)) {
Local_Reset(ll);
printf("\tFIFO Status : 0x%08x\n",Local_StatusVector(ll));
}else printf("\tError LocalLink Mappping : 0x%08x\n",ll_fifo_badr);
printf("\n\n");
FILE_LOG(logDEBUG5, ("\tFIFO Status : 0x%08x\n\n\n", Local_StatusVector(ll)));
} else FILE_LOG(logERROR, ("\tCould not map LocalLink : 0x%08x\n\n\n", ll_fifo_badr));
}
/*~LocalLinkInterface(){};*/
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) {
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);
@ -75,7 +67,6 @@ int Local_Reset1(struct LocalLinkInterface* ll,unsigned int 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);
// 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;
}
@ -101,12 +92,9 @@ int Local_Write(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buf
last_word = (buffer_len-1)/4;
word_ptr = (unsigned int *)buffer;
#ifdef MARTIN
cprintf(BLUE, "LL Write - Len: %2d - If: %X - Data: ",buffer_len, ll->ll_fifo_base);
FILE_LOG(logDEBUG5, ("LL Write - Len: %2d - If: %X - Data: ",buffer_len, ll->ll_fifo_base));
for (i=0; i < buffer_len/4; i++)
cprintf(BLUE, "%.8X ",*(((unsigned *) buffer)+i));
printf("\n");
#endif
FILE_LOG(logDEBUG5, ("%.8X ",*(((unsigned *) buffer)+i)));
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);
if ((status & PLB_LL_FIFO_STATUS_ALMOSTFULL) == 0) vacancy = 1;
#ifdef MARTIN
if (vacancy == 0) cprintf(RED, "Fifo full!\n");
#endif
if (vacancy == 0) {
FILE_LOG(logERROR, ("Fifo full!\n"));
}
}
//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;
int sof = 0;
#ifdef MARTIN
cprintf(CYAN, "LL Read - If: %X - Data: ",ll->ll_fifo_base);
#endif
FILE_LOG(logDEBUG5, ("LL Read - If: %X - Data: ",ll->ll_fifo_base));
word_ptr = (unsigned int *)buffer;
do
@ -168,7 +154,6 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
buffer_ptr = 0;
return -1; // buffer overflow
}
// printf(">>>> SOF\n\r");
buffer_ptr = 0;
sof = 1;
}
@ -179,9 +164,7 @@ int Local_Read(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
{
if ( (buffer_len >> 2) > buffer_ptr)
{
#ifdef MARTIN
cprintf(CYAN, "%.8X ", fifo_val);
#endif
FILE_LOG(logDEBUG5, ("%.8X ", fifo_val));
word_ptr[buffer_ptr++] = fifo_val; //write to buffer
}
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)
{
len = (buffer_ptr << 2) -3 + ( (status & PLB_LL_FIFO_STATUS_LL_REM)>>PLB_LL_FIFO_STATUS_LL_REM_SHIFT );
#ifdef MARTIN
cprintf(CYAN, "Len: %d\n",len);
#endif
// printf(">>>>status=0x%08x EOF len = %d \n\r\n\r",status, len);
FILE_LOG(logDEBUG5, ("Len: %d\n",len));
buffer_ptr = 0;
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) {
// printf("Fifo CTRL Reg(1): 0x%08x\n",plb_ll_fifo_ctrl_reg);
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);
// 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);
// printf("Fifo STAT Reg: 0x%08x\n", plb_ll_fifo[PLB_LL_FIFO_REG_STATUS]);
return 1;
}
@ -233,28 +209,14 @@ int Local_Test(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buff
do{
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) {
rec_buffer[len]=0;
printf((char*) rec_buffer);
printf("\n");
FILE_LOG(logINFO, ("%s\n", (char*) rec_buffer));
}
} while(len > 0);
printf("\n\n\n\n");
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 <sys/types.h>
#include "ansi.h"
#include <sys/mman.h>
#include <fcntl.h>
/*class LocalLinkInterface: public HardwareIO{ //*/
struct LocalLinkInterface{
@ -20,35 +8,14 @@ struct LocalLinkInterface{
unsigned int ll_fifo_ctrl_reg;
};
int Local_Init(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr);
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);
void Local_llfifo_print_frame(struct LocalLinkInterface* ll,unsigned char* fbuff, int len);
void Local_LocalLinkInterface1(struct LocalLinkInterface* ll,unsigned int ll_fifo_badr);
/* virtual ~LocalLinkInterface();*/
unsigned int Local_StatusVector(struct LocalLinkInterface* ll);
int Local_Reset(struct LocalLinkInterface* ll);
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_Test(struct LocalLinkInterface* ll,unsigned int buffer_len, void *buffer);
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
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
Repsitory UUID: 178b83222380f7b7294cde66e66719c5d1c1363c
Revision: 2
Repsitory UUID: dfad145e1492e961c95063aa5b2f54e5e1b418a0
Revision: 3
Branch: refactor
Last Changed Author: Dhanya_Thattil
Last Changed Rev: 4125
Last Changed Date: 2018-10-16 09:02:45.000000002 +0200 ./Makefile
Last Changed Rev: 4127
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 GITREPUUID "178b83222380f7b7294cde66e66719c5d1c1363c"
#define GITREPUUID "dfad145e1492e961c95063aa5b2f54e5e1b418a0"
#define GITAUTH "Dhanya_Thattil"
#define GITREV 0x4125
#define GITDATE 0x20181016
#define GITREV 0x4127
#define GITDATE 0x20181023
#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 NETWORKINDEX {TXN_LEFT, TXN_RIGHT, TXN_FRAME,FLOWCTRL_10G};
enum {E_PARALLEL, E_NON_PARALLEL, E_SAFE};
/* Hardware Definitions */
#define NCHAN (256 * 256)

View File

@ -448,7 +448,7 @@ void setupDetector() {
bus_w(DAQ_REG, 0x0); /* Only once at server startup */
setSpeed(CLOCK_DIVIDER, HALF_SPEED);
setSpeed(HALF_SPEED);
cleanFifos();
resetCore();
@ -465,7 +465,7 @@ void setupDetector() {
setTimer(DELAY_AFTER_TRIGGER, DEFAULT_DELAY);
setTimer(STORAGE_CELL_NUMBER, DEFAULT_NUM_STRG_CLLS);
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);
setHighVoltage(DEFAULT_HIGH_VOLTAGE);
@ -611,10 +611,7 @@ int setDynamicRange(int dr){
/* parameters - readout */
int setSpeed(enum speedVariable arg, int val) {
if (arg != CLOCK_DIVIDER)
return -1;
enum speedVariable setSpeed(int val) {
// setting
if(val >= 0) {
@ -1620,7 +1617,7 @@ void readFrame(int *ret, char *mess){
} else {
*ret = (int)FINISHED;
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
myport = port_number;
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));
}
@ -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 ts = 0;
int ts = 0, n = 0;
int nChips = myMod->nchip;
int nChans = myMod->nchan;
int nAdcs = myMod->nadc;
int nDacs = myMod->ndac;
// send module structure
ts += sendData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
ts += sendData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
ts += sendData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
ts += sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
ts += sendData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
ts += sendData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
ts += sendData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
ts += sendData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
n = sendData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
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));
// 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));
{
int idac;
@ -383,18 +392,21 @@ int sendModuleGeneral(int file_des, sls_detector_module *myMod, int sendAll) {
}
// 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));
// some detectors dont require sending all trimbits etc.
if(sendAll) {
// 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));
// 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));
if (!n) return -1; ts += n;
}
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 ts = 0;
int ts = 0, n = 0;
int *dacptr = myMod->dacs;
int *adcptr = myMod->adcs;
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 nDacs, ndold = myMod->ndac, ndacdiff;
int nAdcs, naold = myMod->nadc, nadcdiff;
ts += receiveData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
ts += receiveData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
ts += receiveData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
ts += receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
ts += receiveData(file_des,&(myMod->nadc),sizeof(myMod->nadc),INT32);
ts += receiveData(file_des,&(myMod->reg),sizeof(myMod->reg),INT32);
ts += receiveData(file_des,&(myMod->gain), sizeof(myMod->gain),OTHER);
ts += receiveData(file_des,&(myMod->offset), sizeof(myMod->offset),OTHER);
n = receiveData(file_des,&(myMod->serialnumber),sizeof(myMod->serialnumber),INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->nchan),sizeof(myMod->nchan),INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->nchip),sizeof(myMod->nchip),INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->ndac),sizeof(myMod->ndac),INT32);
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->adcs = adcptr;
@ -473,7 +493,8 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
else
FILE_LOG(logDEBUG5, ("received %d adcs\n",nAdcs));
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"));
int id;
for (id = 0; id<nDacs; id++)
@ -481,20 +502,25 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
} else {
dacptr = (int*)malloc(ndacdiff*sizeof(int));
myMod->ndac = ndold;
ts += receiveData(file_des,myMod->dacs, sizeof(int)*ndold,INT32);
ts += receiveData(file_des,dacptr, sizeof(int)*ndacdiff,INT32);
n = receiveData(file_des,myMod->dacs, sizeof(int)*ndold,INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,dacptr, sizeof(int)*ndacdiff,INT32);
if (!n) return -1; ts += n;
free(dacptr);
return FAIL;
}
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"));
} else {
adcptr = (int*)malloc(nadcdiff*sizeof(int));
myMod->nadc = naold;
ts += receiveData(file_des,myMod->adcs, sizeof(int)*naold,INT32);
ts += receiveData(file_des,adcptr, sizeof(int)*nadcdiff,INT32);
n = receiveData(file_des,myMod->adcs, sizeof(int)*naold,INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,adcptr, sizeof(int)*nadcdiff,INT32);
if (!n) return -1; ts += n;
free(adcptr);
return FAIL;
}
@ -504,25 +530,31 @@ int receiveModuleGeneral(int file_des, sls_detector_module* myMod, int receiveA
if(receiveAll){
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"));
} else {
chipptr = (int*)malloc(nchipdiff*sizeof(int));
myMod->nchip = nchipold;
ts += receiveData(file_des,myMod->chipregs, sizeof(int)*nchipold,INT32);
ts += receiveData(file_des,chipptr, sizeof(int)*nchipdiff,INT32);
n = receiveData(file_des,myMod->chipregs, sizeof(int)*nchipold,INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,chipptr, sizeof(int)*nchipdiff,INT32);
if (!n) return -1; ts += n;
free(chipptr);
return FAIL;
}
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"));
} else {
chanptr = (int*)malloc(nchandiff*sizeof(int));
myMod->nchan = nchanold;
ts += receiveData(file_des,myMod->chanregs, sizeof(int)*nchanold,INT32);
ts += receiveData(file_des,chanptr, sizeof(int)*nchandiff,INT32);
n = receiveData(file_des,myMod->chanregs, sizeof(int)*nchanold,INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,chanptr, sizeof(int)*nchandiff,INT32);
if (!n) return -1; ts += n;
free(chanptr);
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
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
int ret1 = ret;
sendData(fileDes, &ret1,sizeof(ret1), INT32);/* if < 0, return , socket crash*/
sendData(fileDes, &ret1,sizeof(ret1), INT32);
if(ret == FAIL) {
// send error message
if (strlen(mess))
@ -567,4 +599,6 @@ void Server_SendResult(int fileDes, intType itype, int update, void* retval, int
}
// send return value
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 retval pointer to 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

View File

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

View File

@ -19,15 +19,12 @@ int getFirmwareCheckResult(char** mess);
#endif
void checkFirmwareCompatibility();
#if defined(MYTHEN3D) || defined(JUNGFRAUD)
#ifdef JUNGFRAUD
int checkType();
u_int32_t testFpga(void);
int testBus(void);
#endif
#ifdef MYTHEN3D
int moduleTest( enum digitalTestMode arg);
#endif
#ifdef JUNGFRAUD
int detectorTest( enum digitalTestMode arg);
#endif
@ -40,7 +37,7 @@ u_int64_t getFirmwareAPIVersion();
u_int16_t getHardwareVersionNumber();
u_int16_t getHardwareSerialNumber();
#endif
#if !defined(MYTHEN3D) || !defined(EIGERD)
#ifdef EIGERD
u_int32_t getDetectorNumber();
#endif
u_int64_t getDetectorMAC();
@ -73,17 +70,11 @@ uint32_t readRegister(uint32_t offset);
// firmware functions (resets)
#if defined(MYTHEN3D) || defined(JUNGFRAUD)
#ifdef JUNGFRAUD
int powerChip (int on);
void cleanFifos();
void resetCore();
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 adcPhase(int st);
int getPhase();
@ -97,7 +88,7 @@ int setROI(int n, ROI arg[], int *retvalsize, int *ret);
#endif
// parameters - readout
int setSpeed(enum speedVariable arg, int val);
enum speedVariable setSpeed(int val);
#ifdef EIGERD
enum readOutFlags setReadOutFlags(enum readOutFlags val);
#endif
@ -129,35 +120,21 @@ int setThresholdEnergy(int ev);
#endif
// 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 initDac(int dacnum);
int voltageToDac(int value);
int dacToVoltage(unsigned int digital);
#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
extern void setAdc(int addr, int val); // AD9257.h
#endif
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);
#endif
#ifndef MYTHEN3D
int setHighVoltage(int val);
#endif
@ -169,8 +146,10 @@ enum externalCommunicationMode getTiming();
#ifdef JUNGFRAUD
long int calcChecksum(int sourceip, int destip);
#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);
#else
int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2);
#endif
#if defined(JUNGFRAUD) || defined(EIGERD)
int setDetectorPosition(int pos[]);
@ -187,7 +166,7 @@ int resetCounterBlock(int startACQ);
int calibratePedestal(int frames);
// jungfrau specific - pll, flashing firmware
#elif defined(JUNGFRAUD) || defined(MYTHEN3D)
#elif JUNGFRAUD
void resetPLL();
u_int32_t setPllReconfigReg(u_int32_t reg, u_int32_t val);
void configurePll();

View File

@ -33,6 +33,7 @@ int main(int argc, char *argv[]){
// subsequent read/write to socket gives error - must handle locally
signal(SIGPIPE, SIG_IGN);
// circumvent the basic tests
{
int i;
@ -64,28 +65,20 @@ int main(int argc, char *argv[]){
#endif
if (isControlServer) {
portno = DEFAULT_PORTNO;
FILE_LOG(logINFOBLUE,
("***************************************************\n"
"********* opening control server on port %d **********\n"
"********************************************************\n\n"
, portno));
FILE_LOG(logINFO, ("Opening control server on port %d \n", portno));
#ifdef STOP_SERVER
{
int i;
for (i = 0; i < argc; ++i)
sprintf(cmd, "%s %s", cmd, argv[i]);
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);
}
#endif
} else {
portno = DEFAULT_PORTNO + 1;
FILE_LOG(logINFOBLUE,
("***************************************************\n"
"*********** opening stop server on port %d ***********\n"
"********************************************************\n\n"
, portno));
FILE_LOG(logINFO,("Opening stop server on port %d \n", portno));
}
init_detector();
@ -100,7 +93,7 @@ int main(int argc, char *argv[]){
function_table();
if (isControlServer) {
FILE_LOG(logINFO, ("Control Server Ready...\n\n"));
FILE_LOG(logINFOBLUE, ("Control Server Ready...\n\n"));
} else {
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
#define SERVER_FUNCS_H
#pragma once
#include "sls_detector_defs.h"
#include <stdlib.h>
@ -14,6 +12,7 @@ void function_table();
void functionNotImplemented();
void modeNotImplemented(char* modename, int mode);
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_nofuncMode(int);
@ -79,4 +78,3 @@ int storage_cell_start(int);
int check_version(int);
int software_trigger(int);
#endif

View File

@ -2867,27 +2867,21 @@ int slsDetector::setDynamicRange(int n) {
if (connectControl() == OK){
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
controlSocket->SendDataOnly(&n,sizeof(n));
//rate correction is switched off if not 32 bit mode
if(thisDetector->myDetectorType == EIGER){
controlSocket->ReceiveDataOnly(&rateret,sizeof(rateret));
if (rateret==FAIL) {
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==FAIL) {
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Detector returned error: " << mess << std::endl;
if(strstr(mess,"Rate Correction")!=NULL){
// rate correction is switched off if not 32 bit mode
if(strstr(mess,"32")!=NULL)
setErrorMask((getErrorMask())|(RATE_CORRECTION_NOT_32or16BIT));
else
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));
}
disconnectControl();
if (ret==FORCE_UPDATE)
updateDetector();
@ -4268,13 +4262,24 @@ int slsDetector::sendROI(int n,ROI roiLimits[]) {
#ifdef VERBOSE
std::cout << "Sending ROI of size " << arg << " to detector" << std::endl;
#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));
if (ret!=FAIL){
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))){
ret=FAIL;
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");
FILE_LOG(logERROR) << mess;
interface->Server_SendResult(false, ret, NULL, 0, mess);
return ret;
return interface->Server_SendResult(false, ret, NULL, 0, mess);
}
@ -329,21 +327,17 @@ int slsReceiverTCPIPInterface::exec_command() {
}
}
interface->Server_SendResult(false, ret, retval, MAX_STR_LENGTH, mess);
return ret;
return interface->Server_SendResult(false, ret, retval, MAX_STR_LENGTH, mess);
}
int slsReceiverTCPIPInterface::exit_server() {
cprintf(RED,"Closing receiver server\n");
cprintf(RED,"Closing server\n");
ret = OK;
interface->Server_SendResult(false, ret, NULL, 0);
ret = GOODBYE;
return ret;
return GOODBYE;
}
@ -369,18 +363,14 @@ int slsReceiverTCPIPInterface::lock_receiver() {
interface->Server_LockedError(ret, mess);
}
interface->Server_SendResult(true, ret, &lockStatus,sizeof(lockStatus), mess);
return ret;
return interface->Server_SendResult(true, ret, &lockStatus,sizeof(lockStatus), mess);
}
int slsReceiverTCPIPInterface::get_last_client_ip() {
ret = OK;
interface->Server_SendResult(true, ret,mySock->lastClientIP, sizeof(mySock->lastClientIP));
return ret;
return interface->Server_SendResult(true, ret,mySock->lastClientIP, sizeof(mySock->lastClientIP));
}
@ -560,9 +550,7 @@ int slsReceiverTCPIPInterface::get_id(){
ret = OK;
int64_t retval = getReceiverVersion();
interface->Server_SendResult(true, ret, &retval, sizeof(retval));
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval));
}
@ -622,9 +610,7 @@ int slsReceiverTCPIPInterface::set_detector_type(){
//get
retval = myDetectorType;
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -679,7 +665,13 @@ int slsReceiverTCPIPInterface::set_roi() {
int iloop = 0;
for (iloop = 0; iloop < nroi; iloop++) {
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();
roiLimits.push_back(temp);
}
@ -766,9 +758,7 @@ int slsReceiverTCPIPInterface::setup_udp(){
}
}
interface->Server_SendResult(true, ret, retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, retval, sizeof(retval), mess);
}
@ -865,9 +855,7 @@ int slsReceiverTCPIPInterface::set_timer() {
FILE_LOG(logDEBUG1) << slsDetectorDefs::getTimerType((timerIndex)(index[0])) << ":" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -927,9 +915,7 @@ int slsReceiverTCPIPInterface::set_dynamic_range() {
FILE_LOG(logDEBUG1) << "dynamic range: " << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -966,9 +952,7 @@ int slsReceiverTCPIPInterface::set_streaming_frequency(){
}
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -984,9 +968,7 @@ int slsReceiverTCPIPInterface::get_status(){
if (ret == OK)
retval = receiver->getStatus();
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1017,11 +999,7 @@ int slsReceiverTCPIPInterface::start_receiver(){
}
}
interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
return interface->Server_SendResult(true, ret, NULL, 0, mess);
}
@ -1050,9 +1028,7 @@ int slsReceiverTCPIPInterface::stop_receiver(){
}
}
interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
return interface->Server_SendResult(true, ret, NULL, 0, mess);
}
@ -1162,9 +1138,7 @@ int slsReceiverTCPIPInterface::set_file_index() {
FILE_LOG(logDEBUG1) << "file index:" << retval;
}
interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
}
@ -1182,9 +1156,7 @@ int slsReceiverTCPIPInterface::get_frame_index(){
if (ret == OK)
retval=receiver->getAcquisitionIndex();
interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
}
@ -1199,9 +1171,7 @@ int slsReceiverTCPIPInterface::get_frames_caught(){
if (ret == OK)
retval=receiver->getTotalFramesCaught();
interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval,sizeof(retval), mess);
}
@ -1221,9 +1191,7 @@ int slsReceiverTCPIPInterface::reset_frames_caught(){
}
}
interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
return interface->Server_SendResult(true, ret, NULL, 0, mess);
}
@ -1256,9 +1224,7 @@ int slsReceiverTCPIPInterface::enable_file_write(){
FILE_LOG(logDEBUG1) << "file write enable:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1293,9 +1259,7 @@ int slsReceiverTCPIPInterface::enable_overwrite() {
FILE_LOG(logDEBUG1) << "file overwrite enable:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1331,9 +1295,7 @@ int slsReceiverTCPIPInterface::enable_tengiga() {
FILE_LOG(logDEBUG1) << "10Gbe:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1371,9 +1333,7 @@ int slsReceiverTCPIPInterface::set_fifo_depth() {
FILE_LOG(logDEBUG1) << "fifo depth:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1409,9 +1369,7 @@ int slsReceiverTCPIPInterface::set_activate() {
FILE_LOG(logDEBUG1) << "Activate: " << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1444,9 +1402,7 @@ int slsReceiverTCPIPInterface::set_data_stream_enable(){
FILE_LOG(logDEBUG1) << "data streaming enable:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1479,9 +1435,7 @@ int slsReceiverTCPIPInterface::set_streaming_timer(){
FILE_LOG(logDEBUG1) << "Streaming timer:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1517,9 +1471,7 @@ int slsReceiverTCPIPInterface::set_flipped_data(){
FILE_LOG(logDEBUG1) << "Flipped Data:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1554,9 +1506,7 @@ int slsReceiverTCPIPInterface::set_file_format() {
FILE_LOG(logDEBUG1) << "File Format: " << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1589,9 +1539,7 @@ int slsReceiverTCPIPInterface::set_detector_posid() {
FILE_LOG(logDEBUG1) << "Position Id:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1628,9 +1576,7 @@ int slsReceiverTCPIPInterface::set_multi_detector_size() {
FILE_LOG(logDEBUG1) << "Multi Detector Size:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1659,9 +1605,7 @@ int slsReceiverTCPIPInterface::set_streaming_port() {
FILE_LOG(logDEBUG1) << "streaming port:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1727,9 +1671,7 @@ int slsReceiverTCPIPInterface::set_silent_mode() {
FILE_LOG(logDEBUG1) << "silent mode:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1768,9 +1710,7 @@ int slsReceiverTCPIPInterface::enable_gap_pixels() {
FILE_LOG(logDEBUG1) << "Gap Pixels Enable: " << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1801,9 +1741,7 @@ int slsReceiverTCPIPInterface::restream_stop(){
}
}
interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
return interface->Server_SendResult(true, ret, NULL, 0, mess);
}
@ -1871,9 +1809,7 @@ int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
FILE_LOG(logDEBUG1) << "UDP Socket Buffer Size:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1888,9 +1824,7 @@ int slsReceiverTCPIPInterface::get_real_udp_socket_buffer_size(){
if (ret == OK)
retval = receiver->getActualUDPSocketBufferSize();
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1924,9 +1858,7 @@ int slsReceiverTCPIPInterface::set_frames_per_file() {
FILE_LOG(logDEBUG1) << "frames per file:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -1971,9 +1903,7 @@ int slsReceiverTCPIPInterface::check_version_compatibility() {
}
else FILE_LOG(logINFO) << "Compatibility with Client: Successful";
interface->Server_SendResult(true, ret, NULL, 0, mess);
return ret;
return interface->Server_SendResult(true, ret, NULL, 0, mess);
}
@ -2007,9 +1937,7 @@ int slsReceiverTCPIPInterface::set_discard_policy() {
FILE_LOG(logDEBUG1) << "frame discard policy:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -2045,9 +1973,7 @@ int slsReceiverTCPIPInterface::set_padding_enable() {
FILE_LOG(logDEBUG1) << "Frame Padding Enable:" << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}
@ -2084,7 +2010,5 @@ int slsReceiverTCPIPInterface::set_deactivated_receiver_padding_enable() {
FILE_LOG(logDEBUG1) << "Deactivated Padding Enable: " << retval;
}
interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
return ret;
return interface->Server_SendResult(true, ret, &retval, sizeof(retval), mess);
}

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) {
// update if different clients
@ -72,6 +72,8 @@ void ClientInterface::Server_SendResult(bool update, int ret,
}
// send return value
mySocket->SendDataOnly(retval, retvalSize);
return ret;
}

View File

@ -65,8 +65,9 @@ public:
* @param retval pointer to result
* @param retvalSize size of result
* @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
* Server receives arguments and checks if base object is null (if checkbase is true)

View File

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