/************************************************/ /* */ /* File : calb.c */ /* Description : Calorimeter-Boards library */ /* */ /* Author: G. Cabibbo, A. Passeri */ /* */ /* Created : 11.02.1997 */ /* Last modified: 27.02.1997 */ /* */ /************************************************/ #include <stdio.h> #include "calb.h" /*********************************************************************/ /* */ /* readpage routines */ /* */ /*********************************************************************/ int calb_readpage_i_csr(CALB_id calb_id, /* IN */ CALB_PAGE_CSR_bits *bits) /* OUT */ { int res; CALBH_CSR_regs regs; res = calbh_readpage_csr(calb_id,regs); if(res!=CALBH_ERROR_OK) { ErrorSetF(CALB_ERROR_UNKNOWN,"calb_readpage_csr","calbh_readpage_csr error: %s",ErrorGetMessage()); return CALB_ERROR_UNKNOWN; } calbb_regstobits_csr(regs,(* bits)); return CALB_ERROR_OK; } /*********************************************************************/ /* */ /* Register oriented routines */ /* */ /*********************************************************************/ int calb_read_i_creg(CALB_id calb_id, CALB_CREG_bits *creg) { unsigned short ctrl; ctrl=calbh_read_creg(calb_id); calbb_nrtocreg(ctrl,(*creg)); } int calb_read_i_sreg(CALB_id calb_id, CALB_SREG_bits *sreg) { unsigned short status; status=calbh_read_sreg(calb_id); calbb_nrtosreg(status,(*sreg)); } int calb_read_i_hfifo(CALB_id calb_id, CALB_HFIFO_bits *hfifo) { unsigned int hdata; hdata=calbh_read_hfifo(calb_id); calbb_nrtohfifo(hdata,(*hfifo)); } int calb_read_i_dfifo(CALB_id calb_id, CALB_DFIFO_bits *dfifo) { unsigned int ddata; ddata=calbh_read_dfifo(calb_id); calbb_nrtodfifo(ddata,(*dfifo)); } /*********************************************************************/ /* */ /* readfifo routine */ /* */ /*********************************************************************/ /******** disabled for the moment ! int calb_read_pio_i_bothfifo (CALBH_id calb_id, CALB_FIFO_EVENT data) { unsigned int nrec,nev=1; unsigned int head,nrecold; unsigned int* tempbuf; int loop; int ErrFlag; ErrFlag = calbh_read_pio_hfifo(calb_id,nev,&head); if ( ErrFlag == CALBH_ERROR_OK ) { nrecold = nrec = bits_get_bits(head,CALB_HFIFO_NREC_SHIFT,CALB_HFIFO_NREC_LEN); tempbuf= (unsigned int *) malloc(nrec*sizeof(unsigned int)); if (tempbuf == NULL) { ErrorSetF(CALBH_ERROR_UNKNOWN,"calb_read_pio_i_bothfifo", "AllocateBuffer error: %s",ErrorGetMessage()); return CALBH_ERROR_UNKNOWN; } ErrFlag = calbh_read_pio_dfifo(calb_id,nrec,tempbuf); if (nrec != nrecold){ ErrorSetF(CALBH_ERROR_UNKNOWN,"calb_read_pio_i_bothfifo", "DFIFO - HFIFO syncronization error: %s",ErrorGetMessage()); return CALBH_ERROR_UNKNOWN; } data->ntrig=bits_get_bits(head,CALB_HFIFO_NTRG_SHIFT,CALB_HFIFO_NTRG_SHIFT); data->nchan=nrec; for(loop=0;loop<nrec;loop++){ data->chan[loop] = bits_get_bits(tempbuf[loop],CALB_DFIFO_NCH_SHIFT,CALB_DFIFO_NCH_LEN); data->data[loop] = bits_get_bits(tempbuf[loop],CALB_DFIFO_DATA_SHIFT,CALB_DFIFO_DATA_LEN); } } return ErrFlag; } ***************/