From a95dbd2215e60b6d27991a7430cb2b9ca11c7763 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Wed, 14 Jun 2017 10:43:15 +0200 Subject: [PATCH] made some functions common --- .../jungfrauDetectorServer/RegisterDefs.h | 2 - .../bin/jungfrauDetectorServerv3.0.0.1.1 | Bin 105576 -> 0 bytes .../bin/jungfrauDetectorServerv3.0.0.1.2 | Bin 0 -> 105436 bytes .../jungfrauDetectorServer/blackfin.h | 1 + .../jungfrauDetectorServer/programfpga.h | 1 + .../slsDetectorFunctionList.c | 245 +----------------- .../slsDetectorServer_defs.h | 1 - .../slsDetectorServer/blackfin.h | 108 ++++++++ .../slsDetectorServer/programfpga.h | 178 +++++++++++++ .../slsDetectorFunctionList.h | 101 ++++---- .../slsDetectorServer_funcs.c | 6 +- 11 files changed, 338 insertions(+), 305 deletions(-) delete mode 100755 slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.0.0.1.1 create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.0.0.1.2 create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/blackfin.h create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/programfpga.h create mode 100755 slsDetectorSoftware/slsDetectorServer/blackfin.h create mode 100755 slsDetectorSoftware/slsDetectorServer/programfpga.h diff --git a/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h b/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h index 50c1a3646..e38a02c38 100644 --- a/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/RegisterDefs.h @@ -2,8 +2,6 @@ #define REGISTER_DEFS_H /* Definitions for FPGA*/ -#define CSP0 0x20200000 -#define MEM_SIZE 0x100000 /* FPGA Version register */ #define FPGA_VERSION_REG (0x00 << 11) diff --git a/slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.0.0.1.1 b/slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.0.0.1.1 deleted file mode 100755 index 68d58b3b228c89c9ff37620da754dbbe3f5fcaef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105576 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 aPfZ!wf~b4sFfxs-CdwOmHZ`TV#s36KxeQtW literal 0 HcmV?d00001 diff --git a/slsDetectorSoftware/jungfrauDetectorServer/blackfin.h b/slsDetectorSoftware/jungfrauDetectorServer/blackfin.h new file mode 120000 index 000000000..2873c7dc6 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/blackfin.h @@ -0,0 +1 @@ +../slsDetectorServer/blackfin.h \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/programfpga.h b/slsDetectorSoftware/jungfrauDetectorServer/programfpga.h new file mode 120000 index 000000000..72c54d21d --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/programfpga.h @@ -0,0 +1 @@ +../slsDetectorServer/programfpga.h \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorFunctionList.c index be4a86f08..b43450b75 100644 --- a/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -4,31 +4,24 @@ #include "slsDetectorFunctionList.h" #include "gitInfoJungfrau.h" #include "slsDetectorServer_defs.h" // also include RegisterDefs.h +#include "blackfin.h" +#include "programfpga.h" + + -#include -#include // usleep -#include -#include // open -#include // mmap /* global variables */ - sls_detector_module *detectorModules=NULL; int *detectorChips=NULL; int *detectorChans=NULL; dacs_t *detectorDacs=NULL; dacs_t *detectorAdcs=NULL; -int gpioDefined=0; enum detectorSettings thisSettings; enum masterFlags masterMode = NO_MASTER; + int highvoltage = 0; int dacValues[NDAC]; - -u_int32_t CSP0BASE = 0; int32_t clkPhase[2] = {0, 0}; -char mtdvalue[10]; - - @@ -280,119 +273,6 @@ void initStopServer() { } -int mapCSP0(void) { - // if not mapped - if (!CSP0BASE) { - printf("Mapping memory\n"); -#ifdef VIRTUAL - CSP0BASE = malloc(MEM_SIZE); - printf("memory allocated\n"); -#else - int fd; - fd = open("/dev/mem", O_RDWR | O_SYNC, 0); - if (fd == -1) { - cprintf(BG_RED, "Error: Can't find /dev/mem\n"); - return FAIL; - } -#ifdef VERBOSE - printf("/dev/mem opened\n"); -#endif - CSP0BASE = (u_int32_t)mmap(0, MEM_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, CSP0); - if (CSP0BASE == (u_int32_t)MAP_FAILED) { - cprintf(BG_RED, "Error: Can't map memmory area\n"); - return FAIL; - } - printf("CSPOBASE mapped from %08x to %08x\n",CSP0BASE,CSP0BASE+MEM_SIZE); -#endif - printf("Status Register: %08x\n",bus_r(STATUS_REG)); - }else - printf("Memory already mapped before\n"); - return OK; -} - - -void bus_w16(u_int32_t offset, u_int16_t data) { - volatile u_int16_t *ptr1; - ptr1=(u_int16_t*)(CSP0BASE+offset*2); - *ptr1=data; -} - -u_int16_t bus_r16(u_int32_t offset){ - volatile u_int16_t *ptr1; - ptr1=(u_int16_t*)(CSP0BASE+offset*2); - return *ptr1; -} - -void bus_w(u_int32_t offset, u_int32_t data) { - volatile u_int32_t *ptr1; - ptr1=(u_int32_t*)(CSP0BASE+offset*2); - *ptr1=data; -} - -u_int32_t bus_r(u_int32_t offset) { - volatile u_int32_t *ptr1; - ptr1=(u_int32_t*)(CSP0BASE+offset*2); - return *ptr1; -} - -int64_t set64BitReg(int64_t value, int aLSB, int aMSB){ - int64_t v64; - u_int32_t vLSB,vMSB; - if (value!=-1) { - vLSB=value&(0xffffffff); - bus_w(aLSB,vLSB); - v64=value>> 32; - vMSB=v64&(0xffffffff); - bus_w(aMSB,vMSB); - } - return get64BitReg(aLSB, aMSB); - -} - -int64_t get64BitReg(int aLSB, int aMSB){ - int64_t v64; - u_int32_t vLSB,vMSB; - vLSB=bus_r(aLSB); - vMSB=bus_r(aMSB); - v64=vMSB; - v64=(v64<<32) | vLSB; - printf(" reg64(%x,%x) %x %x %llx\n", aLSB, aMSB, vLSB, vMSB, v64); - return v64; -} - - -void defineGPIOpins(){ - if (!gpioDefined) { - //define the gpio pins - system("echo 7 > /sys/class/gpio/export"); - system("echo 9 > /sys/class/gpio/export"); - //define their direction - system("echo in > /sys/class/gpio/gpio7/direction"); - system("echo out > /sys/class/gpio/gpio9/direction"); - printf("gpio pins defined\n"); - gpioDefined = 1; - }else printf("gpio pins already defined earlier\n"); -} - -void resetFPGA(){ - cprintf(BLUE,"\n*** Reseting FPGA ***\n"); - FPGAdontTouchFlash(); - FPGATouchFlash(); - usleep(250*1000); -} - -void FPGAdontTouchFlash(){ - //tell FPGA to not touch flash - system("echo 0 > /sys/class/gpio/gpio9/value"); - //usleep(100*1000); -} - -void FPGATouchFlash(){ - //tell FPGA to touch flash to program itself - system("echo 1 > /sys/class/gpio/gpio9/value"); -} - - @@ -489,18 +369,6 @@ void setupDetector() { -/* advanced read/write reg */ - -u_int32_t writeRegister(u_int32_t offset, u_int32_t data) { - bus_w(offset << 11, data); - return readRegister(offset); -} - -u_int32_t readRegister(u_int32_t offset) { - return bus_r(offset << 11); -} - - /* firmware functions (resets) */ @@ -1362,105 +1230,6 @@ void configurePll() { -void eraseFlash(){ -#ifdef VERY_VERBOSE - printf("\nErasing Flash\n"); -#endif - char command[255]; - sprintf(command,"flash_eraseall %s",mtdvalue); - system(command); - printf("flash erased\n"); -} - - -int startWritingFPGAprogram(FILE** filefp){ -#ifdef VERY_VERBOSE - printf("\nStart Writing of FPGA program\n"); -#endif - - //getting the drive - char output[255]; - FILE* fp = popen("awk \'$4== \"\\\"bitfile(spi)\\\"\" {print $1}\' /proc/mtd", "r"); - fgets(output, sizeof(output), fp); - pclose(fp); - strcpy(mtdvalue,"/dev/"); - char* pch = strtok(output,":"); - if(pch == NULL){ - cprintf(RED,"Could not get mtd value\n"); - return FAIL; - } - strcat(mtdvalue,pch); - printf ("\nFlash drive found: %s\n",mtdvalue); - - FPGAdontTouchFlash(); - - //writing the program to flash - *filefp = fopen(mtdvalue, "w"); - if(*filefp == NULL){ - cprintf(RED,"Unable to open %s in write mode\n",mtdvalue); - return FAIL; - } - printf("flash ready for writing\n"); - - return OK; -} - -int stopWritingFPGAprogram(FILE* filefp){ -#ifdef VERY_VERBOSE - printf("\nStopping of writing FPGA program\n"); -#endif - - int wait = 0; - if(filefp!= NULL){ - fclose(filefp); - wait = 1; - } - - //touch and program - FPGATouchFlash(); - - if(wait){ -#ifdef VERY_VERBOSE - printf("Waiting for FPGA to program from flash\n"); -#endif - //waiting for success or done - char output[255]; - int res=0; - while(res == 0){ - FILE* sysFile = popen("cat /sys/class/gpio/gpio7/value", "r"); - fgets(output, sizeof(output), sysFile); - pclose(sysFile); - sscanf(output,"%d",&res); -#ifdef VERY_VERBOSE - printf("gpi07 returned %d\n",res); -#endif - } - } - printf("FPGA has picked up the program from flash\n\n"); - - return OK; -} - -int writeFPGAProgram(char* fpgasrc, size_t fsize, FILE* filefp){ -#ifdef VERY_VERBOSE - printf("\nWriting of FPGA Program\n"); - cprintf(BLUE,"address of fpgasrc:%p\n",(void *)fpgasrc); - cprintf(BLUE,"fsize:%d\n",fsize); - cprintf(BLUE,"pointer:%p\n",(void*)filefp); -#endif - - if(fwrite((void*)fpgasrc , sizeof(char) , fsize , filefp )!= fsize){ - cprintf(RED,"Could not write FPGA source to flash\n"); - return FAIL; - } -#ifdef VERY_VERBOSE - cprintf(BLUE, "program written to flash\n"); -#endif - return OK; -} - - - /* aquisition */ @@ -1574,13 +1343,9 @@ u_int32_t runBusy(void) { - - /* common */ - - int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod){ int ichip, idac, ichan, iadc; diff --git a/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorServer_defs.h b/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorServer_defs.h index afb4b2ba1..3d616556a 100644 --- a/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/slsDetectorServer_defs.h @@ -8,7 +8,6 @@ #define GOODBYE (-200) -#define CTRL_SRVR_INIT_TIME_US (300 * 1000) //#define REQUIRED_FIRMWARE_VERSION 16 diff --git a/slsDetectorSoftware/slsDetectorServer/blackfin.h b/slsDetectorSoftware/slsDetectorServer/blackfin.h new file mode 100755 index 000000000..832cbc0b5 --- /dev/null +++ b/slsDetectorSoftware/slsDetectorServer/blackfin.h @@ -0,0 +1,108 @@ +#ifndef BLACKFIN_H +#define BLACKFIN_H + +#include +#include // open +#include // mmap + + +/* global variables */ +u_int32_t CSP0BASE = 0; +#define CSP0 0x20200000 +#define MEM_SIZE 0x100000 + + + + +void bus_w16(u_int32_t offset, u_int16_t data) { + volatile u_int16_t *ptr1; + ptr1=(u_int16_t*)(CSP0BASE+offset*2); + *ptr1=data; +} + +u_int16_t bus_r16(u_int32_t offset){ + volatile u_int16_t *ptr1; + ptr1=(u_int16_t*)(CSP0BASE+offset*2); + return *ptr1; +} + +void bus_w(u_int32_t offset, u_int32_t data) { + volatile u_int32_t *ptr1; + ptr1=(u_int32_t*)(CSP0BASE+offset*2); + *ptr1=data; +} + +u_int32_t bus_r(u_int32_t offset) { + volatile u_int32_t *ptr1; + ptr1=(u_int32_t*)(CSP0BASE+offset*2); + return *ptr1; +} + +int64_t get64BitReg(int aLSB, int aMSB){ + int64_t v64; + u_int32_t vLSB,vMSB; + vLSB=bus_r(aLSB); + vMSB=bus_r(aMSB); + v64=vMSB; + v64=(v64<<32) | vLSB; + printf(" reg64(%x,%x) %x %x %llx\n", aLSB, aMSB, vLSB, vMSB, v64); + return v64; +} + +int64_t set64BitReg(int64_t value, int aLSB, int aMSB){ + int64_t v64; + u_int32_t vLSB,vMSB; + if (value!=-1) { + vLSB=value&(0xffffffff); + bus_w(aLSB,vLSB); + v64=value>> 32; + vMSB=v64&(0xffffffff); + bus_w(aMSB,vMSB); + } + return get64BitReg(aLSB, aMSB); + +} + +u_int32_t readRegister(u_int32_t offset) { + return bus_r(offset << 11); +} + +u_int32_t writeRegister(u_int32_t offset, u_int32_t data) { + bus_w(offset << 11, data); + return readRegister(offset); +} + + + +int mapCSP0(void) { + // if not mapped + if (!CSP0BASE) { + printf("Mapping memory\n"); +#ifdef VIRTUAL + CSP0BASE = malloc(MEM_SIZE); + printf("memory allocated\n"); +#else + int fd; + fd = open("/dev/mem", O_RDWR | O_SYNC, 0); + if (fd == -1) { + cprintf(BG_RED, "Error: Can't find /dev/mem\n"); + return FAIL; + } +#ifdef VERBOSE + printf("/dev/mem opened\n"); +#endif + CSP0BASE = (u_int32_t)mmap(0, MEM_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, CSP0); + if (CSP0BASE == (u_int32_t)MAP_FAILED) { + cprintf(BG_RED, "Error: Can't map memmory area\n"); + return FAIL; + } + printf("CSPOBASE mapped from %08x to %08x\n",CSP0BASE,CSP0BASE+MEM_SIZE); +#endif + printf("Status Register: %08x\n",bus_r(STATUS_REG)); + }else + printf("Memory already mapped before\n"); + return OK; +} + + +#endif //BLACKFIN_H diff --git a/slsDetectorSoftware/slsDetectorServer/programfpga.h b/slsDetectorSoftware/slsDetectorServer/programfpga.h new file mode 100755 index 000000000..db7b1cfb8 --- /dev/null +++ b/slsDetectorSoftware/slsDetectorServer/programfpga.h @@ -0,0 +1,178 @@ +#ifndef PROGRAM_FPGA_H +#define PROGRAM_FPGA_H + +#include "ansi.h" + +#include +#include // usleep +#include + + +/* global variables */ +#define CTRL_SRVR_INIT_TIME_US (300 * 1000) +int gpioDefined=0; +char mtdvalue[10]; + + + +/** + * Define GPIO pins if not defined + */ +void defineGPIOpins(){ + if (!gpioDefined) { + //define the gpio pins + system("echo 7 > /sys/class/gpio/export"); + system("echo 9 > /sys/class/gpio/export"); + //define their direction + system("echo in > /sys/class/gpio/gpio7/direction"); + system("echo out > /sys/class/gpio/gpio9/direction"); + printf("gpio pins defined\n"); + gpioDefined = 1; + }else printf("gpio pins already defined earlier\n"); +} + +/** + * Notify FPGA to not touch flash + */ +void FPGAdontTouchFlash(){ + //tell FPGA to not touch flash + system("echo 0 > /sys/class/gpio/gpio9/value"); + //usleep(100*1000); +} + + +/** + * Notify FPGA to program from flash + */ +void FPGATouchFlash(){ + //tell FPGA to touch flash to program itself + system("echo 1 > /sys/class/gpio/gpio9/value"); +} + +/** + * Reset FPGA + */ +void resetFPGA(){ + cprintf(BLUE,"\n*** Reseting FPGA ***\n"); + FPGAdontTouchFlash(); + FPGATouchFlash(); + usleep(CTRL_SRVR_INIT_TIME_US); +} + +/** + * Erasing flash + */ +void eraseFlash(){ +#ifdef VERY_VERBOSE + printf("\nErasing Flash\n"); +#endif + char command[255]; + sprintf(command,"flash_eraseall %s",mtdvalue); + system(command); + printf("flash erased\n"); +} + +/** + * Open the drive to copy program and + * notify FPGA not to touch the program + * @param filefp pointer to flash + * @return 0 for success, 1 for fail (cannot open file for writing program) + */ +int startWritingFPGAprogram(FILE** filefp){ +#ifdef VERY_VERBOSE + printf("\nStart Writing of FPGA program\n"); +#endif + + //getting the drive + char output[255]; + FILE* fp = popen("awk \'$4== \"\\\"bitfile(spi)\\\"\" {print $1}\' /proc/mtd", "r"); + fgets(output, sizeof(output), fp); + pclose(fp); + strcpy(mtdvalue,"/dev/"); + char* pch = strtok(output,":"); + if(pch == NULL){ + cprintf(RED,"Could not get mtd value\n"); + return FAIL; + } + strcat(mtdvalue,pch); + printf ("\nFlash drive found: %s\n",mtdvalue); + + FPGAdontTouchFlash(); + + //writing the program to flash + *filefp = fopen(mtdvalue, "w"); + if(*filefp == NULL){ + cprintf(RED,"Unable to open %s in write mode\n",mtdvalue); + return 1; + } + printf("flash ready for writing\n"); + + return 0; +} + +/** + * When done writing the program, close file pointer and + * notify FPGA to pick up the program from flash + * @param filefp pointer to flash + */ +void stopWritingFPGAprogram(FILE* filefp){ +#ifdef VERY_VERBOSE + printf("\nStopping of writing FPGA program\n"); +#endif + + int wait = 0; + if(filefp!= NULL){ + fclose(filefp); + wait = 1; + } + + //touch and program + FPGATouchFlash(); + + if(wait){ +#ifdef VERY_VERBOSE + printf("Waiting for FPGA to program from flash\n"); +#endif + //waiting for success or done + char output[255]; + int res=0; + while(res == 0){ + FILE* sysFile = popen("cat /sys/class/gpio/gpio7/value", "r"); + fgets(output, sizeof(output), sysFile); + pclose(sysFile); + sscanf(output,"%d",&res); +#ifdef VERY_VERBOSE + printf("gpi07 returned %d\n",res); +#endif + } + } + printf("FPGA has picked up the program from flash\n\n"); +} + + +/** + * Write FPGA Program to flash + * @param fpgasrc source program + * @param fsize size of program + * @param filefp pointer to flash + * @return 0 for success, 1 for fail (cannot write) + */ +int writeFPGAProgram(char* fpgasrc, size_t fsize, FILE* filefp){ +#ifdef VERY_VERBOSE + printf("\nWriting of FPGA Program\n"); + cprintf(BLUE,"address of fpgasrc:%p\n",(void *)fpgasrc); + cprintf(BLUE,"fsize:%d\n",fsize); + cprintf(BLUE,"pointer:%p\n",(void*)filefp); +#endif + + if(fwrite((void*)fpgasrc , sizeof(char) , fsize , filefp )!= fsize){ + cprintf(RED,"Could not write FPGA source to flash\n"); + return 1; + } +#ifdef VERY_VERBOSE + cprintf(BLUE, "program written to flash\n"); +#endif + return 0; +} + +#endif //PROGRAM_FPGA_H diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h index ba96a5fc6..e28c4b213 100644 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h @@ -52,19 +52,6 @@ void initStopServer(); #ifdef EIGERD void getModuleConfiguration(); #endif -#ifdef JUNGFRAUD -int mapCSP0(void); -void bus_w16(u_int32_t offset, u_int16_t data); -u_int16_t bus_r16(u_int32_t offset); -void bus_w(u_int32_t offset, u_int32_t data); -u_int32_t bus_r(u_int32_t offset); -int64_t set64BitReg(int64_t value, int aLSB, int aMSB); -int64_t get64BitReg(int aLSB, int aMSB); -void defineGPIOpins(); -void resetFPGA(); -void FPGAdontTouchFlash(); -void FPGATouchFlash(); -#endif // set up detector void allocateDetectorStructureMemory(); @@ -73,8 +60,8 @@ void setupDetector(); // advanced read/write reg #ifndef EIGERD -u_int32_t writeRegister(u_int32_t offset, u_int32_t data); -u_int32_t readRegister(u_int32_t offset); +extern u_int32_t writeRegister(u_int32_t offset, u_int32_t data); +extern u_int32_t readRegister(u_int32_t offset); #endif @@ -182,30 +169,30 @@ int calibratePedestal(int frames); void resetPLL(); u_int32_t setPllReconfigReg(u_int32_t reg, u_int32_t val); void configurePll(); -void eraseFlash(); -int startWritingFPGAprogram(FILE** filefp); -int stopWritingFPGAprogram(FILE* filefp); -int writeFPGAProgram(char* fpgasrc, size_t fsize, FILE* filefp); +extern void eraseFlash(); +extern int startWritingFPGAprogram(FILE** filefp); +extern void stopWritingFPGAprogram(FILE* filefp); +extern int writeFPGAProgram(char* fpgasrc, size_t fsize, FILE* filefp); // eiger specific - iodelay, 10g, pulse, rate, temp, activate, delay nw parameter #elif EIGERD -int setIODelay(int val, int imod); -int enableTenGigabitEthernet(int val); -int setCounterBit(int val); -int pulsePixel(int n, int x, int y); -int pulsePixelNMove(int n, int x, int y); -int pulseChip(int n); -int64_t setRateCorrection(int64_t custom_tau_in_nsec); -int getRateCorrectionEnable(); -int getDefaultSettingsTau_in_nsec(); -void setDefaultSettingsTau_in_nsec(int t); -int64_t getCurrentTau(); -void setExternalGating(int enable[]); -int setAllTrimbits(int val); -int getAllTrimbits(); -int getBebFPGATemp(); -int activate(int enable); -int setNetworkParameter(enum NETWORKINDEX mode, int value); +int setIODelay(int val, int imod); +int enableTenGigabitEthernet(int val); +int setCounterBit(int val); +int pulsePixel(int n, int x, int y); +int pulsePixelNMove(int n, int x, int y); +int pulseChip(int n); +int64_t setRateCorrection(int64_t custom_tau_in_nsec); +int getRateCorrectionEnable(); +int getDefaultSettingsTau_in_nsec(); +void setDefaultSettingsTau_in_nsec(int t); +int64_t getCurrentTau(); +void setExternalGating(int enable[]); +int setAllTrimbits(int val); +int getAllTrimbits(); +int getBebFPGATemp(); +int activate(int enable); +int setNetworkParameter(enum NETWORKINDEX mode, int value); #endif @@ -213,39 +200,39 @@ int setNetworkParameter(enum NETWORKINDEX mode, int value); // aquisition #if defined(EIGERD) || defined(GOTTHARD) -int prepareAcquisition(); +int prepareAcquisition(); #endif -int startStateMachine(); -int stopStateMachine(); +int startStateMachine(); +int stopStateMachine(); #ifndef JUNGFRAUD -int startReadOut(); +int startReadOut(); #endif -enum runStatus getRunStatus(); -void readFrame(int *ret, char *mess); +enum runStatus getRunStatus(); +void readFrame(int *ret, char *mess); #ifdef JUNGFRAUD -u_int32_t runBusy(void); +u_int32_t runBusy(void); #endif //common -int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod); -int calculateDataBytes(); -int getTotalNumberOfChannels(); -int getTotalNumberOfChips(); -int getTotalNumberOfModules(); -int getNumberOfChannelsPerModule(); -int getNumberOfChipsPerModule(); -int getNumberOfDACsPerModule(); -int getNumberOfADCsPerModule(); +int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod); +int calculateDataBytes(); +int getTotalNumberOfChannels(); +int getTotalNumberOfChips(); +int getTotalNumberOfModules(); +int getNumberOfChannelsPerModule(); +int getNumberOfChipsPerModule(); +int getNumberOfDACsPerModule(); +int getNumberOfADCsPerModule(); #ifdef EIGERD -int getNumberOfGainsPerModule(); -int getNumberOfOffsetsPerModule(); +int getNumberOfGainsPerModule(); +int getNumberOfOffsetsPerModule(); #endif -int getNumberOfChannelsPerChip(); +int getNumberOfChannelsPerChip(); // sync -enum masterFlags setMaster(enum masterFlags arg); -enum synchronizationMode setSynchronization(enum synchronizationMode arg); +enum masterFlags setMaster(enum masterFlags arg); +enum synchronizationMode setSynchronization(enum synchronizationMode arg); diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index 8fd8934b1..2b1894494 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -4603,11 +4603,7 @@ int program_fpga(int file_des) { printf("\n"); //closing file pointer to flash and informing FPGA - if(stopWritingFPGAprogram(fp) == FAIL){ - ret=FAIL; - sprintf(mess,"Could not write to flash. Error at end.\n"); - cprintf(RED,"%s",mess); - } + stopWritingFPGAprogram(fp); //free resources if(fpgasrc != NULL)