ROOT logo
#ifndef __TMrbCamacRegister_h__
#define __TMrbCamacRegister_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           expconf/inc/TMrbCamacRegister.h
// Purpose:        Define experimental configuration for MARaBOU
// Class:          TMrbModuleRegister   -- base class to describe a set of camac registers
// Description:    Class definitions to implement a configuration front-end for MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbCamacRegister.h,v 1.6 2005-09-09 06:59:13 Rudolf.Lutter Exp $       
// Date:           
// Keywords:
//////////////////////////////////////////////////////////////////////////////

namespace std {} using namespace std;

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>

#include "Rtypes.h"
#include "TSystem.h"

#include "TMrbModuleRegister.h"
#include "TMrbCamacModule.h"
#include "TMrbCNAF.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCamacRegister
// Purpose:        Define methods for camac registers
// Description:    Describes a camac register.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbCamacRegister : public TMrbModuleRegister {

	public:
		enum EMrbRegCnafBits	{	kRegGetCnaf 	=	BIT(0),
									kRegClearCnaf	=	BIT(1),
									kRegSetCnaf 	=	BIT(2)
								};

	public:

		TMrbCamacRegister() {};										// default ctor

		TMrbCamacRegister(TMrbCamacModule * Module, Int_t NofChannels, TMrbNamedX * RegDef,
												const Char_t * CnafSet = NULL,
												const Char_t * CnafClear = NULL,
												const Char_t * CnafGet = NULL,
												Int_t InitValue = 0, Int_t LowerLimit = 0, Int_t UpperLimit = -1,
												TMrbLofNamedX * BitNames = NULL, Bool_t PatternMode = kFALSE);

		~TMrbCamacRegister() {};									// default dtor
	
		inline Bool_t HasCnafs() const { return(fHasCnafs != 0); };		// test if cnafs present
		inline Bool_t HasGetCnaf() const { return((fHasCnafs & TMrbCamacRegister::kRegGetCnaf) != 0); };
		inline Bool_t HasClearCnaf() const { return((fHasCnafs & TMrbCamacRegister::kRegClearCnaf) != 0); };
		inline Bool_t HasSetCnaf() const { return((fHasCnafs & TMrbCamacRegister::kRegSetCnaf) != 0); };

		inline TMrbCNAF * CnafSet() { return(&fCnafSet); };
		inline TMrbCNAF * CnafClear() { return(&fCnafClear); };
		inline TMrbCNAF * CnafGet() { return(&fCnafGet); };
		
		inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };

	protected:
		UInt_t fHasCnafs;							// any cnafs given?
		TMrbCNAF fCnafSet;							// cnaf to set bits
		TMrbCNAF fCnafClear;						// cnaf to clear bits
		TMrbCNAF fCnafGet;							// cnaf to get contents

	ClassDef(TMrbCamacRegister, 1)		// [Config] Base class describing a internal register of a CAMAC module
};	

#endif
 TMrbCamacRegister.h:1
 TMrbCamacRegister.h:2
 TMrbCamacRegister.h:3
 TMrbCamacRegister.h:4
 TMrbCamacRegister.h:5
 TMrbCamacRegister.h:6
 TMrbCamacRegister.h:7
 TMrbCamacRegister.h:8
 TMrbCamacRegister.h:9
 TMrbCamacRegister.h:10
 TMrbCamacRegister.h:11
 TMrbCamacRegister.h:12
 TMrbCamacRegister.h:13
 TMrbCamacRegister.h:14
 TMrbCamacRegister.h:15
 TMrbCamacRegister.h:16
 TMrbCamacRegister.h:17
 TMrbCamacRegister.h:18
 TMrbCamacRegister.h:19
 TMrbCamacRegister.h:20
 TMrbCamacRegister.h:21
 TMrbCamacRegister.h:22
 TMrbCamacRegister.h:23
 TMrbCamacRegister.h:24
 TMrbCamacRegister.h:25
 TMrbCamacRegister.h:26
 TMrbCamacRegister.h:27
 TMrbCamacRegister.h:28
 TMrbCamacRegister.h:29
 TMrbCamacRegister.h:30
 TMrbCamacRegister.h:31
 TMrbCamacRegister.h:32
 TMrbCamacRegister.h:33
 TMrbCamacRegister.h:34
 TMrbCamacRegister.h:35
 TMrbCamacRegister.h:36
 TMrbCamacRegister.h:37
 TMrbCamacRegister.h:38
 TMrbCamacRegister.h:39
 TMrbCamacRegister.h:40
 TMrbCamacRegister.h:41
 TMrbCamacRegister.h:42
 TMrbCamacRegister.h:43
 TMrbCamacRegister.h:44
 TMrbCamacRegister.h:45
 TMrbCamacRegister.h:46
 TMrbCamacRegister.h:47
 TMrbCamacRegister.h:48
 TMrbCamacRegister.h:49
 TMrbCamacRegister.h:50
 TMrbCamacRegister.h:51
 TMrbCamacRegister.h:52
 TMrbCamacRegister.h:53
 TMrbCamacRegister.h:54
 TMrbCamacRegister.h:55
 TMrbCamacRegister.h:56
 TMrbCamacRegister.h:57
 TMrbCamacRegister.h:58
 TMrbCamacRegister.h:59
 TMrbCamacRegister.h:60
 TMrbCamacRegister.h:61
 TMrbCamacRegister.h:62
 TMrbCamacRegister.h:63
 TMrbCamacRegister.h:64
 TMrbCamacRegister.h:65
 TMrbCamacRegister.h:66
 TMrbCamacRegister.h:67
 TMrbCamacRegister.h:68
 TMrbCamacRegister.h:69
 TMrbCamacRegister.h:70
 TMrbCamacRegister.h:71
 TMrbCamacRegister.h:72
 TMrbCamacRegister.h:73
 TMrbCamacRegister.h:74
 TMrbCamacRegister.h:75
 TMrbCamacRegister.h:76
 TMrbCamacRegister.h:77
 TMrbCamacRegister.h:78
 TMrbCamacRegister.h:79
 TMrbCamacRegister.h:80