/********************************************************/ /* rodbusy.h */ /* */ /* Author: Markus Joos, CERN EP/ESS */ /*** C 2002 - The software with that certain something***/ #ifndef _RCC_RODBUSY_H #define _RCC_RODBUSY_H #include "rcc_error/rcc_error.h" typedef struct { unsigned short cr[64]; // Configuration EEPROM unsigned short swrst; // 0x80 unsigned short swirq; // 0x82 unsigned short intcsr; // 0x84 unsigned short intid; // 0x86 unsigned short dummy1[4]; unsigned short sreqcsr; // 0x90 unsigned short sreqsetclr; // 0x92 unsigned short limreg; // 0x94 unsigned short ivalreg; // 0x96 unsigned short busystate; // 0x98 unsigned short busymask; // 0x9a unsigned short dummy2[18]; unsigned short fifo[16]; // 0xc0 - 0xde unsigned short cntrst; // 0xe0 unsigned short fifrst; // 0xe2 unsigned short fifwen; // 0xe4 unsigned short fifwcr; // 0xe6 unsigned short fifrcr; // 0xe8 unsigned short seqreg; // 0xea unsigned short fifff; // 0xec unsigned short fifef; // 0xee } T_rodbusy; typedef struct { unsigned short nvalid; unsigned short data[512]; } T_fifo_data; typedef struct { T_fifo_data fifo[16]; } T_rodbusy_fifos; typedef struct { unsigned int busy[16]; } T_rodbusy_busy; typedef struct { unsigned int irq_vector; unsigned int irq_level; unsigned int irq_enable; unsigned int sreq_enable; unsigned int limit; unsigned int interval; unsigned int busy_mask; unsigned int fifo_control; unsigned int mode; unsigned int transfer_interval; } T_rodbusy_init; enum rodbusy_errors { RODBUSY_OK, RODBUSY_ISOPEN = (P_ID_RODBUSY << 8)+1, RODBUSY_ISNOTOPEN, RODBUSY_ERROR_FAIL, RODBUSY_VMEOPEN, RODBUSY_VMEMSTMAP, RODBUSY_VMEMSTUNMAP, RODBUSY_VMECLOSE, RODBUSY_ILLVAL, RODBUSY_ILLMODE, RODBUSY_NO_CODE }; #define RODBUSY_OK_STR "OK" #define RODBUSY_ISOPEN_STR "The RODBUSY library is already open" #define RODBUSY_ISNOTOPEN_STR "The RODBUSY library is not opened" #define RODBUSY_VMEMSTMAP_STR "Error on VME_MasterMap" #define RODBUSY_VMEMSTUNMAP_STR "Error on VME_MasterUnmap" #define RODBUSY_VMECLOSE_STR "Error on VME_Close" #define RODBUSY_VMEOPEN_STR "Error on VME_Open" #define RODBUSY_NO_CODE_STR "Unknown error" #define RODBUSY_ILLVAL_STR "Illegal value" #define RODBUSY_ILLMODE_STR "The requested function is incompatible with the current mode" #ifdef __cplusplus extern "C" { #endif /* prototypes */ err_type RODBUSY_Open(unsigned int vme_address); err_type RODBUSY_Close(void); err_type RODBUSY_Dump(void); err_type RODBUSY_ReadFIFO(T_rodbusy_fifos *data); err_type RODBUSY_Init(T_rodbusy_init *data); err_type RODBUSY_Reset(void); err_type RODBUSY_GenerateSWInterrupt(void); err_type RODBUSY_ClearInterrupt(void); err_type RODBUSY_GetBusy(T_rodbusy_busy *data); err_type RODBUSY_CounterReset(void); err_type RODBUSY_FIFOReset(void); err_type RODBUSY_FIFOWrite(void); #ifdef __cplusplus } #endif #endif