/************************************************/ /* */ /* File : calb.h */ /* Description : CALB library */ /* */ /* Authors: G.Cabibbo, A.Passeri */ /* */ /* Created : 12.02.1997 */ /* Last modified: 30.12.1997 */ /* */ /************************************************/ /* =h=> CALB library =f=> This is the CALB library ===< */ #ifndef CALB_H #define CALB_H #include "calbhard.h" #include "calbbits.h" /************************************************/ /* */ /* The result should be CALB_ERROR_OK, */ /* else there have been an error */ /* (see CALB_ERROR_.. constants) */ /* if not stated otherwise */ /* */ /************************************************/ #define CALB_ERROR_OK 0 /* MUST be 0 */ #define CALB_ERROR_TEST CALBH_ERROR_TEST #define CALB_ERROR_UNKNOWN CALBH_ERROR_UNKNOWN #define CALB_ERROR_OUTRANGE CALBH_ERROR_OUTRANGE #define CALB_WARNING_ZSUP CALBH_WARNING_ZSUP #define CALB_ERROR_ACQEN -3 /*********************************************************************/ /* bit values */ /*********************************************************************/ #define CALB_BIT_ON CALBB_BIT_ON #define CALB_BIT_OFF CALBB_BIT_OFF /*********************************************************************/ /* */ /* Query routines */ /* */ /*********************************************************************/ /* returns 0 if a CalBoard is not present, 1 else */ #define calb_ispresent(/*int*/ chain, /* IN, VIC chain */ \ /*int*/ crate, /* IN, position in the VIC chain */ \ /*int*/ slot) /* IN, position in the crate */ \ calbh_ispresent(chain,crate,slot) #define calb_sernum(/*int*/ chain, /* IN, VIC chain */ \ /*int*/ crate, /* IN, position in the VIC chain */ \ /*int*/ slot) /* IN, position in the crate */ \ calbh_sernum(chain,crate,slot) /*********************************************************************/ /* */ /* Initialization routines */ /* */ /*********************************************************************/ typedef CALBH_id CALB_id; #define calb_loadinfo(/* char* */ calb_mapname) \ calbh_loadinfo(calb_mapname) #define calb_unloadinfo() \ calbh_loadinfo(void) #define calb_open(/*int */ chain, /* IN */ \ /*int */ crate, /* IN */ \ /*int */ slot, /* IN */ \ /*CALB_id * */ calb_id) /* OUT */ \ calbh_open(chain,crate,slot,calb_id) #define calb_close(/*CALBH_id */ calb_id) /* IN */ \ calbh_close(calb_id) /*********************************************************************/ /************** types *******************/ /*********************************************************************/ typedef CALBB_CREG_bits CALB_CREG_bits; typedef CALBB_SREG_bits CALB_SREG_bits; typedef CALBB_HFIFO_bits CALB_HFIFO_bits; typedef CALBB_DFIFO_bits CALB_DFIFO_bits; typedef CALBB_HFIFO_unpack CALB_HFIFO_unpack; typedef CALBB_DFIFO_unpack CALB_DFIFO_unpack; typedef CALBB_PAGE_CSR_bits CALB_PAGE_CSR_bits; typedef CALBH_CHANNELS CALB_CHANNELS; typedef CALBH_CHALF CALB_CHALF; typedef CALBH_PEDS_val CALB_PEDS_val; typedef CALBH_ZSUP_nwind CALB_ZSUP_nwind; typedef CALBH_ZSUP_val CALB_ZSUP_val; /*********************************************************************/ /* */ /* Register oriented routines */ /* */ /*********************************************************************/ /*********************************************************************/ /* read routines */ /*********************************************************************/ /***********************/ /* internal */ /* Do not use directly */ /***********************/ int calb_read_i_creg(CALB_id calb_id, /* IN */ CALB_CREG_bits *creg); /* OUT */ int calb_read_i_sreg(CALB_id calb_id, /* IN */ CALB_SREG_bits *sreg); /* OUT */ int calb_read_i_hfifo(CALB_id calb_id, /* IN */ CALB_HFIFO_bits *hfifo); /* OUT */ int calb_read_i_dfifo(CALB_id calb_id, /* IN */ CALB_DFIFO_bits *dfifo); /* OUT */ int calb_read_i_rdtrg(CALB_id calb_id); /* IN */ /***********************/ /* Use these */ /***********************/ #define calb_read_creg(/*CALB_id*/ calb_id, /* IN */ \ /* CALB_CREG_bits*/ creg) /* OUT */ \ calb_read_i_creg(calb_id,&(creg)) #define calb_read_sreg(/* CALB_id */ calb_id, /* IN */ \ /* CALB_SREG_bits */ sreg) /* OUT */ \ calb_read_i_sreg(calb_id,&(sreg)) #define calb_read_hfifo(/* CALB_id */ calb_id, /* IN */\ /* CALB_HFIFO_bits */ hfifo) /* OUT */\ calb_read_i_hfifo(calb_id,&(hfifo)) #define calb_read_dfifo(/* CALB_id */ calb_id , /* IN */\ /* CALB_DFIFO_bits */ dfifo); /* OUT */\ calb_read_i_dfifo(calb_id,&(dfifo)) #define calb_read_rdtrg(/*CALB_id */ calb_id) /* IN */ \ calb_read_i_rdtrg(calb_id) /*********************************************************************/ /* readLATCH routines */ /*********************************************************************/ /***********************/ /* internal */ /* Do not use directly */ /***********************/ int calb_readlatch_i_chan (CALB_id calb_id, /* IN */ unsigned int chan); /* IN */ int calb_readlatch_i_all (CALB_id calb_id, /* IN */ CALB_CHANNELS latch); /* OUT */ /***********************/ /* Use this */ /***********************/ #define calb_readlatch_chan(/*CALB_id */ calb_id, /* IN */ \ /* unsigned int */ chan) /* IN */ \ calb_readlatch_i_chan(calb_id,chan) #define calb_readlatch_all(/*CALB_id */ calb_id, /* IN */ \ /* CALB_CHANNELS */ latch) /* OUT */ \ calb_readlatch_i_all(calb_id,latch) /*********************************************************************/ /* write routines */ /*********************************************************************/ /***********************/ /* internal */ /* Do not use directly */ /***********************/ int calb_write_i_clrtrg(CALB_id calb_id); /* IN */ int calb_write_i_swtrg(CALB_id calb_id); /* IN */ /***********************/ /* Use these */ /***********************/ /* =i=> */ #define calb_write_creg(/*CALB_id */ calbid, /* IN */ \ /*CALB_CREG_bits*/ creg) /* IN */ \ calbh_write_creg(calbid,calbb_cregtonr(creg),1); /* =i=> */ #define calb_write_reset(/*CALB_id */ calbid) /* IN */ \ calbh_write_reset(calbid) /* =i=> */ #define calb_write_clrtrg(/*CALB_id */ calbid) /* IN */ \ calb_write_i_clrtrg(calbid) /* =i=> */ #define calb_write_swtrg(/*CALB_id */ calbid) /* IN */ \ calb_write_i_swtrg(calbid) /*********************************************************************/ /* */ /* Bit oriented routines */ /* */ /*********************************************************************/ /*********************************************************************/ /************** get bit routines *******************/ /************** does not return a valid code *******************/ /*********************************************************************/ /* control */ /* =i=> */ #define calb_get_acqen(/*CALB_id */ calbid) /* IN */ \ calbb_get_acqen(calbh_read_creg(calbid)) /* =i=> */ #define calb_get_zsen(/*CALB_id */ calbid) /* IN */ \ calbb_get_zsen(calbh_read_creg(calbid)) /* =i=> */ #define calb_get_berren(/*CALB_id */ calbid) /* IN */ \ calbb_get_berren(calbh_read_creg(calbid)) /* =i=> */ #define calb_get_alu(/*CALB_id */ calbid) /* IN */ \ calbb_get_alu(calbh_read_creg(calbid)) /* =i=> */ #define calb_get_d12force(/*CALB_id */ calbid) /* IN */ \ calbb_get_d12force(calbh_read_creg(calbid)) /* =i=> */ #define calb_get_xresen(/*CALB_id */ calbid) /* IN */ \ calbb_get_xresen(calbh_read_creg(calbid)) /* status */ /* =i=> */ #define calb_get_efd(/*CALB_id */ calbid) /* IN */ \ calbb_get_efd(calbh_read_sreg(calbid)) /* =i=> */ #define calb_get_hfd(/*CALB_id */ calbid) /* IN */ \ calbb_get_hfd(calbh_read_sreg(calbid)) /* =i=> */ #define calb_get_ffd(/*CALB_id */ calbid) /* IN */ \ calbb_get_ffd(calbh_read_sreg(calbid)) /* =i=> */ #define calb_get_efhd(/*CALB_id */ calbid) /* IN */ \ calbb_get_efhd(calbh_read_sreg(calbid)) /* =i=> */ #define calb_get_hfhd(/*CALB_id */ calbid) /* IN */ \ calbb_get_hfhd(calbh_read_sreg(calbid)) /* =i=> */ #define calb_get_ffhd(/*CALB_id */ calbid) /* IN */ \ calbb_get_ffhd(calbh_read_sreg(calbid)) /* =i=> */ #define calb_get_xberr(/*CALB_id */ calbid) /* IN */ \ calbb_get_xberr(calbh_read_sreg(calbid)) /*********************************************************************/ /************** set bit routines *******************/ /*********************************************************************/ /* control */ /* =i=> */ #define calb_set_acqen(/*CALB_id */ calb_id, /* IN */ \ /*unsigned char */ value) /* IN */ \ calbh_write_creg(calb_id,calbb_set_acqen(calbh_read_creg(calb_id),value),1) /* =i=> */ #define calb_set_zsen(/*CALB_id */ calb_id, /* IN */ \ /*unsigned char */ value) /* IN */ \ calbh_write_creg(calb_id,calbb_set_zsen(calbh_read_creg(calb_id),value),2) /* =i=> */ #define calb_set_berren(/*CALB_id */ calb_id, /* IN */ \ /*unsigned char */ value) /* IN */ \ calbh_write_creg(calb_id,calbb_set_berren(calbh_read_creg(calb_id),value),4) /* =i=> */ #define calb_set_alu(/*CALB_id */ calb_id, /* IN */ \ /*unsigned char */ value) /* IN */ \ calbh_write_creg(calb_id,calbb_set_alu(calbh_read_creg(calb_id),value),0x38) /* =i=> */ #define calb_set_d12force(/*CALB_id */ calb_id, /* IN */ \ /*unsigned char */ value) /* IN */ \ calbh_write_creg(calb_id,calbb_set_d12force(calbh_read_creg(calb_id),value),0x40) /* =i=> */ #define calb_set_xresen(/*CALB_id */ calb_id, /* IN */ \ /*unsigned char */ value) /* IN */ \ calbh_write_creg(calb_id,calbb_set_xresen(calbh_read_creg(calb_id),value),0x80) /*********************************************************************/ /* */ /* readpage routines */ /* */ /*********************************************************************/ /***********************/ /* internal */ /* Do not use directly */ /***********************/ int calb_readpage_i_csr(CALB_id calb_id, /* IN */ CALB_PAGE_CSR_bits *bits); /* OUT */ int calb_readpage_i_ped(CALB_id calb_id, /* IN */ CALB_PEDS_val *peds); /* OUT */ int calb_readpage_i_zsup (CALB_id calb_id, /* IN */ CALB_ZSUP_nwind *zwind, /* OUT */ CALB_ZSUP_val zsup); /* OUT */ /***********************/ /* Use this */ /***********************/ #define calb_readpage_csr(/*CALB_id */ calb_id, /* IN */ \ /*CALB_PAGE_CSR_bits */ bits) /* OUT */ \ calb_readpage_i_csr(calb_id,&(bits)) #define calb_readpage_ped(/*CALB_id */ calb_id, /* IN */ \ /* CALB_PEDS_val */ peds) /* OUT */ \ calb_readpage_i_ped(calb_id,&(peds)) #define calb_readpage_zsup(/*CALB_id */ calb_id, /* IN */ \ /* CALB_ZSUP_nwind */ zwind, /* OUT */ \ /* CALB_ZSUP_val */ zsup) /* OUT */ \ calb_readpage_i_zsup(calb_id,&(zwind),zsup) /*********************************************************************/ /* */ /* writepage routines */ /* */ /*********************************************************************/ /***********************/ /* internal */ /* Do not use directly */ /***********************/ int calb_writepage_i_ped(CALB_id calb_id, /* IN */ CALB_PEDS_val *peds); /* IN */ int calb_writepage_i_zsup (CALB_id calb_id, /* IN */ CALB_ZSUP_nwind *zwind, /* IN */ CALB_ZSUP_val zsup); /* IN */ /***********************/ /* Use this */ /***********************/ #define calb_writepage_ped(/*CALB_id */ calb_id, /* IN */ \ /* CALB_PEDS_val */ peds) /* OUT */ \ calb_writepage_i_ped(calb_id,&(peds)) #define calb_writepage_zsup(/*CALB_id */ calb_id, /* IN */ \ /* CALB_ZSUP_nwind */ zwind, /* |N */ \ /* CALB_ZSUP_val */ zsup) /* OUT */ \ calb_writepage_i_zsup(calb_id,&(zwind),zsup) /*********************************************************************/ /* readfifo routines */ /*********************************************************************/ /*********************/ /* */ /* event structure */ /* */ /*********************/ /******* just a guess typedef struct { unsigned int ntrig; unsigned int nchan; CALBH_CHANNELS chan; CALBH_CHANNELS data; } CALB_FIFO_single_EVENT; typedef CALB_FIFO_single_EVENT *CALB_FIFO_EVENT; ************/ /***********************/ /* internal */ /* Do not use directly */ /***********************/ /******* not yet available int calb_read_pio_i_bothfifo ( CALBH_id calb_id, CALB_FIFO_EVENT data); ************/ /***********************/ /* Use this */ /***********************/ #define calb_read_pio_hfifo(/*CALBH_id */ calb_id, /* IN */ \ /*unsigned int */ count, /* IN nr els to read, OUT nr els really read */ \ /*unsigned int * */ buffer) /* OUT */ \ calbh_read_pio_hfifo(calb_id,count,buffer) #define calb_read_pio_dfifo(/*CALBH_id */ calb_id, /* IN */ \ /*unsigned int */ count, /* IN nr els to read, OUT nr els really read */ \ /*unsigned int * */ buffer) /* OUT */ \ calbh_read_pio_dfifo(calb_id,count,buffer) #define calb_read_blt_dfifo(/*CALBH_id */ calb_id, /* IN */ \ /*unsigned int */ count, /* IN nr els to read, OUT nr els really read */ \ /*unsigned int * */ buffer) /* OUT */ \ calbh_read_blt_dfifo(calb_id,count,buffer) #endif /* CALB_H */