/************************************************/ /* */ /* File : calb.h */ /* Description : CALB library */ /* */ /* Authors: G.Cabibbo, A.Passeri */ /* */ /* Created : 12.02.1997 */ /* Last modified: 03.04.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 /*********************************************************************/ /* bit values */ /*********************************************************************/ #define CALB_BIT_ON CALBB_BIT_ON #define CALB_BIT_OFF CALBB_BIT_OFF /*********************************************************************/ /* */ /* Initialisation routines */ /* */ /*********************************************************************/ typedef CALBH_id CALB_id; #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(/*int */ chain, /* IN */ \ /*int */ crate, /* IN */ \ /*int */ slot, /* IN */ \ /*CALBH_id */ calb_id) /* IN */ \ calbh_close(chain,crate,slot,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; /*********************************************************************/ /* */ /* Register oriented 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 */ /***********************/ /* Use this */ /***********************/ /*********************************************************************/ /* read routines */ /* does not return a valid code */ /*********************************************************************/ #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 */ calbid) /* IN */ \ calbh_read_rdtrg(calbid) /*********************************************************************/ /* write routines */ /*********************************************************************/ /* =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 */ \ calbh_write_clrtrg(calbid) /* =i=> */ #define calb_write_swtrg(/*CALB_id */ calbid) /* IN */ \ calbh_write_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),1) /* =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),1) /* =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),1) /* =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),1) /* =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),1) /*********************************************************************/ /* */ /* readpage routines */ /* */ /*********************************************************************/ /***********************/ /* internal */ /* Do not use directly */ /***********************/ int calb_readpage_i_csr(CALB_id calb_id, /* IN */ CALB_PAGE_CSR_bits *bits); /* 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)) /*********************************************************************/ /* readfifo routines */ /*********************************************************************/ /*********************/ /* */ /* event structure */ /* */ /*********************/ /******* just a guess typedef struct { unsigned int ntrig; unsigned int nchan; CHANNELS chan; 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 */