Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 244 → Rev 245

/cvi/RedPitaya/soccli/soccli.c
17,7 → 17,7
static int panelHandle;
 
static unsigned int chandle = 0;
static int tfID;
//static int tfID;
int pfreq;
static int plothandle[2]= {0,0};
static int tdcplothandle[2]= {0,0};
31,6 → 31,7
float timebins[0XFFFF];
 
FILE *foutput;
int outwaveforms=0;
 
static CmtThreadPoolHandle poolHandle = 0;
int ctrl_c=0;
189,15 → 190,17
return 0;
}
 
int analyse(int nb, unsigned char *cdata) {
int analyse(int nb, unsigned char *cdata, int *info, int *ninfo) {
 
int *ibuf = (int *)cdata;
float *fbuf = (float *)cdata;
float *finfo = (float *)info;
int neve=0;
int *data = (ibuf+3);
int nr=0;
static float adc = 10000;
static float qdc = 0;
*ninfo = 0;
printf("Run HDR LEN=%d NEVE=%d dt=%f adc=%f qdc=%f\n", ibuf[0],ibuf[1],fbuf[2],adc,qdc);
while (nr<nb) {
 
240,7 → 243,8
nr+=8;
adc=10000;
qdc=0;
int nqdc;
int nqdc=0;
int ntdc=0;
for (int k=1; k<nsamples; k++) {
float t =timebins[k];
float tp=timebins[k-1];
252,10 → 256,18
if (fdata[k]< athreshold && fdata[k-1]> athreshold) {
double t0= tp+(athreshold-fdata[k-1])/(fdata[k]-fdata[k-1])* (t-tp);
H1D_Fill(3+id, t0,1);
finfo[*ninfo+4+ntdc]=t0;
ntdc++;
}
}
if (nqdc) qdc/=nqdc;
//printf("adc %f qdc %f\n", adc,qdc);
info[*ninfo]=(ntdc+4)*sizeof(int); // len
info[*ninfo+1]=id | 0xF0000000; // recid
finfo[*ninfo+2]=adc;
finfo[*ninfo+3]=qdc;
*ninfo+= ntdc+4;
if (adctype)
H1D_Fill(1+id, -adc,1);
else
279,13 → 291,14
int *idata = (int *) &data[0];
 
 
 
int evinfo[maxlen];
int CVICALLBACK SocketCB (unsigned handle, int xType, int errCode, void *callbackData) {
 
int nb = 0 ;
static int event = 0;
static int ncalls = 0;
 
static time_t t0, t1;
time(&t0);
switch (xType) {
case TCP_DISCONNECT:
printf("TCP_DISCONNECT ErrorString %s\n",GetTCPErrorString(errCode));
307,7 → 320,7
}
if (debug) printf("Received RECID %d HDRLEN %d == read %d\n", hdr[0], size, nb);
 
 
int ninfo=0;
switch (hdr[0]) {
case 0:
data[nb]=0;
317,9 → 330,18
 
GetCtrlVal(panelHandle,PANEL_CEVE , &event);
GetCtrlVal(panelHandle,PANEL_NTOTAL , &ncalls);
event += analyse(nb,data);
if (foutput) fwrite(data, 1, nb, foutput);
 
event += analyse(nb,data, evinfo, &ninfo);
if (foutput) {
if (outwaveforms) fwrite(data, 1, nb, foutput);
fwrite(evinfo, 1, ninfo*sizeof(int), foutput);
time(&t1);
if ((t1-t0)>10000) {
for (int i=0;i<4;i++) H1D_Write2File(1+i,foutput);
time(&t0);
}
}
SetCtrlVal(panelHandle,PANEL_CEVE , event);
if (event>=ncalls) StartCB (panelHandle, PANEL_START, EVENT_COMMIT, NULL,1,0);
 
366,6 → 388,7
GetCtrlVal(panel,PANEL_DEBUG , &debug);
GetCtrlVal(panel,PANEL_NBEFORE , &nbefore);
GetCtrlVal(panel,PANEL_ENABLEDOUTPUT, &output);
GetCtrlVal(panel,PANEL_OUTWAVE, &outwaveforms);
GetCtrlVal(panel,PANEL_FILENAME, filename);
 
delay= MINTRGDELAY + nsamples - nbefore + 1;