mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
119 lines
2.9 KiB
C++
119 lines
2.9 KiB
C++
#include "MySocketTCP.h"
|
|
|
|
#include "sls_detector_defs.h"
|
|
#include "sls_receiver_defs.h"
|
|
|
|
#include "sls_detector_funcs.h"
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#define INVALID -999
|
|
|
|
enum detectorFunctions{
|
|
F_GET_ADC=13
|
|
};
|
|
|
|
void help() {
|
|
cerr << "Usage:\n"
|
|
"slsAdcReader [hostname] [adcval]" << endl;
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
|
|
slsDetectorDefs::dacIndex getADCEnum(char* cval){
|
|
int idac;
|
|
string cmd;
|
|
cmd.assign(cval);
|
|
|
|
if (sscanf(cval,"adc:%d",&idac)==1) {
|
|
return (slsDetectorDefs::dacIndex)(idac+1000);
|
|
} else if (cmd=="temp_adc")
|
|
return slsDetectorDefs::TEMPERATURE_ADC;
|
|
else if (cmd=="temp_fpga")
|
|
return slsDetectorDefs::TEMPERATURE_FPGA;
|
|
else if (cmd=="temp_fpgaext")
|
|
return slsDetectorDefs::TEMPERATURE_FPGAEXT;
|
|
else if (cmd=="temp_10ge")
|
|
return slsDetectorDefs::TEMPERATURE_10GE;
|
|
else if (cmd=="temp_dcdc")
|
|
return slsDetectorDefs::TEMPERATURE_DCDC;
|
|
else if (cmd=="temp_sodl")
|
|
return slsDetectorDefs::TEMPERATURE_SODL;
|
|
else if (cmd=="temp_sodr")
|
|
return slsDetectorDefs::TEMPERATURE_SODR;
|
|
else if (cmd=="temp_fpgafl")
|
|
return slsDetectorDefs::TEMPERATURE_FPGA2;
|
|
else if (cmd=="temp_fpgafr")
|
|
return slsDetectorDefs::TEMPERATURE_FPGA3;
|
|
else if (cmd=="i_a")
|
|
return slsDetectorDefs::I_POWER_A;
|
|
else if (cmd=="i_b")
|
|
return slsDetectorDefs::I_POWER_B;
|
|
else if (cmd=="i_c")
|
|
return slsDetectorDefs::I_POWER_C;
|
|
else if (cmd=="i_d")
|
|
return slsDetectorDefs::I_POWER_D;
|
|
else if (cmd=="vm_a")
|
|
return slsDetectorDefs::V_POWER_A;
|
|
else if (cmd=="vm_b")
|
|
return slsDetectorDefs::V_POWER_B;
|
|
else if (cmd=="vm_c")
|
|
return slsDetectorDefs::V_POWER_C;
|
|
else if (cmd=="vm_d")
|
|
return slsDetectorDefs::V_POWER_D;
|
|
else if (cmd=="vm_io")
|
|
return slsDetectorDefs::V_POWER_IO;
|
|
else if (cmd=="i_io")
|
|
return slsDetectorDefs::I_POWER_IO;
|
|
else {
|
|
cerr << "cannot decode dac " << cmd << endl;
|
|
help();
|
|
return slsDetectorDefs::I_POWER_IO;
|
|
}
|
|
};
|
|
|
|
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
if (argc < 3)
|
|
help();
|
|
slsDetectorDefs::dacIndex idx=getADCEnum(argv[2]);
|
|
|
|
|
|
char mess[MAX_STR_LENGTH]="";
|
|
detectorFunctions fnum=F_GET_ADC;
|
|
int retval=-1;
|
|
int ret=slsReceiverDefs::FAIL;
|
|
int arg[2]={idx,0};
|
|
|
|
|
|
MySocketTCP* tempSocket=new MySocketTCP(argv[1],1952);
|
|
if (tempSocket->getErrorStatus()){
|
|
cerr << "could not create socket with " << argv[1] << endl;
|
|
help();
|
|
}
|
|
|
|
if (tempSocket->Connect()) {
|
|
tempSocket->SendDataOnly(&fnum, sizeof(fnum));
|
|
tempSocket->SendDataOnly(arg,sizeof(arg));
|
|
tempSocket->ReceiveDataOnly(&ret, sizeof(ret));
|
|
if (ret != slsReceiverDefs::FAIL) {
|
|
tempSocket->ReceiveDataOnly(&retval, sizeof(retval));
|
|
} else {
|
|
tempSocket->ReceiveDataOnly(mess,sizeof(mess));
|
|
printf("Detector returned Error: %s",mess);
|
|
}
|
|
tempSocket->Disconnect();
|
|
} else
|
|
cerr << "could not connect to " << argv[1] << endl;
|
|
|
|
if (idx <= 100) {
|
|
printf("%.2f°C\n",(double)retval/1000.00);
|
|
}else
|
|
printf("%dmV\n",retval);
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|