/************************************************/
/*                                              */
/* File         : RockM_reg_access.h            */
/*                                              */
/* Author       : Maurizio De Nino              */
/* Modified by  : Sfiligoi Igor                 */
/*                                              */
/* Created      : 01/10/97                      */
/* Last modified: 20/10/97                      */
/*                                              */
/************************************************/


#ifndef RockM_reg_access
#define RockM_reg_access

#include "VmeLib.h"

/*			DEFINIZIONE DEGLI OFFSETS			*/

#define ROCKM_FIFO_OFFSET   		0x00
#define ROCKM_RESET_OFFSET		0x10001
#define	ROCKM_FIFOREG_OFFSET		0x10003
#define	ROCKM_WATCHDOG_OFFSET		0x10005
#define	ROCKM_CSR0_OFFSET		0x10007
#define	ROCKM_CSR1_OFFSET		0x10009
#define	ROCKM_CSR2_OFFSET		0x1000b
#define	ROCKM_ELAPSED_TIME_OFFSET	0x1000d
#define ROCKM_TRIG_ERR_OFFSET		0x1000f

#define ROCKM_TQUE_OFFSET		0x10010
#define ROCKM_TNOW_OFFSET		0x10012
#define ROCKM_CHAINADD_OFFSET   	0x10014
#define	ROCKM_GOLDEN_OFFSET		0x10016
#define	ROCKM_WORDCNT_OFFSET		0x10018
#define	ROCKM_INFOHUB_OFFSET		0x1001a
#define	ROCKM_INFOMICRO_OFFSET	0x1001a
#define	ROCKM_MICROSTAT_OFFSET	0x1001c
#define	ROCKM_MICROWORD_OFFSET	0x1001e



/*****************************************************************************/
/*									     */
/*				FIFO PAGE				     */
/*									     */
/*****************************************************************************/		

#define RockM_write_fifo(this_board,int_data) myVme_D32WRITE(this_board,   \
						ROCKM_FIFO_OFFSET,int_data)

#define RockM_read_fifo(this_board) myVme_D32READ(this_board,ROCKM_FIFO_OFFSET)

/************************************************************************/
/*									*/
/*			INTERNAL PAGE					*/
/*									*/
/************************************************************************/

#define RockM_write_reset(this_board,char_data) myVme_D08WRITE(this_board,\
						ROCKM_RESET_OFFSET,char_data)

#define RockM_read_reset(this_board) myVme_D08READ(this_board,ROCKM_RESET_OFFSET)


#define RockM_read_fiforeg(this_board) 			\
		myVme_D08READ(this_board,ROCKM_FIFOREG_OFFSET)

#define RockM_write_watchdog(this_board,char_data) 			\
	myVme_D08WRITE(this_board,ROCKM_WATCHDOG_OFFSET,char_data)

#define RockM_read_watchdog(this_board) 			\
	myVme_D08READ(this_board,ROCKM_WATCHDOG_OFFSET)

#define RockM_write_csr0(this_board,char_data) myVme_D08WRITE(this_board,   \
						ROCKM_CSR0_OFFSET,char_data)


#define RockM_read_csr0(this_board) 			\
	myVme_D08READ(this_board,ROCKM_CSR0_OFFSET)


#define RockM_read_csr1(this_board) 			\
	myVme_D08READ(this_board,ROCKM_CSR1_OFFSET)


#define RockM_read_csr2(this_board) 			\
	myVme_D08READ(this_board,ROCKM_CSR2_OFFSET)

#define RockM_write_csr2(this_board,char_data) myVme_D08WRITE(this_board,   \
						ROCKM_CSR2_OFFSET,char_data)

#define RockM_read_elapsed_time(this_board) 			\
	myVme_D08READ(this_board,ROCKM_ELAPSED_TIME_OFFSET)

#define RockM_write_trig_err(this_board,char_data) myVme_D08WRITE(this_board, \
						ROCKM_TRIG_ERR_OFFSET,char_data)

#define RockM_read_trig_err(this_board) 			\
	myVme_D08READ(this_board,ROCKM_TRIG_ERR_OFFSET)

/************************************************************************/
/*									*/
/*				INFO PAGE				*/
/************************************************************************/


#define RockM_read_tque(this_board) 			\
	myVme_D16READ(this_board,ROCKM_TQUE_OFFSET)

#define RockM_read_tnow(this_board) 			\
	myVme_D16READ(this_board,ROCKM_TNOW_OFFSET)

#define RockM_read_chainadd(this_board) 			\
	myVme_D16READ(this_board,ROCKM_CHAINADD_OFFSET)

#define RockM_write_chainadd(this_board,short_data) 			\
	myVme_D16WRITE(this_board,ROCKM_CHAINADD_OFFSET,short_data)

#define RockM_read_golden(this_board) 			\
	myVme_D16READ(this_board,ROCKM_GOLDEN_OFFSET)

#define RockM_write_golden(this_board,short_data) 			\
	myVme_D16WRITE(this_board,ROCKM_GOLDEN_OFFSET,short_data)

#define RockM_read_wordcnt(this_board) 			\
	myVme_D16READ(this_board,ROCKM_WORDCNT_OFFSET)

#define RockM_read_info(this_board) 			\
	myVme_D16READ(this_board,ROCKM_INFOHUB_OFFSET)


/*  For this operation hubmode must be set to 0 */ 

#define RockM_read_infohub(this_board) 			\
	myVme_D16READ(this_board,ROCKM_INFOHUB_OFFSET)


/*  For this operation hubmode must be set to 1 */ 

#define RockM_read_infomicro(this_board) 			\
	myVme_D16READ(this_board,ROCKM_INFOMICRO_OFFSET)


#define RockM_read_microstat(this_board) 			\
	myVme_D16READ(this_board,ROCKM_MICROSTAT_OFFSET)

#define RockM_read_microword(this_board) 			\
	myVme_D16READ(this_board,ROCKM_MICROWORD_OFFSET)

#define RockM_write_microword(this_board,short_data) 		\
	myVme_D16WRITE(this_board,ROCKM_MICROWORD_OFFSET,short_data)


#endif