mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-01-16 11:13:44 +01:00
somewhere in between
This commit is contained in:
@@ -18,7 +18,7 @@ Here are the definitions, but the actual implementation should be done for each
|
||||
****************************************************/
|
||||
|
||||
|
||||
//basic tests
|
||||
// basic tests
|
||||
void checkFirmwareCompatibility();
|
||||
#ifdef JUNGFRAUD
|
||||
int checkType();
|
||||
@@ -29,46 +29,144 @@ int moduleTest( enum digitalTestMode arg, int imod);
|
||||
int detectorTest( enum digitalTestMode arg);
|
||||
|
||||
|
||||
//Ids
|
||||
// Ids
|
||||
int64_t getDetectorId(enum idMode arg);
|
||||
u_int64_t getFirmwareVersion();
|
||||
#ifdef MYTHEND
|
||||
int64_t getModuleId(enum idMode arg, int imod);
|
||||
int getDetectorNumber();
|
||||
#elif JUNGFRAUD
|
||||
u_int16_t getHardwareVersionNumber();
|
||||
u_int16_t getHardwareSerialNumber();
|
||||
#endif
|
||||
u_int32_t getDetectorNumber();
|
||||
u_int64_t getDetectorMAC();
|
||||
int getDetectorIP();
|
||||
u_int32_t getDetectorIP();
|
||||
|
||||
|
||||
//initialization
|
||||
int initDetector();
|
||||
// initialization
|
||||
void initControlServer();
|
||||
void initStopServer();
|
||||
#ifdef EIGERD
|
||||
int initDetectorStop();
|
||||
void getModuleConfiguration();
|
||||
#endif
|
||||
|
||||
#ifdef JUNGFRAUD
|
||||
int mapCSP0(void);
|
||||
u_int16_t bus_w16(u_int32_t offset, u_int16_t data);
|
||||
void bus_w16(u_int32_t offset, u_int16_t data);
|
||||
u_int16_t bus_r16(u_int32_t offset);
|
||||
u_int32_t bus_w(u_int32_t offset, u_int32_t data);
|
||||
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();
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
||||
int setNMod(int nm, enum dimension dim);
|
||||
int getNModBoard(enum dimension arg);
|
||||
|
||||
// firmware functions (resets)
|
||||
#ifdef JUNGFRAUD
|
||||
int powerChip (int on);
|
||||
void cleanFifos();
|
||||
void resetCore();
|
||||
void resetPeripheral();
|
||||
int adcPhase(int st);
|
||||
int getPhase();
|
||||
#endif
|
||||
|
||||
// parameters - nmod, dr, roi
|
||||
int setNMod(int nm, enum dimension dim); // mythen specific, but for detector compatibility as a get
|
||||
int getNModBoard(enum dimension arg); // mythen specific, but for detector compatibility as a get
|
||||
int setDynamicRange(int dr);
|
||||
#ifdef MYTHEND
|
||||
int setROI(int n, ROI arg[], int *retvalsize, int *ret);
|
||||
#endif
|
||||
|
||||
// parameters - readout
|
||||
int setSpeed(enum speedVariable arg, int val);
|
||||
#if defined(EIGERD) || defined(MYTHEND)
|
||||
enum readOutFlags setReadOutFlags(enum readOutFlags val);
|
||||
int executeTrimming(enum trimMode mode, int par1, int par2, int imod);
|
||||
#endif
|
||||
|
||||
// parameters - timer
|
||||
int64_t setTimer(enum timerIndex ind, int64_t val);
|
||||
int64_t getTimeLeft(enum timerIndex ind);
|
||||
|
||||
// parameters - channel, chip, module, settings
|
||||
#ifdef MYTHEND
|
||||
int setChannel(sls_detector_channel myChan);
|
||||
int getChannel(sls_detector_channel *myChan);
|
||||
int setChip(sls_detector_chip myChip);
|
||||
int getChip(sls_detector_chip *myChip);
|
||||
#endif
|
||||
#ifdef EIGERD
|
||||
int setModule(sls_detector_module myMod, int delay);
|
||||
#else
|
||||
int setModule(sls_detector_module myMod);
|
||||
#endif
|
||||
int getModule(sls_detector_module *myMod);
|
||||
enum detectorSettings setSettings(enum detectorSettings sett, int imod);
|
||||
enum detectorSettings getSettings();
|
||||
|
||||
|
||||
#if defined(MYTHEND) || defined(EIGERD)
|
||||
// parameters - threshold
|
||||
int getThresholdEnergy(int imod);
|
||||
int setThresholdEnergy(int ev, int imod);
|
||||
#endif
|
||||
|
||||
// parameters - dac, adc, hv
|
||||
void setDAC(enum detDacIndex ind, int val, int imod, int mV, int retval[]);
|
||||
int getADC(enum detAdcIndex ind, int imod);
|
||||
|
||||
|
||||
#if defined(EIGERD) || defined(GOTTHARD)
|
||||
int setHighVoltage(int val, int imod);
|
||||
#ifndef MYTHEND
|
||||
int setHighVoltage(int val);
|
||||
#endif
|
||||
|
||||
#ifdef EIGERD
|
||||
// parameters - timing, extsig
|
||||
#ifdef MYTHEND
|
||||
enum externalSignalFlag getExtSignal(int signalindex);
|
||||
enum externalSignalFlag setExtSignal(int signalindex, enum externalSignalFlag flag);
|
||||
#endif
|
||||
enum externalCommunicationMode setTiming( enum externalCommunicationMode arg);
|
||||
|
||||
// configure mac
|
||||
#ifdef JUNGFRAUD
|
||||
long int calcChecksum(int sourceip, int destip);
|
||||
#endif
|
||||
#ifndef MYTHEND
|
||||
int configureMAC(uint32_t destip, uint64_t destmac, uint64_t sourcemac, uint32_t sourceip, uint32_t udpport, uint32_t udpport2, int ival);
|
||||
#endif
|
||||
|
||||
|
||||
// very detector specific
|
||||
#ifdef GOTTHARDD
|
||||
// gotthard specific - image, pedestal
|
||||
int loadImage(enum imageType index, char *imageVals);
|
||||
int readCounterBlock(int startACQ, char *counterVals);
|
||||
int resetCounterBlock(int startACQ);
|
||||
int calibratePedestal(int frames);
|
||||
|
||||
#elif JUNGFRAUD
|
||||
// jungfrau specific - flashing fpga
|
||||
void eraseFlash();
|
||||
int startWritingFPGAprogram(FILE** filefp);
|
||||
int stopWritingFPGAprogram(FILE* filefp);
|
||||
int writeFPGAProgram(char* fpgasrc, size_t fsize, FILE* filefp);
|
||||
|
||||
#elif EIGERD
|
||||
//eiger specific - iodelay, 10g, pulse, rate, temp, activate, delay nw parameter
|
||||
int setIODelay(int val, int imod);
|
||||
int enableTenGigabitEthernet(int val);
|
||||
int setCounterBit(int val);
|
||||
@@ -80,36 +178,21 @@ int getRateCorrectionEnable();
|
||||
int getDefaultSettingsTau_in_nsec();
|
||||
void setDefaultSettingsTau_in_nsec(int t);
|
||||
int64_t getCurrentTau();
|
||||
#endif
|
||||
|
||||
#if defined(MYTHEND) || defined(GOTTHARDD)
|
||||
u_int32_t writeRegister(u_int32_t offset, u_int32_t data);
|
||||
u_int32_t readRegister(u_int32_t offset);
|
||||
#endif
|
||||
|
||||
#ifdef MYTHEND
|
||||
int setChannel(sls_detector_channel myChan);
|
||||
int getChannel(sls_detector_channel *myChan);
|
||||
int setChip(sls_detector_chip myChip);
|
||||
int getChip(sls_detector_chip *myChip);
|
||||
void setExternalGating(int enable[]);
|
||||
int setAllTrimbits(int val);
|
||||
int getAllTrimbits();
|
||||
int getBebFPGATemp();
|
||||
int activate(int enable);
|
||||
int setNetworkParameter(enum detNetworkParameter mode, int value);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef EIGERD
|
||||
int setModule(sls_detector_module myMod, int delay);
|
||||
#else
|
||||
int setModule(sls_detector_module myMod);
|
||||
|
||||
|
||||
// aquisition
|
||||
#ifdef defined(EIGERD) || defined(GOTTHARD)
|
||||
int startReceiver(int d);
|
||||
#endif
|
||||
|
||||
int getModule(sls_detector_module *myMod);
|
||||
enum detectorSettings setSettings(enum detectorSettings sett, int imod);
|
||||
enum detectorSettings getSettings();
|
||||
|
||||
#if defined(MYTHEND) || defined(EIGERD)
|
||||
int getThresholdEnergy(int imod);
|
||||
int setThresholdEnergy(int ev, int imod);
|
||||
#endif
|
||||
|
||||
int startStateMachine();
|
||||
int stopStateMachine();
|
||||
int startReadOut();
|
||||
@@ -117,38 +200,8 @@ enum runStatus getRunStatus();
|
||||
void readFrame(int *ret, char *mess);
|
||||
|
||||
|
||||
int64_t setTimer(enum timerIndex ind, int64_t val);
|
||||
int64_t getTimeLeft(enum timerIndex ind);
|
||||
|
||||
|
||||
int setDynamicRange(int dr);
|
||||
int setROI(int n, ROI arg[], int *retvalsize, int *ret);
|
||||
|
||||
|
||||
#if defined(EIGERD) || defined(MYTHEND)
|
||||
enum readOutFlags setReadOutFlags(enum readOutFlags val);
|
||||
int setSpeed(enum speedVariable arg, int val);
|
||||
int executeTrimming(enum trimMode mode, int par1, int par2, int imod);
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef MYTHEND
|
||||
int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int udpport, int udpport2, int ival);
|
||||
#endif
|
||||
|
||||
#ifdef GOTTHARDD
|
||||
int loadImage(enum imageType index, char *imageVals);
|
||||
int readCounterBlock(int startACQ, char *counterVals);
|
||||
int resetCounterBlock(int startACQ);
|
||||
int startReceiver(int d);
|
||||
int calibratePedestal(int frames);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
//common
|
||||
int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod);
|
||||
|
||||
int calculateDataBytes();
|
||||
int getTotalNumberOfChannels();
|
||||
int getTotalNumberOfChips();
|
||||
@@ -163,25 +216,11 @@ int getNumberOfGainsPerModule();
|
||||
int getNumberOfOffsetsPerModule();
|
||||
#endif
|
||||
|
||||
enum externalSignalFlag getExtSignal(int signalindex);
|
||||
enum externalSignalFlag setExtSignal(int signalindex, enum externalSignalFlag flag);
|
||||
enum externalCommunicationMode setTiming( enum externalCommunicationMode arg);
|
||||
// sync
|
||||
enum masterFlags setMaster(enum masterFlags arg);
|
||||
enum synchronizationMode setSynchronization(enum synchronizationMode arg);
|
||||
|
||||
#ifdef EIGERD
|
||||
int startReceiver(int d);
|
||||
void setExternalGating(int enable[]);
|
||||
int setAllTrimbits(int val);
|
||||
int getAllTrimbits();
|
||||
int getBebFPGATemp();
|
||||
int activate(int enable);
|
||||
int setNetworkParameter(enum detNetworkParameter mode, int value);
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -48,14 +48,13 @@ void basictests() {
|
||||
}
|
||||
|
||||
|
||||
int init_detector(int b) {
|
||||
int init_detector(int controlserver) {
|
||||
#ifdef VIRTUAL
|
||||
printf("This is a VIRTUAL detector\n");
|
||||
#endif
|
||||
|
||||
#ifdef SLS_DETECTOR_FUNCTION_LIST
|
||||
if(b) initDetector();
|
||||
else initDetectorStop();
|
||||
if (controlserver) initControlServer();
|
||||
else initStopServer();
|
||||
#endif
|
||||
strcpy(mess,"dummy message");
|
||||
strcpy(lastClientIP,"none");
|
||||
@@ -885,7 +884,7 @@ int get_id(int file_des) {
|
||||
#endif
|
||||
|
||||
switch (arg) {
|
||||
#ifndef EIGERD
|
||||
#ifdef MYTHEND
|
||||
case MODULE_SERIAL_NUMBER:
|
||||
case MODULE_FIRMWARE_VERSION:
|
||||
n = receiveData(file_des,&imod,sizeof(imod),INT32);
|
||||
@@ -1206,7 +1205,7 @@ int set_dac(int file_des) {
|
||||
sprintf(mess,"Detector locked by %s\n",lastClientIP);
|
||||
} else{
|
||||
if((ind == HV_POT) ||(ind == HV_NEW))
|
||||
retval[0] = setHighVoltage(val,imod);
|
||||
retval[0] = setHighVoltage(val);/*imod removed*/
|
||||
else if(ind == IO_DELAY)
|
||||
retval[0] = setIODelay(val,imod);
|
||||
else{
|
||||
@@ -1418,7 +1417,7 @@ int write_register(int file_des) {
|
||||
addr=arg[0];
|
||||
val=arg[1];
|
||||
|
||||
#if defined(MYTHEND) || defined(GOTTHARDD)
|
||||
#ifndef EIGERD
|
||||
#ifdef VERBOSE
|
||||
printf("writing to register 0x%x data 0x%x\n", addr, val);
|
||||
#endif
|
||||
@@ -1480,7 +1479,7 @@ int read_register(int file_des) {
|
||||
}
|
||||
addr=arg;
|
||||
|
||||
#if defined(MYTHEND) || defined(GOTTHARDD)
|
||||
#ifndef EIGERD
|
||||
#ifdef VERBOSE
|
||||
printf("reading register 0x%x\n", addr);
|
||||
#endif
|
||||
@@ -1910,15 +1909,25 @@ int set_module(int file_des) {
|
||||
printf("eV:%d\n",myEV);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef EIGERD
|
||||
|
||||
#if defined(JUNGFRAUD) || defined(EIGERD)
|
||||
switch(myModule.reg){
|
||||
case GET_SETTINGS:
|
||||
case UNINITIALIZED:
|
||||
#ifdef EIGERD
|
||||
case STANDARD:
|
||||
case HIGHGAIN:
|
||||
case LOWGAIN:
|
||||
case VERYHIGHGAIN:
|
||||
case VERYLOWGAIN:
|
||||
case UNINITIALIZED:
|
||||
#elif JUNGFRAUD
|
||||
case DYNAMICGAIN:
|
||||
case DYNAMICHG0:
|
||||
case FIXGAIN1:
|
||||
case FIXGAIN2:
|
||||
case FORCESWITCHG1:
|
||||
case FORCESWITCHG2:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
sprintf(mess,"This setting %d does not exist for this detector\n",myModule.reg);
|
||||
@@ -1927,7 +1936,6 @@ int set_module(int file_des) {
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (ret==OK) {
|
||||
if (differentClients==1 && lockStatus==1) {
|
||||
ret=FAIL;
|
||||
@@ -3024,7 +3032,7 @@ int set_speed(int file_des) {
|
||||
case TOT_DUTY_CYCLE:
|
||||
retval=setSpeed(arg, val);
|
||||
break;
|
||||
#elif EIGERD
|
||||
#elif defined(EIGERD) || defined(JUNGFRAU)
|
||||
case CLOCK_DIVIDER:
|
||||
retval=setSpeed(arg, val);
|
||||
break;
|
||||
@@ -3175,12 +3183,12 @@ int configure_mac(int file_des) {
|
||||
|
||||
#ifndef MYTHEND
|
||||
int imod=0;//should be in future sent from client as -1, arg[2]
|
||||
int ipad;
|
||||
long long int imacadd;
|
||||
long long int idetectormacadd;
|
||||
int udpport;
|
||||
int udpport2;
|
||||
int detipad;
|
||||
uint32_t ipad;
|
||||
uint64_t imacadd;
|
||||
uint64_t idetectormacadd;
|
||||
uint32_t udpport;
|
||||
uint32_t udpport2;
|
||||
uint32_t detipad;
|
||||
#endif
|
||||
|
||||
sprintf(mess,"Can't configure MAC\n");
|
||||
|
||||
Reference in New Issue
Block a user