mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 18:17:59 +02:00
Command adcreg added to write to adc registers
This commit is contained in:
@ -1972,6 +1972,51 @@ int slsDetector::writeRegister(int addr, int val){
|
||||
return retval;
|
||||
|
||||
};
|
||||
/* write or read register */
|
||||
|
||||
int slsDetector::writeAdcRegister(int addr, int val){
|
||||
|
||||
|
||||
int retval;
|
||||
int fnum=F_WRITE_ADC_REG;
|
||||
int ret=FAIL;
|
||||
|
||||
char mess[100];
|
||||
|
||||
int arg[2];
|
||||
arg[0]=addr;
|
||||
arg[1]=val;
|
||||
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< std::endl;
|
||||
std::cout<< "Writing to adc register "<< hex<<addr << " data " << hex<<val << std::endl;
|
||||
#endif
|
||||
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
||||
if (connectControl() == OK){
|
||||
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||
controlSocket->SendDataOnly(arg,sizeof(arg));
|
||||
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret!=FAIL)
|
||||
controlSocket->ReceiveDataOnly(&retval,sizeof(retval));
|
||||
else {
|
||||
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||
std::cout<< "Detector returned error: " << mess << std::endl;
|
||||
}
|
||||
controlSocket->Disconnect();
|
||||
if (ret==FORCE_UPDATE)
|
||||
updateDetector();
|
||||
}
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "ADC Register returned "<< retval << std::endl;
|
||||
#endif
|
||||
if (ret==FAIL) {
|
||||
std::cout<< "Write ADC to register failed " << std::endl;
|
||||
}
|
||||
return retval;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
@ -785,6 +785,16 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
*/
|
||||
int writeRegister(int addr, int val);
|
||||
|
||||
|
||||
/**
|
||||
write register
|
||||
\param addr address
|
||||
\val value
|
||||
\returns current register value
|
||||
|
||||
*/
|
||||
int writeAdcRegister(int addr, int val);
|
||||
|
||||
/**
|
||||
read register
|
||||
\param addr address
|
||||
|
@ -462,6 +462,10 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdRegister;
|
||||
i++;
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="adcreg"; //
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdRegister;
|
||||
i++;
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="setbit"; //
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdRegister;
|
||||
i++;
|
||||
@ -3301,6 +3305,12 @@ string slsDetectorCommand::cmdRegister(int narg, char *args[], int action) {
|
||||
else
|
||||
return string("Could not scan value (hexadecimal fomat) ")+string(args[2]);
|
||||
sprintf(answer,"%x",myDet->writeRegister(addr,val));
|
||||
} else if (cmd=="adcreg") {
|
||||
if (sscanf(args[2],"%x",&val))
|
||||
;
|
||||
else
|
||||
return string("Could not scan value (hexadecimal fomat) ")+string(args[2]);
|
||||
sprintf(answer,"%x",myDet->writeAdcRegister(addr,val));
|
||||
} else {
|
||||
|
||||
if (sscanf(args[2],"%d",&n))
|
||||
@ -3323,6 +3333,8 @@ string slsDetectorCommand::cmdRegister(int narg, char *args[], int action) {
|
||||
return string("Cannot get");
|
||||
if (cmd=="clearbit")
|
||||
return string("Cannot get");
|
||||
if (cmd=="adcreg")
|
||||
return string("Cannot get");
|
||||
|
||||
if (cmd=="reg") {
|
||||
if (narg<2)
|
||||
|
@ -445,6 +445,17 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing {
|
||||
*/
|
||||
virtual int writeRegister(int addr, int val)=0;
|
||||
|
||||
|
||||
/**
|
||||
write ADC register
|
||||
\param addr address
|
||||
\param val value
|
||||
\returns current register value
|
||||
|
||||
DO NOT USE!!! ONLY EXPERT USER!!!
|
||||
*/
|
||||
virtual int writeAdcRegister(int addr, int val)=0;
|
||||
|
||||
|
||||
/**
|
||||
read register
|
||||
|
Reference in New Issue
Block a user