mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-22 17:47:59 +02:00
eiger server bug fix: split quad and interruptframe into set and get to catch fails in set and when quad and interrupt subframe used together(different register values for tl and tr)
This commit is contained in:
@ -73,8 +73,8 @@ int setDefaultDacs();
|
||||
extern u_int32_t writeRegister(u_int32_t offset, u_int32_t data); // blackfin.h
|
||||
extern u_int32_t readRegister(u_int32_t offset); // blackfin.h
|
||||
#else
|
||||
uint32_t writeRegister(uint32_t offset, uint32_t data);
|
||||
uint32_t readRegister(uint32_t offset);
|
||||
int writeRegister(uint32_t offset, uint32_t data);
|
||||
int readRegister(uint32_t offset, uint32_t* retval);
|
||||
#endif
|
||||
|
||||
|
||||
@ -196,7 +196,9 @@ int setDetectorPosition(int pos[]);
|
||||
#endif
|
||||
#ifdef EIGERD
|
||||
int setQuad(int val);
|
||||
int getQuad();
|
||||
int setInterruptSubframe(int val);
|
||||
int getInterruptSubframe();
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1458,8 +1458,22 @@ int write_register(int file_des) {
|
||||
#ifdef VERBOSE
|
||||
printf("writing to register 0x%x data 0x%x\n", addr, val);
|
||||
#endif
|
||||
#ifdef EIGERD
|
||||
if(writeRegister(addr, val) == FAIL) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,"Could not write to register 0x%x.\n", addr);
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
} else {
|
||||
if(readRegister(addr, &retval) == FAIL) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,"Could not read register 0x%x.\n", addr);
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
}
|
||||
}
|
||||
#else
|
||||
retval=writeRegister(addr,val);
|
||||
if (retval!=val) {
|
||||
#endif
|
||||
if (ret == OK && retval!=val) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,"Writing to register 0x%x failed: wrote 0x%x but read 0x%x\n", addr, val, retval);
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
@ -1509,8 +1523,16 @@ int read_register(int file_des) {
|
||||
printf("reading register 0x%x\n", addr);
|
||||
#endif
|
||||
#ifdef SLS_DETECTOR_FUNCTION_LIST
|
||||
#ifdef EIGERD
|
||||
if(readRegister(addr, &retval) == FAIL) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,"Could not read register 0x%x.\n", addr);
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
}
|
||||
#else
|
||||
retval=readRegister(addr);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef VERBOSE
|
||||
printf("Returned value 0x%x\n", retval);
|
||||
#endif
|
||||
@ -5962,11 +5984,16 @@ int set_quad(int file_des) {
|
||||
#ifdef VERBOSE
|
||||
printf("Setting Quad :%d \n",arg);
|
||||
#endif
|
||||
retval=setQuad(arg);
|
||||
if((arg != -1) && (retval != arg)) {
|
||||
if(arg != -1 && setQuad(arg) == FAIL) {
|
||||
ret=FAIL;
|
||||
strcpy(mess, "setting quad failed\n");
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
}
|
||||
retval = getQuad();
|
||||
if(ret == OK && (arg != -1) && (retval != arg)) {
|
||||
ret=FAIL;
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (ret==OK && differentClients)
|
||||
@ -6021,12 +6048,18 @@ int set_interrupt_subframe(int file_des) {
|
||||
#ifdef VERBOSE
|
||||
printf("Setting Interrupt subframe :%d \n",arg);
|
||||
#endif
|
||||
retval=setInterruptSubframe(arg);
|
||||
if (arg != -1 && setInterruptSubframe(arg) == FAIL) {
|
||||
ret=FAIL;
|
||||
strcpy(mess, "setting interrupt subframe failed\n");
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
}
|
||||
retval = getInterruptSubframe();
|
||||
#ifdef VERBOSE
|
||||
printf("retval Interrupt subframe :%d \n",retval);
|
||||
#endif
|
||||
if((arg != -1) && (retval != arg)) {
|
||||
if(ret == OK && (arg != -1) && (retval != arg)) {
|
||||
ret=FAIL;
|
||||
sprintf(mess, "setting interrupt subframe failed. Set %d, got %d\n", arg, retval);
|
||||
cprintf(RED, "Warning: %s", mess);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user