mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-25 15:50:03 +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:
parent
d981e1b8e5
commit
e07e2f2da0
@ -1213,11 +1213,14 @@ void Beb_SetDetectorNumber(uint32_t detid) {
|
||||
}
|
||||
|
||||
int Beb_SetQuad(int val) {
|
||||
if (val >= 0) {
|
||||
printf("Setting Quad to %d in Beb\n", val);
|
||||
Beb_quadEnable = (val == 0 ? 0 : 1);
|
||||
Beb_SetDetectorPosition(Beb_positions);
|
||||
}
|
||||
if (val < 0)
|
||||
return OK;
|
||||
printf("Setting Quad to %d in Beb\n", val);
|
||||
Beb_quadEnable = (val == 0 ? 0 : 1);
|
||||
return Beb_SetDetectorPosition(Beb_positions);
|
||||
}
|
||||
|
||||
int Beb_GetQuad() {
|
||||
return Beb_quadEnable;
|
||||
}
|
||||
|
||||
|
@ -92,6 +92,7 @@ struct BebInfo{
|
||||
|
||||
void Beb_SetDetectorNumber(uint32_t detid);
|
||||
int Beb_SetQuad(int val);
|
||||
int Beb_GetQuad();
|
||||
int Beb_SetDetectorPosition(int pos[]);
|
||||
|
||||
uint16_t Beb_swap_uint16( uint16_t val);
|
||||
|
@ -2009,165 +2009,172 @@ int Feb_Control_SoftwareTrigger() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Feb_Control_InterruptSubframe(int val) {
|
||||
if (val >= 0) {
|
||||
printf("Setting Interrupt Subframe to %d\n", val);
|
||||
}
|
||||
int Feb_Control_SetInterruptSubframe(int val) {
|
||||
printf("Setting Interrupt Subframe to %d\n", val);
|
||||
|
||||
// they need to be written separately because the left and right registers have different values for this particular register
|
||||
uint32_t offset = DAQ_REG_HRDWRE;
|
||||
int top = Module_TopAddressIsValid(&modules[1]) ? 1 : 0;
|
||||
uint32_t lvalue = 0;
|
||||
uint32_t rvalue = 0;
|
||||
// right
|
||||
unsigned int addr = top ? Module_GetTopRightAddress (&modules[1]) : Module_GetBottomRightAddress (&modules[1]);
|
||||
if (val >= 0) {
|
||||
if(!Feb_Interface_ReadRegister(addr, offset, &rvalue)) {
|
||||
cprintf(RED,"Could not read %s right interrupt subframe\n", top ? "top" : "bottom");
|
||||
return -1;
|
||||
uint32_t regVal = 0;
|
||||
char side[2][10] = {"right", "left"};
|
||||
char isTop[10]; strcpy(isTop, Module_TopAddressIsValid(&modules[1]) ? "top" : "bottom");
|
||||
unsigned int addr[2];
|
||||
addr[0] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopRightAddress (&modules[1]) : Module_GetBottomRightAddress (&modules[1]);
|
||||
addr[1] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopLeftAddress (&modules[1]) : Module_GetBottomLeftAddress (&modules[1]);
|
||||
|
||||
int iloop = 0;
|
||||
for(iloop = 0; iloop < 2; ++iloop) {
|
||||
// get previous value to keep it
|
||||
if(!Feb_Interface_ReadRegister(addr[iloop], offset, ®Val)) {
|
||||
cprintf(RED, "Could not read %s %s interrupt subframe\n", isTop, side[iloop]);
|
||||
return 0;
|
||||
}
|
||||
uint32_t data = ((val == 0) ? (rvalue &~ DAQ_REG_HRDWRE_INTRRPT_SF_MSK) : (rvalue | DAQ_REG_HRDWRE_INTRRPT_SF_MSK));
|
||||
if(!Feb_Interface_WriteRegister(addr, offset, data, 0, 0)) {
|
||||
cprintf(RED,"Could not write 0x%x to %s right interrupt subframe addr 0x%x\n", data, top ? "top" : "bottom", offset);
|
||||
return -1;
|
||||
uint32_t data = ((val == 0) ? (regVal &~ DAQ_REG_HRDWRE_INTRRPT_SF_MSK) : (regVal | DAQ_REG_HRDWRE_INTRRPT_SF_MSK));
|
||||
if(!Feb_Interface_WriteRegister(addr[iloop], offset, data, 0, 0)) {
|
||||
cprintf(RED, "Could not write 0x%x to %s %s interrupt subframe addr 0x%x\n", data, isTop, side[iloop], offset);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if(!Feb_Interface_ReadRegister(addr, offset, &rvalue)) {
|
||||
cprintf(RED,"Could not read back %s right interrupt subframe\n", top ? "top" : "bottom");
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Feb_Control_GetInterruptSubframe() {
|
||||
// they need to be written separately because the left and right registers have different values for this particular register
|
||||
uint32_t offset = DAQ_REG_HRDWRE;
|
||||
uint32_t regVal = 0;
|
||||
|
||||
char side[2][10] = {"right", "left"};
|
||||
char isTop[10]; strcpy(isTop, Module_TopAddressIsValid(&modules[1]) ? "top" : "bottom");
|
||||
unsigned int addr[2];
|
||||
addr[0] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopRightAddress (&modules[1]) : Module_GetBottomRightAddress (&modules[1]);
|
||||
addr[1] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopLeftAddress (&modules[1]) : Module_GetBottomLeftAddress (&modules[1]);
|
||||
uint32_t value[2] = {0, 0};
|
||||
|
||||
int iloop = 0;
|
||||
for(iloop = 0; iloop < 2; ++iloop) {
|
||||
if(!Feb_Interface_ReadRegister(addr[iloop], offset, ®Val)) {
|
||||
cprintf(RED, "Could not read back %s %s interrupt subframe\n", isTop, side[iloop]);
|
||||
return -1;
|
||||
}
|
||||
value[iloop] = (regVal & DAQ_REG_HRDWRE_INTRRPT_SF_MSK) >> DAQ_REG_HRDWRE_INTRRPT_SF_OFST;
|
||||
}
|
||||
|
||||
// left
|
||||
addr = top ? Module_GetTopLeftAddress (&modules[1]) : Module_GetBottomLeftAddress (&modules[1]);
|
||||
if (val >= 0) {
|
||||
if(!Feb_Interface_ReadRegister(addr, offset, &lvalue)) {
|
||||
cprintf(RED,"Could not read %s left interrupt subframe\n", top ? "top" : "bottom");
|
||||
return -1;
|
||||
}
|
||||
uint32_t data = ((val == 0) ? (lvalue &~ DAQ_REG_HRDWRE_INTRRPT_SF_MSK) : (lvalue | DAQ_REG_HRDWRE_INTRRPT_SF_MSK));
|
||||
if(!Feb_Interface_WriteRegister(addr, offset, data, 0, 0)) {
|
||||
cprintf(RED,"Could not write 0x%x to %s left interrupt subframe addr 0x%x\n", data, top ? "top" : "bottom", offset);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if(!Feb_Interface_ReadRegister(addr, offset, &lvalue)) {
|
||||
cprintf(RED,"Could not read back %s left interrupt subframe\n", top ? "top" : "bottom");
|
||||
return -1;
|
||||
}
|
||||
// inconsistent
|
||||
if (lvalue != rvalue) {
|
||||
cprintf(RED, "Inconsistent values of interrupt subframe betweeen left and right\n");
|
||||
if (value[0] != value[1]) {
|
||||
cprintf(RED, "Inconsistent values of interrupt subframe betweeen left %d and right %d\n", value[0], value[1]);
|
||||
return -1;
|
||||
}
|
||||
return (lvalue & DAQ_REG_HRDWRE_INTRRPT_SF_MSK) >> DAQ_REG_HRDWRE_INTRRPT_SF_OFST;
|
||||
return value[0];
|
||||
}
|
||||
|
||||
int Feb_Control_SetQuad(int val) {
|
||||
// no bottom for quad
|
||||
if (!Module_TopAddressIsValid(&modules[1])) {
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
uint32_t offset = DAQ_REG_HRDWRE;
|
||||
if (val >= 0) {
|
||||
printf("Setting Quad to %d in Feb\n", val);
|
||||
unsigned int addr = Module_GetTopRightAddress (&modules[1]);
|
||||
uint32_t rvalue = 0;
|
||||
if(!Feb_Interface_ReadRegister(addr, offset, &rvalue)) {
|
||||
cprintf(RED,"Could not read top right quad reg\n");
|
||||
return -1;
|
||||
}
|
||||
uint32_t data = ((val == 0) ? (rvalue &~ DAQ_REG_HRDWRE_OW_MSK) : ((rvalue | DAQ_REG_HRDWRE_OW_MSK) &~ DAQ_REG_HRDWRE_TOP_MSK));
|
||||
if(!Feb_Interface_WriteRegister(addr, offset, data, 0, 0)) {
|
||||
cprintf(RED,"Could not write 0x%x to top right quad addr 0x%x\n", data, offset);
|
||||
return -1;
|
||||
}
|
||||
printf("Setting Quad to %d in Feb\n", val);
|
||||
unsigned int addr = Module_GetTopRightAddress (&modules[1]);
|
||||
uint32_t regVal = 0;
|
||||
if(!Feb_Interface_ReadRegister(addr, offset, ®Val)) {
|
||||
cprintf(RED, "Could not read top right quad reg\n");
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
uint32_t data = ((val == 0) ? (regVal &~ DAQ_REG_HRDWRE_OW_MSK) : ((regVal | DAQ_REG_HRDWRE_OW_MSK) &~ DAQ_REG_HRDWRE_TOP_MSK));
|
||||
if(!Feb_Interface_WriteRegister(addr, offset, data, 0, 0)) {
|
||||
cprintf(RED, "Could not write 0x%x to top right quad addr 0x%x\n", data, offset);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
uint32_t Feb_Control_WriteRegister(uint32_t offset, uint32_t data) {
|
||||
int Feb_Control_WriteRegister(uint32_t offset, uint32_t data) {
|
||||
uint32_t actualOffset = offset;
|
||||
int left = 0;
|
||||
int right = 0;
|
||||
char side[2][10] = {"right", "left"};
|
||||
char isTop[10]; strcpy(isTop, Module_TopAddressIsValid(&modules[1]) ? "top" : "bottom");
|
||||
unsigned int addr[2];
|
||||
addr[0] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopRightAddress (&modules[1]) : Module_GetBottomRightAddress (&modules[1]);
|
||||
addr[1] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopLeftAddress (&modules[1]) : Module_GetBottomLeftAddress (&modules[1]);
|
||||
|
||||
int run[2] = {0, 0};
|
||||
// both registers
|
||||
if (offset < 0x100) {
|
||||
left = 1;
|
||||
right = 1;
|
||||
run[0] = 1;
|
||||
run[1] = 1;
|
||||
}
|
||||
// right registers only
|
||||
else if (offset >= 0x200) {
|
||||
right = 1;
|
||||
run[0] = 1;
|
||||
actualOffset = offset - 0x200;
|
||||
} else {
|
||||
left = 1;
|
||||
}
|
||||
// left registers only
|
||||
else {
|
||||
run[1] = 1;
|
||||
actualOffset = offset - 0x100;
|
||||
}
|
||||
|
||||
int top = Module_TopAddressIsValid(&modules[1]) ? 1 : 0;
|
||||
unsigned int addr = top ? Module_GetTopRightAddress (&modules[1]) : Module_GetBottomRightAddress (&modules[1]);
|
||||
if (right) {
|
||||
if(!Feb_Interface_WriteRegister(addr,actualOffset, data,0, 0)) {
|
||||
cprintf(RED,"Could not write 0x%x to %s right addr 0x%x\n", data, top ? "top" : "bottom", actualOffset);
|
||||
}
|
||||
}
|
||||
addr = top ? Module_GetTopLeftAddress (&modules[1]) : Module_GetBottomLeftAddress (&modules[1]);
|
||||
if (left) {
|
||||
if(!Feb_Interface_WriteRegister(addr,actualOffset, data,0, 0)) {
|
||||
cprintf(RED,"Could not write 0x%x to %s left addr 0x%x\n", data, top ? "top" : "bottom", actualOffset);
|
||||
|
||||
int iloop = 0;
|
||||
for(iloop = 0; iloop < 2; ++iloop) {
|
||||
if(run[iloop]) {
|
||||
printf("Writing 0x%x to %s %s 0x%x\n", data, isTop, side[iloop], actualOffset);
|
||||
if(!Feb_Interface_WriteRegister(addr[iloop],actualOffset, data, 0, 0)) {
|
||||
cprintf(RED, "Could not write 0x%x to %s %s addr 0x%x\n", data, isTop, side[iloop], actualOffset);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Feb_Control_ReadRegister(offset);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
uint32_t Feb_Control_ReadRegister(uint32_t offset) {
|
||||
int Feb_Control_ReadRegister(uint32_t offset, uint32_t* retval) {
|
||||
uint32_t actualOffset = offset;
|
||||
int left = 0;
|
||||
int right = 0;
|
||||
char side[2][10] = {"right", "left"};
|
||||
char isTop[10]; strcpy(isTop, Module_TopAddressIsValid(&modules[1]) ? "top" : "bottom");
|
||||
unsigned int addr[2];
|
||||
addr[0] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopRightAddress (&modules[1]) : Module_GetBottomRightAddress (&modules[1]);
|
||||
addr[1] = Module_TopAddressIsValid(&modules[1]) ? Module_GetTopLeftAddress (&modules[1]) : Module_GetBottomLeftAddress (&modules[1]);
|
||||
uint32_t value[2] = {0, 0};
|
||||
|
||||
int run[2] = {0, 0};
|
||||
// both registers
|
||||
if (offset < 0x100) {
|
||||
left = 1;
|
||||
right = 1;
|
||||
run[0] = 1;
|
||||
run[1] = 1;
|
||||
}
|
||||
// right registers only
|
||||
else if (offset >= 0x200) {
|
||||
right = 1;
|
||||
run[0] = 1;
|
||||
actualOffset = offset - 0x200;
|
||||
} else {
|
||||
left = 1;
|
||||
}
|
||||
// left registers only
|
||||
else {
|
||||
run[1] = 1;
|
||||
actualOffset = offset - 0x100;
|
||||
}
|
||||
uint32_t lvalue=0;
|
||||
uint32_t rvalue=0;
|
||||
int top = Module_TopAddressIsValid(&modules[1]) ? 1 : 0;
|
||||
|
||||
unsigned int addr = top ? Module_GetTopRightAddress (&modules[1]) : Module_GetBottomRightAddress (&modules[1]);
|
||||
if (right) {
|
||||
if(!Feb_Interface_ReadRegister(addr, actualOffset, &rvalue)) {
|
||||
cprintf(RED,"Could not read %s right addr 0x%x\n", top ? "top" : "bottom", actualOffset);
|
||||
return -1;
|
||||
}
|
||||
printf("Read %s right addr: 0x%08x\n", top ? "top" : "bottom", rvalue);
|
||||
if (!left) {
|
||||
return rvalue;
|
||||
|
||||
int iloop = 0;
|
||||
for(iloop = 0; iloop < 2; ++iloop) {
|
||||
if(run[iloop]) {
|
||||
if(!Feb_Interface_ReadRegister(addr[iloop],actualOffset, &value[iloop])) {
|
||||
cprintf(RED, "Could not read from %s %s addr 0x%x\n", isTop, side[iloop], actualOffset);
|
||||
return 0;
|
||||
}
|
||||
printf("Read 0x%x from %s %s 0x%x\n", value[iloop], isTop, side[iloop], actualOffset);
|
||||
*retval = value[iloop];
|
||||
// if not the other (left, not right OR right, not left), return the value
|
||||
if (!run[iloop ? 0 : 1]) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
addr = top ? Module_GetTopLeftAddress (&modules[1]) : Module_GetBottomLeftAddress (&modules[1]);
|
||||
if(left) {
|
||||
if(!Feb_Interface_ReadRegister(addr, actualOffset, &lvalue)) {
|
||||
cprintf(RED,"Could not read %s left addr 0x%x\n", top ? "top" : "bottom", actualOffset);
|
||||
return -1;
|
||||
}
|
||||
printf("Read %s left addr: 0x%08x\n", top ? "top" : "bottom", lvalue);
|
||||
if (!right) {
|
||||
return lvalue;
|
||||
}
|
||||
// Inconsistent values
|
||||
if (value[0] != value[1]) {
|
||||
cprintf(RED, "Inconsistent values read from left 0x%x and right 0x%x\n", value[0], value[1]);
|
||||
return 0;
|
||||
}
|
||||
if (lvalue != rvalue) {
|
||||
cprintf(RED, "Inconsistent values betweeen left and right\n");
|
||||
return -1;
|
||||
}
|
||||
return lvalue;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -204,9 +204,10 @@ int Feb_Control_GetModuleNumber();
|
||||
int64_t Feb_Control_GetSubMeasuredPeriod();
|
||||
|
||||
int Feb_Control_SoftwareTrigger();
|
||||
int Feb_Control_InterruptSubframe(int val);
|
||||
int Feb_Control_SetInterruptSubframe(int val);
|
||||
int Feb_Control_GetInterruptSubframe();
|
||||
int Feb_Control_SetQuad(int val);
|
||||
|
||||
uint32_t Feb_Control_WriteRegister(uint32_t offset, uint32_t data);
|
||||
uint32_t Feb_Control_ReadRegister(uint32_t offset);
|
||||
int Feb_Control_WriteRegister(uint32_t offset, uint32_t data);
|
||||
int Feb_Control_ReadRegister(uint32_t offset, uint32_t* retval);
|
||||
#endif
|
||||
|
Binary file not shown.
@ -1,9 +1,9 @@
|
||||
Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer
|
||||
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
||||
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
||||
Repsitory UUID: 27f3af53657b744f43b79f9751909ae4e289ad29
|
||||
Revision: 354
|
||||
Repsitory UUID: d981e1b8e558d3f576038f374d6eddcbbf5af48e
|
||||
Revision: 356
|
||||
Branch: 4.1.0-rc
|
||||
Last Changed Author: Dhanya_Thattil
|
||||
Last Changed Rev: 4121
|
||||
Last Changed Date: 2019-07-29 09:33:57.000000001 +0200 ./FebRegisterDefs.h
|
||||
Last Changed Rev: 4123
|
||||
Last Changed Date: 2019-07-30 17:58:54.000000001 +0200 ./Beb.c
|
||||
|
@ -1,6 +1,6 @@
|
||||
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
|
||||
#define GITREPUUID "27f3af53657b744f43b79f9751909ae4e289ad29"
|
||||
#define GITREPUUID "d981e1b8e558d3f576038f374d6eddcbbf5af48e"
|
||||
#define GITAUTH "Dhanya_Thattil"
|
||||
#define GITREV 0x4121
|
||||
#define GITDATE 0x20190729
|
||||
#define GITREV 0x4123
|
||||
#define GITDATE 0x20190730
|
||||
#define GITBRANCH "4.1.0-rc"
|
||||
|
@ -486,19 +486,25 @@ void setupDetector() {
|
||||
|
||||
|
||||
/* advanced read/write reg */
|
||||
uint32_t writeRegister(uint32_t offset, uint32_t data) {
|
||||
int writeRegister(uint32_t offset, uint32_t data) {
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
return OK;
|
||||
#else
|
||||
return Feb_Control_WriteRegister(offset, data);
|
||||
if(!Feb_Control_WriteRegister(offset, data)) {
|
||||
return FAIL;
|
||||
}
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t readRegister(uint32_t offset) {
|
||||
int readRegister(uint32_t offset, uint32_t* retval) {
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
return OK;
|
||||
#else
|
||||
return Feb_Control_ReadRegister(offset);
|
||||
if(!Feb_Control_ReadRegister(offset, retval)) {
|
||||
return FAIL;
|
||||
}
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -1219,17 +1225,45 @@ int setDetectorPosition(int pos[]) {
|
||||
}
|
||||
|
||||
|
||||
int setQuad(int val) {
|
||||
int ret = Beb_SetQuad(val);
|
||||
if (Feb_Control_SetQuad(val) == -1)
|
||||
return -1;
|
||||
return ret;
|
||||
|
||||
int setQuad(int value) {
|
||||
if(value < 0)
|
||||
return FAIL;
|
||||
#ifndef VIRTUAL
|
||||
Beb_SetQuad(value);
|
||||
if(!Feb_Control_SetQuad(value)) {
|
||||
return FAIL;
|
||||
}
|
||||
#endif
|
||||
return OK;
|
||||
}
|
||||
|
||||
int setInterruptSubframe(int val) {
|
||||
return Feb_Control_InterruptSubframe(val);
|
||||
int getQuad() {
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
#else
|
||||
return Beb_GetQuad();
|
||||
#endif
|
||||
}
|
||||
|
||||
int setInterruptSubframe(int value) {
|
||||
if(value < 0)
|
||||
return FAIL;
|
||||
#ifndef VIRTUAL
|
||||
if(!Feb_Control_SetInterruptSubframe(value)) {
|
||||
return FAIL;
|
||||
}
|
||||
return OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int getInterruptSubframe() {
|
||||
#ifdef VIRTUAL
|
||||
return 0;
|
||||
#else
|
||||
return Feb_Control_GetInterruptSubframe();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user